From 3fc8f70a7fb89ec7439e2475d11ac1214b6895da Mon Sep 17 00:00:00 2001 From: Ranz <9975316+raniceyue@users.noreply.github.com> Date: Mon, 17 Feb 2020 15:22:00 +0800 Subject: [PATCH 001/252] Remove Codacy Badge --- README.adoc | 1 - 1 file changed, 1 deletion(-) diff --git a/README.adoc b/README.adoc index e36efe534bb..f56d18696cc 100644 --- a/README.adoc +++ b/README.adoc @@ -4,7 +4,6 @@ ifdef::env-github,env-browser[:relfileprefix: docs/] https://travis-ci.org/se-edu/addressbook-level3[image:https://travis-ci.org/se-edu/addressbook-level3.svg?branch=master[Build Status]] https://ci.appveyor.com/project/damithc/addressbook-level3[image:https://ci.appveyor.com/api/projects/status/3boko2x2vr5cc3w2?svg=true[Build status]] https://coveralls.io/github/se-edu/addressbook-level3?branch=master[image:https://coveralls.io/repos/github/se-edu/addressbook-level3/badge.svg?branch=master[Coverage Status]] -https://www.codacy.com/app/damith/addressbook-level3?utm_source=github.com&utm_medium=referral&utm_content=se-edu/addressbook-level3&utm_campaign=Badge_Grade[image:https://api.codacy.com/project/badge/Grade/fc0b7775cf7f4fdeaf08776f3d8e364a[Codacy Badge]] ifdef::env-github[] From 9bf534064b43cb5e4de5cc518ce8b97776ac4e9b Mon Sep 17 00:00:00 2001 From: Ranice Date: Mon, 17 Feb 2020 15:46:58 +0800 Subject: [PATCH 002/252] Test --- README.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.adoc b/README.adoc index f56d18696cc..72fb5179125 100644 --- a/README.adoc +++ b/README.adoc @@ -18,7 +18,7 @@ endif::[] * It is a Java sample application intended for students learning Software Engineering while using Java as the main programming language. * It is *written in OOP fashion*. It provides a *reasonably well-written* code example that is *significantly bigger* (around 6 KLoC)than what students usually write in beginner-level SE modules. -== Site Map +== Site Map TEST * <> * <> From 22dd4b3c7d0996afd6ccd2d0a73dcf5e347b6523 Mon Sep 17 00:00:00 2001 From: ranicewin Date: Mon, 24 Feb 2020 22:21:49 +0800 Subject: [PATCH 003/252] Update README.adoc --- README.adoc | 14 +++++--------- docs/images/Ui.png | Bin 14607 -> 85955 bytes 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/README.adoc b/README.adoc index f56d18696cc..e8c40773c64 100644 --- a/README.adoc +++ b/README.adoc @@ -1,9 +1,7 @@ -= Address Book (Level 3) += Volant ifdef::env-github,env-browser[:relfileprefix: docs/] -https://travis-ci.org/se-edu/addressbook-level3[image:https://travis-ci.org/se-edu/addressbook-level3.svg?branch=master[Build Status]] -https://ci.appveyor.com/project/damithc/addressbook-level3[image:https://ci.appveyor.com/api/projects/status/3boko2x2vr5cc3w2?svg=true[Build status]] -https://coveralls.io/github/se-edu/addressbook-level3?branch=master[image:https://coveralls.io/repos/github/se-edu/addressbook-level3/badge.svg?branch=master[Coverage Status]] +https://travis-ci.org/se-edu/addressbook-level3[image:https://travis-ci.org/AY1920S2-CS2103T-F09-4/main.svg?branch=master[Build Status]] ifdef::env-github[] @@ -14,9 +12,8 @@ ifndef::env-github[] image::images/Ui.png[width="600"] endif::[] -* This is a desktop Address Book application. It has a GUI but most of the user interactions happen using a CLI (Command Line Interface). -* It is a Java sample application intended for students learning Software Engineering while using Java as the main programming language. -* It is *written in OOP fashion*. It provides a *reasonably well-written* code example that is *significantly bigger* (around 6 KLoC)than what students usually write in beginner-level SE modules. +* This is a simple travel planning application to assist beginner solo travellers on their travels. It has a GUI but most of the user interactions happen using a CLI (Command Line Interface). +* It is written in Java 11 using object oriented programming. == Site Map @@ -28,8 +25,7 @@ endif::[] == Acknowledgements -* Some parts of this sample application were inspired by the excellent http://code.makery.ch/library/javafx-8-tutorial/[Java FX tutorial] by -_Marco Jakob_. +* This application's base code is based off the Address Book application developed by the CS2103T team for the CS2103T software engineering module. * Libraries used: https://openjfx.io/[JavaFX], https://github.com/FasterXML/jackson[Jackson], https://github.com/junit-team/junit5[JUnit5] == Licence : link:LICENSE[MIT] diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5bd77847aa2429edac366ebe3e00650b6dd909d8..62fb26fed478e6a61ca36b26ee09e4f0fbbfa0a9 100644 GIT binary patch literal 85955 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 G5&sL5bS_~4 literal 14607 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 RAXge19gVx{rMDi1{6Bg4z)AoB From 8614f178b94deee649e0992d4f1a0d3e8729c02e Mon Sep 17 00:00:00 2001 From: vuhieunguyen <59970492+vuhieunguyen@users.noreply.github.com> Date: Mon, 24 Feb 2020 22:30:24 +0800 Subject: [PATCH 004/252] Update links and email --- docs/ContactUs.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ContactUs.adoc b/docs/ContactUs.adoc index 81be279ef6d..fae55cc86d8 100644 --- a/docs/ContactUs.adoc +++ b/docs/ContactUs.adoc @@ -1,7 +1,7 @@ = Contact Us :site-section: ContactUs :stylesDir: stylesheets - -* *Bug reports, Suggestions* : Post in our https://github.com/se-edu/addressbook-level3/issues[issue tracker] if you noticed bugs or have suggestions on how to improve. + +* *Bug reports, Suggestions* : Post in our https://github.com/AY1920S2-CS2103T-F09-4/main/issues[issue tracker] if you noticed bugs or have suggestions on how to improve. * *Contributing* : We welcome pull requests. Follow the process described https://github.com/oss-generic/process[here] -* *Email us* : You can also reach us at `damith [at] comp.nus.edu.sg` +* *Email us* : You can also reach us at `volant@gmail.com` From 46c89cc8c82585b5e0cf5b6f61cea0143a1bcbda Mon Sep 17 00:00:00 2001 From: zsoh97 <41435427+zsoh97@users.noreply.github.com> Date: Mon, 24 Feb 2020 23:37:09 +0800 Subject: [PATCH 005/252] Update UserGuide.adoc Initial change to Userguide --- docs/UserGuide.adoc | 316 +++++++++++++++++++++++++++++++------------- 1 file changed, 222 insertions(+), 94 deletions(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 4e5d297a19f..eb4738a8ede 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -1,4 +1,4 @@ -= AddressBook Level 3 - User Guide += Volant - User Guide :site-section: UserGuide :toc: :toc-title: @@ -12,32 +12,26 @@ ifdef::env-github[] :tip-caption: :bulb: :note-caption: :information_source: endif::[] -:repoURL: https://github.com/se-edu/addressbook-level3 +:repoURL: https://github.com/AY1920S2-CS2103T-F09-4/main -By: `Team SE-EDU` Since: `Jun 2016` Licence: `MIT` +By: `AY1920S2-2103T-F09-4` Since: `Jan 2020` Licence: `???` == Introduction -AddressBook Level 3 (AB3) is for those who *prefer to use a desktop app for managing contacts*. More importantly, AB3 is *optimized for those who prefer to work with 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. Interested? Jump to the <> to get started. Enjoy! +Volant is for those who *prefer to use a desktop app for managing people they meet during their solo travels*. More importantly, Volant is *optimized for those who prefer to work with 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. Interested? Jump to the <> to get started. Enjoy! == Quick Start . Ensure you have Java `11` or above installed in your Computer. -. Download the latest `addressbook.jar` link:{repoURL}/releases[here]. -. Copy the file to the folder you want to use as the home folder for your Address Book. -. Double-click the file to start the app. The GUI should appear in a few seconds. +. Download the latest `volant.jar` link:{https://github.com/AY1920S2-CS2103T-F09-4/main}/releases[v1.1]. +. Copy the file to the folder you want to use as the home folder for your Volant. +. Double-click the JAR file to start the app. +. The GUI should appear in a few seconds. + image::Ui.png[width="790"] + . Type the command in the command box and press kbd:[Enter] to execute it. + -e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. -. Some example commands you can try: - -* *`list`* : lists all contacts -* **`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. -* **`delete`**`3` : deletes the 3rd contact shown in the current list -* *`exit`* : exits the app - +e.g. Typing *`help`* and pressing kbd:[Enter] will open the help window. . Refer to <> for details of each command. [[Features]] @@ -47,115 +41,252 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. *Command Format* * Words in `UPPER_CASE` are the parameters to be supplied by the user e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. -* Items in square brackets are optional e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. -* Items with `…`​ after them can be used multiple times including zero times e.g. `[t/TAG]...` can be used as `{nbsp}` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. -* Parameters can be in any order e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. +* Items in square brackets are optional e.g `n/NAME [a/AGE]` can be used as `n/John Doe a/26` or as `n/John Doe`. +* Items with `…`​ after them can be used multiple times including zero times e.g. `[a/AGE]...` can be used as `{nbsp}` (i.e. 0 times), `a/AGE`, `a/AGE p/PHONE_NUMBER` etc. ==== -=== Viewing help : `help` +=== Homepage `[coming in v2.0]` + +==== Opening the help window: `help` +Opens the Help Window. Format: `help` -=== Adding a person: `add` +==== Opening the homepage: `home` +Returns to the homepage. If already at the homepage, does nothing. + +Format: `home` + +==== Navigating to a trip page: `gotoTrip` +Navigates to the context of a trip in the trip list. + +Format: `gotoTrip INDEX` + +* Index must be a positive integer within range of the list size. + +Example: + +* `gotoTrip 12` + +Navigates to the 12th trip on the list of trips. + + +=== Trips `[coming in v2.0]` + +All trips are listed on the home page. + +==== Adding a trip: `add` +Adds a trip to the trip list. + +Format: `add n/TRIP_NAME from/TRIP_START_DATE to/TRIP_END_DATE l/LOCATION` + +* Please write the date range in the format `from/DD-MM-YYYY` `to/DD-MM-YYYY`. + +Examples: + +* `add n/Graduation Trip from/01-02-2020 to/05-02-2020 l/Bangkok` + +Adds a trip titled “Graduation Trip” to the list with the specified metadata. +* `add n/Family Trip from/05-02-2020 to/08-02-2020 l/Bangkok` + +Adds a trip titled “Family Trip” to the list with the specified metadata. + +==== Deleting a trip: `delete` +Deletes a trip from the trip list. + +Format: `delete INDEX` + +* Index must be a positive integer within range of the list size. + +Example: + +* `delete 12` + +Deletes the 12th trip on the list of trips. + +==== Editing trip metadata: `edit` +Edits item in the trip list at the specified index. + +Format: `edit INDEX [n/TRIP_NAME] [from/TRIP_START_DATE] [to/TRIP_END_DATE] [l/LOCATION]...` + +* Index must be a positive integer within range of the list size. +* Please write the date range in the format from/DD-MM-YYYY to/DD-MM-YYYY. + +Example: + +* `edit 2 n/School Trip l/France` + +Edits the second trip on the list with “School Trip” as name and “France” as location. +* `edit 1 from/01-02-2020 to/ 01-03-2020` + +Edits the first trip on the list with date range of 1 February to 1 March 2020. + +==== 3.2.4 Navigating to a feature in the trip page: `goto` +Navigates to a specific feature within each trip. + +Format: `goto FEATURE` + +* List of available features: +** ITINERARY +** JOURNAL +** EXPENSES +** PACKINGLIST +** CONTACTS + + +Example: -Adds a person to the address book + -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...` +* `goto ITINERARY` + +Navigates to the itinerary feature of the current trip. -[TIP] -A person can have any number of tags (including 0) +=== Itinerary `[coming in v2.0]` -Examples: +==== Adding an activity to the itinerary: `add` +Adds an activity to the itinerary. -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` +Format: `add a/ACTIVITY d/DATE t/TIME l/LOCATION` -=== Listing all persons : `list` +* Date must be specified in the following format: DD-MM-YYYY +* Time must be specified in the following format: HH:MM -Shows a list of all persons in the address book. + -Format: `list` +Example: -=== Editing a person : `edit` +* `add a/Sightseeing d/12-10-2020 t/13:45 l/Mount Everest` +Adds Sightseeing at Mount Everest at 12 OCT 2020 13:45 to the itinerary -Edits an existing person in the address book. + -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...` +==== Deleting an activity in the itinerary: `delete` +Deletes the specified activity in the itinerary. -**** -* 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, ... +Format: `delete INDEX` + +* Deletes the activity at the specified INDEX. +* The index refers to the index number shown in the displayed itinerary. +* The index must be a positive integer 1, 2, 3, … + +Example: + +* `delete 5` + +Deletes the 5th activity in the itinerary. + +==== Displaying next activity: `next` +Displays the next activity in the itinerary. + +Format: `next` + +==== Editing the itinerary: `edit` +Edits an existing itinerary. + +Format: `edit INDEX [a/ACTIVITY] [d/DATE] [t/TIME] [l/LOCATION]` + +* Edits the activity at the specified INDEX. The index refers to the index number shown in the displayed itinerary list. The index must * be a positive integer 1, 2, 3, …​ * At least one of the optional fields must be provided. * Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person's tags by typing `t/` without specifying any tags after it. -**** +* Date must be specified in the following format: DD-MM-YYYY +* Time must be specified in the following format: HH:MM + +==== Locating an activity by any field: `find` +Searches the itinerary for any activity that matches the input field. + +Format: `find FIELD [a/ACTIVITY] [d/DATE] [t/TIME] [l/LOCATION]` + +Date must be specified in the following format: DD-MM-YYYY +Time must be specified in the following format: HH:MM + +Example: + +* `find Itinerary a/Climbing` + +Returns all activities related to climbing. + +=== Journal `[coming in v2.0]` + +==== Adding a journal entry: `add` +Adds a journal entry to the entry list. + +Format: `add [c/CONTENT] [img/FILE_DIRECTORY] d/DATE t/TIME [l/LOCATION] [f/FEELING] [w/WEATHER]` -Examples: +* Date must be specified in the following format: DD-MM-YYYY +* Time must be specified in the following format: HH:MM +* CONTENT is limited to 280 characters +* Available FEELING types: +** happy -* `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. -* `edit 2 n/Betsy Crower t/` + -Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +Example: -=== Locating persons by name: `find` +* `add c/Lorem ipsum dolor sit amet, consectetur adipiscing elit d/12-09-2021 t/12:51 l/New York f/confused` + +Adds a new journal entry to the entry list with the specified content, date, time, location and feeling fields. -Finds persons whose names contain any of the given keywords. + -Format: `find KEYWORD [MORE_KEYWORDS]` +==== Sorting a list of current journal entries: `sort` +Sorts the list of current journal entry lists in a specified order. -**** -* The search is case insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` -**** +Format: `sort [SORT_TYPE]` +* Available SORT_TYPE: +** Old to new - old (default if SORT_TYPE is left empty) +** New to old - new +** Location - location +** Feeling - feeling +* Default sorting of journal entries is in order of old to new -Examples: -* `find John` + -Returns `john` and `John Doe` -* `find Betsy Tim John` + -Returns any person having names `Betsy`, `Tim`, or `John` +Example: -// tag::delete[] -=== Deleting a person : `delete` +* `sort location` + +Sorts the list of journal entries sorted by locations. + +==== Deleting a journal entry: `delete` +Deletes an entire journal entry or a specific metadata within a journal entry based on the chosen index number. + +Format: `delete INDEX` + +==== Editing a journal entry: `edit` +Edits specific metadata within a chosen journal entry using index number. + +Format: `edit INDEX [c/NEW_CONTENT] [img/NEW_FILE_DIRECTORY] [d/NEW_DATE] [t/NEW_TIME] [l/NEW_LOCATION] [f/NEW_FEELING] [w/NEW_WEATHER]` + +Example: + +* `edit 4 d/21-12-2012 f/Scared` + +Changes date and feeling of fourth journal entry to “21-12-2012” and “scared” respectively + +=== Contact List `[coming in v2.0]` + +==== Adding a contact: `add` +Adds a contact to the contact list. + +Format: `add n/NAME [p/PHONE_NUMBER] [a/AGE] m/MET_IN h/HOW_YOU_MET [p/PERSONALITY] [f/FAVOURITE]` + +Example: + +* `addContact n/John Doe p/987654321 a/23 m/In Berlin h/Asked him to take a picture of me at Brandenburg Gate p/Cheerful f/no` + +==== Deleting a contact: `delete` +Deletes the specified contact in the contact list. -Deletes the specified person from the address book. + Format: `delete INDEX` -**** -* Deletes the person at the specified `INDEX`. +* Deletes 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, ... -**** +* The index must be a positive integer 1, 2, 3, … + +Example: -Examples: +* `delete 2` + +Deletes the 2nd person in the contact list. -* `list` + -`delete 2` + -Deletes the 2nd person in the address book. -* `find Betsy` + -`delete 1` + -Deletes the 1st person in the results of the `find` command. +==== Editing a contact: `edit` +Edits an existing person in the contact list. -// end::delete[] -=== Clearing all entries : `clear` +Format: `edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/AGE] [m/MET_IN] [h/HOW_YOU_MET] [p/PERSONALITY] [f/FAVOURITE]` -Clears all entries from the address book. + -Format: `clear` +* Edits the contact 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, …​ +* At least one of the optional fields must be provided. +* Existing values will be updated to the input values. -=== Exiting the program : `exit` -Exits the program. + -Format: `exit` +==== Locating a contact by any field: `find` +Searches the contact list for any contact that matches the input field. -=== Saving the data +Format: `find FIELD [n/NAME]/ [p/PHONE_NUMBER]/ [a/AGE]/ [m/MET_IN] [h/HOW_YOU_MET]/ [p/PERSONALITY]/ [f/FAVOURITE]` -Address book data are saved in the hard disk automatically after any command that changes the data. + -There is no need to save manually. +* The search is case insensitive. e.g hans will match Hans -// tag::dataencryption[] -=== Encrypting data files `[coming in v2.0]` +Example: -_{explain how the user can enable/disable data encryption}_ -// end::dataencryption[] +* `findContact n/John` + +Returns the contact information on John Doe and John Wick == FAQ @@ -164,14 +295,11 @@ _{explain how the user can enable/disable data encryption}_ == Command Summary -* *Add* `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...` + -e.g. `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -* *Clear* : `clear` +* *Add* `add n/NAME p/PHONE_NUMBER` + +e.g. `add n/James Ho p/22224444` * *Delete* : `delete INDEX` + e.g. `delete 3` -* *Edit* : `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]...` + -e.g. `edit 2 n/James Lee e/jameslee@example.com` -* *Find* : `find KEYWORD [MORE_KEYWORDS]` + +* *Edit* : `edit INDEX [n/NAME] [p/PHONE_NUMBER] ` + +e.g. `edit 2 n/James Lee` +* *Find* : `find KEYWORD [n/NAME]` + e.g. `find James Jake` -* *List* : `list` -* *Help* : `help` From 3cdf9c8d430cd9e391aad6cb07f6b5f8ba693fcb Mon Sep 17 00:00:00 2001 From: zsoh97 <41435427+zsoh97@users.noreply.github.com> Date: Mon, 24 Feb 2020 23:54:10 +0800 Subject: [PATCH 006/252] Update UserGuide.adoc Made changes to UserGuide, markdown(ed) certain descriptions --- docs/UserGuide.adoc | 59 +++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index eb4738a8ede..a5ba357cc6c 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -62,7 +62,7 @@ Navigates to the context of a trip in the trip list. Format: `gotoTrip INDEX` -* Index must be a positive integer within range of the list size. +* `INDEX` must be a positive integer within range of the list size. Example: @@ -93,7 +93,7 @@ Deletes a trip from the trip list. Format: `delete INDEX` -* Index must be a positive integer within range of the list size. +* INDEX must be a positive integer within range of the list size. Example: @@ -105,8 +105,8 @@ Edits item in the trip list at the specified index. Format: `edit INDEX [n/TRIP_NAME] [from/TRIP_START_DATE] [to/TRIP_END_DATE] [l/LOCATION]...` -* Index must be a positive integer within range of the list size. -* Please write the date range in the format from/DD-MM-YYYY to/DD-MM-YYYY. +* `INDEX` must be a positive integer within range of the list size. +* Please write the date range in the format `from/DD-MM-YYYY` `to/DD-MM-YYYY`. Example: @@ -115,17 +115,17 @@ Edits the second trip on the list with “School Trip” as name and “France * `edit 1 from/01-02-2020 to/ 01-03-2020` + Edits the first trip on the list with date range of 1 February to 1 March 2020. -==== 3.2.4 Navigating to a feature in the trip page: `goto` +==== Navigating to a feature in the trip page: `goto` Navigates to a specific feature within each trip. Format: `goto FEATURE` * List of available features: -** ITINERARY -** JOURNAL -** EXPENSES -** PACKINGLIST -** CONTACTS +** `ITINERARY` +** `JOURNAL` +** `EXPENSES` +** `PACKINGLIST` +** `CONTACTS` Example: @@ -140,8 +140,8 @@ Adds an activity to the itinerary. Format: `add a/ACTIVITY d/DATE t/TIME l/LOCATION` -* Date must be specified in the following format: DD-MM-YYYY -* Time must be specified in the following format: HH:MM +* Date must be specified in the following format: `DD-MM-YYYY` +* Time must be specified in the following format: `HH:MM` Example: @@ -153,7 +153,7 @@ Deletes the specified activity in the itinerary. Format: `delete INDEX` -* Deletes the activity at the specified INDEX. +* Deletes the activity at the specified `INDEX`. * The index refers to the index number shown in the displayed itinerary. * The index must be a positive integer 1, 2, 3, … @@ -172,19 +172,19 @@ Edits an existing itinerary. Format: `edit INDEX [a/ACTIVITY] [d/DATE] [t/TIME] [l/LOCATION]` -* Edits the activity at the specified INDEX. The index refers to the index number shown in the displayed itinerary list. The index must * be a positive integer 1, 2, 3, …​ +* Edits the activity at the specified `INDEX`. The index refers to the index number shown in the displayed itinerary list. The index must * be a positive integer 1, 2, 3, …​ * At least one of the optional fields must be provided. * Existing values will be updated to the input values. -* Date must be specified in the following format: DD-MM-YYYY -* Time must be specified in the following format: HH:MM +* Date must be specified in the following format: `DD-MM-YYYY` +* Time must be specified in the following format: `HH:MM` ==== Locating an activity by any field: `find` Searches the itinerary for any activity that matches the input field. Format: `find FIELD [a/ACTIVITY] [d/DATE] [t/TIME] [l/LOCATION]` -Date must be specified in the following format: DD-MM-YYYY -Time must be specified in the following format: HH:MM +Date must be specified in the following format: `DD-MM-YYYY` +Time must be specified in the following format: `HH:MM` Example: @@ -198,11 +198,18 @@ Adds a journal entry to the entry list. Format: `add [c/CONTENT] [img/FILE_DIRECTORY] d/DATE t/TIME [l/LOCATION] [f/FEELING] [w/WEATHER]` -* Date must be specified in the following format: DD-MM-YYYY -* Time must be specified in the following format: HH:MM +* Date must be specified in the following format: `DD-MM-YYYY` +* Time must be specified in the following format: `HH:MM` * CONTENT is limited to 280 characters -* Available FEELING types: +* Available `FEELING` types: ** happy +** sad +** excited +** worried +** scared +** surprised +** confused + Example: @@ -213,7 +220,7 @@ Adds a new journal entry to the entry list with the specified content, date, tim Sorts the list of current journal entry lists in a specified order. Format: `sort [SORT_TYPE]` -* Available SORT_TYPE: +* Available `SORT_TYPE`: ** Old to new - old (default if SORT_TYPE is left empty) ** New to old - new ** Location - location @@ -246,7 +253,7 @@ Changes date and feeling of fourth journal entry to “21-12-2012” and “scar ==== Adding a contact: `add` Adds a contact to the contact list. -Format: `add n/NAME [p/PHONE_NUMBER] [a/AGE] m/MET_IN h/HOW_YOU_MET [p/PERSONALITY] [f/FAVOURITE]` +Format: `add n/NAME [p/PHONE_NUMBER] [a/AGE] l/:LOCATION [h/HOW_YOU_MET] [f/FAVOURITE]` Example: @@ -257,7 +264,7 @@ Deletes the specified contact in the contact list. Format: `delete INDEX` -* Deletes the person at the specified INDEX. +* Deletes 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, … @@ -269,7 +276,7 @@ Deletes the 2nd person in the contact list. ==== Editing a contact: `edit` Edits an existing person in the contact list. -Format: `edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/AGE] [m/MET_IN] [h/HOW_YOU_MET] [p/PERSONALITY] [f/FAVOURITE]` +Format: `edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/AGE] [l/LOCATION] [h/HOW_YOU_MET] [f/FAVOURITE]` * Edits the contact 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, …​ * At least one of the optional fields must be provided. @@ -279,7 +286,7 @@ Format: `edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/AGE] [m/MET_IN] [h/HOW_YOU_MET] ==== Locating a contact by any field: `find` Searches the contact list for any contact that matches the input field. -Format: `find FIELD [n/NAME]/ [p/PHONE_NUMBER]/ [a/AGE]/ [m/MET_IN] [h/HOW_YOU_MET]/ [p/PERSONALITY]/ [f/FAVOURITE]` +Format: `find FIELD [n/NAME] [p/PHONE_NUMBER] [a/AGE]/ [l/LOCATION] [h/HOW_YOU_MET] [f/FAVOURITE]` * The search is case insensitive. e.g hans will match Hans From 317dc5545571d13aa9d1ce96dc22ab88ee36c865 Mon Sep 17 00:00:00 2001 From: ranicewin Date: Mon, 24 Feb 2020 23:56:53 +0800 Subject: [PATCH 007/252] Update AboutUs.adoc Update names and roles Add team photos Add members' photos to AboutUs.adoc --- docs/AboutUs.adoc | 50 ++++++++++++++++++----------------- docs/images/grrrrnt.png | Bin 0 -> 121993 bytes docs/images/mikhailfaiz.png | Bin 0 -> 289201 bytes docs/images/raniceyue.png | Bin 0 -> 501403 bytes docs/images/vuhieunguyen.png | Bin 0 -> 23428 bytes docs/images/zsoh97.png | Bin 0 -> 112018 bytes 6 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 docs/images/grrrrnt.png create mode 100644 docs/images/mikhailfaiz.png create mode 100644 docs/images/raniceyue.png create mode 100644 docs/images/vuhieunguyen.png create mode 100644 docs/images/zsoh97.png diff --git a/docs/AboutUs.adoc b/docs/AboutUs.adoc index 458e6134f45..8965f981936 100644 --- a/docs/AboutUs.adoc +++ b/docs/AboutUs.adoc @@ -4,53 +4,55 @@ :imagesDir: images :stylesDir: stylesheets -AddressBook - Level 3 was developed by the https://se-edu.github.io/docs/Team.html[se-edu] team. + -_{The dummy content given below serves as a placeholder to be used by future forks of the project.}_ + -{empty} + +Volant was developed by us. + + We are a team based in the http://www.comp.nus.edu.sg[School of Computing, National University of Singapore]. +Learn more about us below. + == Project Team -=== John Doe -image::damithc.jpg[width="150", align="left"] -{empty}[http://www.comp.nus.edu.sg/~damithch[homepage]] [https://github.com/damithc[github]] [<>] +=== Ranice Tan +image::raniceyue.png[width="150", align="left"] +{empty}[https://github.com/raniceyue[github]] [<>] -Role: Project Advisor +Role: Team Lead + +Responsibilities: ''' -=== John Roe -image::lejolly.jpg[width="150", align="left"] -{empty}[http://github.com/lejolly[github]] [<>] +=== Grant Lee +image::grrrrnt.png[width="200", align="left"] +{empty}[https://github.com/grrrrnt[github]] [<>] -Role: Team Lead + -Responsibilities: UI +Role: Developer + +Responsibilities: ''' -=== Johnny Doe -image::yijinl.jpg[width="150", align="left"] -{empty}[http://github.com/yijinl[github]] [<>] +=== Zeke Soh +image::zsoh97.png[width="200", align="left"] +{empty}[https://github.com/zsoh97[github]] [<>] Role: Developer + -Responsibilities: Data +Responsibilities: ''' -=== Johnny Roe -image::m133225.jpg[width="150", align="left"] -{empty}[http://github.com/m133225[github]] [<>] +=== Vu Hieu Nguyen +image::vuhieunguyen.png[width="200", align="left"] +{empty}[https://github.com/vuhieunguyen[github]] [<>] Role: Developer + -Responsibilities: Dev Ops + Threading +Responsibilities: ''' -=== Benson Meier -image::yl_coder.jpg[width="150", align="left"] -{empty}[http://github.com/yl-coder[github]] [<>] +=== Mikhail Faiz +image::mikhailfaiz.png[width="200", align="left"] +{empty}[https://github.com/mikhailfaiz[github]] [<>] Role: Developer + -Responsibilities: UI +Responsibilities: ''' diff --git a/docs/images/grrrrnt.png b/docs/images/grrrrnt.png new file mode 100644 index 0000000000000000000000000000000000000000..30d00c797a3f30e1c57da6614c0ce55c531c92f7 GIT binary patch literal 121993 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

  • w_d)}Lm+XoBd4CP)4d z4@$YH+(#wFq%Cp2&LtAN4zApBU!-L+X>zmjejti+Qi;`Q8MlDlPxIZ+^K<+vdJ5>R z?jX|bOs?NEb*?{8)+2@ybwAA{hxbtq!?zW`rlgk=EcauB%EW)dzL@x}S z&Jf7q7bmaMxhuCAwvPNPV>u|Z>32cB}sY3cf8r zhxFUnFZBkwx>XAVGB)pA^Z8flw~kxGemv6eyg91LZvJdrTX0>J z2O0J?>e^1FZKy%!Ln=&%p+lPd>eMZRNfIkFG5Nk+=kpcNcvr>#Bk-Ki%W0}j3_U=s%YX$U1vfJIypRV*?#)&2(Rkc6xo)hMTL-u-;1oIhDp0 zi5>kb(yeufF0n4Fr-LUk563_mTCuY;8KRPA^j{QdwiOpJ*eDXBEh4Fg3oL zBbLK&Z`QkMwrUo)KsM9V3d)a9-J}-Tw~Wt5)n(@OZ9>#O0KY`)4IjHCtA( zk5Ey$cQ!FihUr%st4lIAao@dejG5>6_OGU2f;dm-TY77))GEu@y-VU-G@99%edRrC zJHpIFWl7v~T(u7BZ%Z0eF5Z<=NxorQ4Qd-1=xa9W*KC9e=DWGNwZ@^yr9G+8$J-S< zTaCW;q*0ujLn39)af;})8<3?{`V)_(bB*#0cd6{|nPfmRITg~jIppqoM~So#_)a_v zeP|J0<`v%tdl8e@(!N`~g{|%+iQ_T4oS59YhK)yX9JPiuyrXs#_N+`Gg`B&Bkb_lbw(+p zD(EOu2mn?*?5ogmTUS`w&0}7uDlx@*lic?yyCXVjM;uj4pcwI18a}+$c^89R*5%OO zR*cE5$6RDpZzyxdD@x)b(GU(Q1+gr7YOC}!<y6-6?y+w2T&yD@ zd(vq-XeA878b_E^2=W?3-LvRxoA8&P4x2T@F4#%h-#$R}{7o&LxSHG*!)+ktyVpyjL%Pjg z6!}a1-!4=d^|29*DcK{y!pe0jb6nr>&D45*l9+SOGOQ~8sc~gz7`mU#0l4{45zk(= znf;_R+gI6%*q^-1jC)rxs%sB<8?5X?Hy*>@zGK<*PgCsOZb&86pHS2+()lj5`I$olv7t20NYUq~C6!!ANQ7Axz|O6C_sTj*w%((B8aQ|__*-nguLi`&aN znONZGfrY7LR*gvq0|v0P-C1M=TscBH z&UveLdZC(ZM*Ekaym_gW8AV*yHKRR^yXK0{*`Ze|_y=!MT=li5nR4>FtfLqi>`y~o zO`L0YV*dbWKv~8&_a2pnac;V3K3?W-*%YZsMKn6e%Eb%sIyk~~MmQ>+>RW#eJ<{$? z%5jhw;;iYh$*El^m*om`z^z?hR{qUX6hIfpJXb^|XJd|}G`Y&hZ}w}Aw*)C(yVoQC z0If~c;<3Jv7nDVWKRjqo|czZ&a2 zPP1vEG2BR(3Vv@fa-?UsrF(zDy?V;e&eLX}GfN?8_K%c|SB=}-#|%llYoKP z6x20?aL}}i3gka!H5jRLEk}a9Wufj8MigZ8!0B06@v|{1ep=}~mHRm)V*{MmKYt?p z!Fr1M+v{X~TS=s2T);9(4x20-G-g|951zFSd(ImmoABA?)*x;#a*vUFM zm@8v(t(`kXWsl}XTw{aQt=?Q)X_0Pc0f%bkwT~Z1ZIbh(QJw*!Dsp-mUJ+jQheLZD z2-qqPD~$0*j~(MXCeRPPW?XphOPc4)7oKCDeqL%(tJ+>K$#AC!o+(N*PVE{(ROO;) zG5-Jvq|0zy?*Y=ZWAM$+&{jURwI%!!?b|e9kHa*J;yZZXY}YZNqB5UiA##NOEzWi_OdKsQH&)bU%XOLmTFMjIw_x7usl$mB2S zQ)#yE>M%N2Nj2r1%tW~7@T7-Lw`lVds0?`IR*}2tWu$bunYEHY4l82EdPt`jUi7nA zqV3})d(_MFw%lT{sE*oFM#Z5IgVLtEghvZXLC;_+t)67Ujb{6LD|4>8Er1kGeMcisq>n z(X~2?o6z(dZxF>Mhqg9+f%Bp;10BDua^KpP@ygdoxlx=eoREL5a#tF&BQ#Pz&<`Pf zDY7(84(NAzJ^I%wq0+~6u})TJr`h=S>c>ro>~OEzH-fUD!5RJ>^ym6lo%q*E{{V!O zR-0CdC4pja*H-e%x!s=Lql40@+G|tkVW)!Q%JQ(vdYtyfQMmD~&x$oimi9=NK^arE zIdjKcaoW2u^xP9?CMLR*Nc0Um;fy~NExyo@2r}X*w(*WRC-kox@jjENcuU21dM(f< zYk4-2>Z7JVTKhltX|eM>8x-<#{&Nw)_Qi3ZwU5JBwDA?EinRNE(ar)*(+a>2PuC~% zucFGaDNfQpM>@lMN_^aCOZ=6KXH#j2eomQR&NYoM{l#zx@{j&)HGRRyoC8u!b68s$i*o`+A9Pl?B6xd ztQYnVgI3ja%iTl9n!K*SHR8tmcN}yF^RA~@{{Vu0{5tVM+KpQ0SG*7ruuFHq{J#qM z>%#v4x0b8n`D4@X=KEu*z%IOs^$UO7VXm!2&$bbao-2(}r%m0&?e_JmD=8f$-|$Tz zgOe0#Ep;Yk9aitx{sL;!{{X=`eh$NL96#Cj+feQV-DKwn9TZm&H|@D)w11^WNk3Yt zC+)*vB-{4LcXZl%*8b8fWO92c%ULtkZvOyazl3^)!q0JKbu@~LAJ24800Gce#h>hr z@c#hAdMuXOY!`6GqbNSoTW|ZNtHvMp!Sf(V zoRyuLJ1NGk8#u_N@hib2z?#*?m8Y9EyGOVgIdSzP>s;QS<;|yvw)5XTtF6=iBVGJJ z@eJ2lkQMFDE?atK3=wBmg;PY<4u`c#|flqdME=#(Rq7^{qiy za0dWZ?}@cRrrNeh4BactHCK}lNS`N`VSe0^ZcF{y!K_=W;Ikdw zGfX!ajDXza^{mUgg^*(-Ba&;xk8|kn(ASaG;{(>RujBc+Y>Fek-Lz-htxC)0WvdBp zc1L3sqalt>LnLR`wk1^Qx0<&?EDL>- z@#5;X`fSnLOZIE1xnyoZQP>*MM^hQi@|pfJ@s+-d43S3OWzN%u&U2dZ9eJMXQfcRH z%`m|%+59U`OSx|^8cT+Dl$_@|&1UNhx)*Ni$o%Wt!@*NWfnKDlJxZE;5@zLwI63tEs&}u$Vcj=r zBk3cEg=nUk&xxf;08+?%ZKy7!d#K9pF`V}tn$?>~X|nji_vk7q^tj5H!!GXS59e1F zqoOdBTV@y7Zuf;|hs2Zf+$r zN(M@>z|AfFoSMD3VFIe4;{v>%Wql8B+G=w~6}5%tSKFVuG1j?_OYI(F$uCmfeMN5S z7gEN?5(0(e9cj1HK_;Ffb`nTA1$nO8Y~iUJoZPmmts~@ozcvZQ3uAn3R!FU+ktE9o zR4h2_&*M>C*qezrfrE^E+2*!kyqizcVTL0hkx9wVKzic4RFX=^p5eXB8_6CM3M^l~ zJe}Ne>MQ6EfxB(=dEt)@DI1B$Bi6i@JD8@me>&P2LR2HCl~n%a`#E+hTc z(-{K}2U^b6_eW|-!5~+H;mafGqbtQe=0&j!F(hSa+J?TGY)v2=Le(2vmu5SLDjj1@ zT}mB<6ZEdQ+mz&-Tb73d;=dMZI;GCrNZLkh?Z$CjRo}zE6L^l}&c2;sQ`SBGKMM9( zbkU|R)P;9{dv0@6M=)RE14h3(o)4&92shc$tD2=f8$j{H|V@pUS0Z5$0KEe|oi(C=<0AkQHy$RWDa zkobOiSLb#op~)ng?x9p!56ZuYspHzYB{TF|e_NfbRB)85Yvz3qK#YC{lF=OTDKGmYdPD;jd!qZzGd8p}{td{JbYLPNN@}6ru zOOsmB$_Q=RZ0pnyh=VD*7Yl^ zaJO4SgOb4Yu8P{|%`$x7H*r-XvPFy}VD9=;p|^W?B%C#JRF^Z*>7^Ic>$HU|+0RPX zXv8s@2^r*I{9#NByML@~b|SeHT(vvrB#~RhUN~8` zbkg*q&$xi{uRQt#SlWiYbLLBGbYU}hf~F83mcy> zC;?ZmHF1nuxgOESahkRCrcQ<=E0cr8RMF(a`OJAgagRW2T1_!-6eP>LJoUjCtn1`h zV*y*rDnJp6?2K0~$D3BH`MIKfYw&;Kw}<>2;TtOpyT)s#`P*znfK7U?sqqWJemwBq z#+P}h+s0&1lg>sc{TbDT!nuUNSJlu@$Lj;oVVGFWMwj1FDf;Q6G%8JA0ugn$EtA zc^^vZ^bd*JhVS_JkZ1eYAbu6}UdC2YN67tpoSm$7H(ndOjy>&tcn3Kuc&r^UW`|iQ zZZ4<5`?5Agbe2CA4-wtlMJkhm$}n5-r$5+kwSTrktcv)|Y19v;OHQ8WT{*(CvM^%s z?W7u`-dt^#exf|rIq^2%TWeX~!Mwdb7`(%RcYBKOFIw9BP?g$6wS^ahF#y*k@e9wr z&@L?W>*%fvsQFZmM{$}yEm9&<<#tT@*7L-gj9y;Z$&*hwYLwYE0NAjW-0DqLN)6*k{f zpwn-)-x26qkJ)A^Z>F)6smbk%=Jm}&`truW29by?-zhoAAN_jiv>y}8p+92lv>0ofMj3Y%d~gTOxMvr556~eZ^x1O z)|agm!vUkZU8H9`XTM7DYG7)`JrAeD<}|AA?9WI03KTgU)oCnOZaQYHM|hJ$8a56O z@d4J9&9~6E_j}i!D7ZUF_Nl&gc$9v`BT{-|sjNfJ4cfFM^Cdfv3+Yiw2#rev_*QLo zHPtgt-Ib#NElA3ndR7#7603Zzh4ib?O43F*99C@>q%FfFeZ^+#7hY6*kZ$@_n~2o+ z-T2j6Ez2j$G3(7W8<8n$a(a~47f$<`m3skMw$^U4WS_>md&@G1Cl!-%CpZJArD+`u zWbRL4o#~U&hAY%OC#WoH7X+H}>q(4#25Y+Tq=8g6?nvoY%wq1%FBo`$YFCejI|l<5 z$;ohB=AV6V(#ZU0(;k&giB%r7N~5aWnA8<0sG($-;PZ;kxSVZn#8ao7@(pEQU2SF= zt6LEC)RH|&MWCCYaK?myye zR5D*iSmD1)=RdWYLCWOQ1fFAa!9BNDkw#LUroHy76fy93H()8Y8j)|AhS6CPBCc{W zPvcLGw#GBStL1$WjHYzo+A-rLfCIj2JB>h?{{V7#6Vslx%So+Ur0EZu5%cTYzZKK? ze%?zv<0HbiHZowP$megU{!~UPZ3UJjiQZm%rVls>FJ@xTSaruv=oz2)vYZP zaScpU79K-Z0cWKp}`MaWkx7N5H_~pTyTE;5`Mjy+Y?uyxSR#Tge?sW8S*W z9j&yTL+w|SEU1|1JLfgiIu4@P;irpK-L88){{RZKnS3L4b!~3nZMTDP`MR8g(!BY6 z5_O3!Es+79?;%ui&UwN7tJHi6@q5E-4a_%J>j;@je)B3ZkJhuK*7Uf1Sz~)^aShFl zyDOh9`izgu72#CFRMn(?O&oO@INnDEt@s9i1IHQFVQ8Rih}^JcZ=tHznzoN)Zb_8M zBK^^hJ?qf^GWAsA^V@|D$k0hFy4KYeq~$|*sRULZREk@ z2EO+PO-7OVb~?NE&hF>XzXN_Je{NbPi>OG=eHKhiPu@|}HR`&B$DFw6G5XiUdM>Fx zm8eB?Z!U3%()pj_VuJ#_NlgvM z+mE$t7(wn~DNP8zCeW?hYg-p@rA_|;2_}^;Ho&So3ghlPJ8;qkA2Ic)zp`&5ZK#>Y zQ<|wlHqeDR-1I1QJuQ@e}ky> zxv+I%x8*^PrDj}S8_mi&=hCf<7WKf#N^01wN)CCdawf|65(q?K5;8}6iggk(Aahog zbAUQki0s2)(hDLzHC{Fu>0Vo{YKeQ|E12bG6Gr56JuBCOt-6v(2eo*wj`N}T!s1l` zr0tyc=N#8%7`Y~_a^fY)C3Cva^)IveVUIz(IH`P7F}|4GN62LZfzr5rJ5rP)mSV#_ zM@s4-)fPnZPb(n7uOe}Alez6eQIr!zcD`Nei+KmnkQY7bw!5Owr%km`DI?acu8%#M zi55JmIS!{Lvb^k4xVJZu!#s`V zZrn{{>V7t!&0ZuK$tRk^vACN0XPReWD|9`p>1pBLCo?``rYb62sPwD7Mmetv#K6bE z6(rYcga-MAbJ|=c*3D)wy@y=WZZ%0CBmsk8MVHoGs-I)xvz$BURhLs@{uO01DF9-l z(qu8m=5F9tLf$lyfLP%0eX8UtVO0VCU*}%c+CE3FrldNB*V+M8^CDw|&rhXwI!)x( znT!Tx#zc(V`-3HW!;yD!G`Cld!ZjNLu{bBzy7=$jW|447#s?V{pDp5BW+f|({nZ%7H59f7R!2zJ z33F_*jlVDDS(;yj^zBPfmRQ)uKI}KKsH|jW8?%v&;-=E|n4{LNp+U8j?&G;X{;E=q z)sb}TI(oBjRQNq@rf9b}-)bbJO)nifR~dbwnLI6|GQZDu>lovny#D|??Pl>6_4TV; zOxS^j!WbS!Q-z?rFvlo}EC=^%wEU!Z70D_tN20ND(H&2P{uEm3noC7;Rnk9~X!ZB5 zQ^s0sI$}+45)4AS6pw1yZBqW#OqR1q100nHztXwi7+ySjeDX{8_7^8T>xQHnc4w_d zq-3s{;J2UY8l0<);f`yo_-CWTs(9B5l(v&*dHHe=<| zUS3SarkRVD`qwu-x!nlMWq|y1T~G{%g#9=^5npTR%cQs2bUrj@R`+3JV_hb#ig z*Vp{>UqC~teXUW{f(nda{47-I=eF>41eF>3|U~3LbJ+6D#RWw1A=CSUf+niOI znQ@UDVzu;rRjuU;PZ%|kBH^j3*f|HEYLUh^X6({@$BY`OH2(l88Rnfd+~>Vz-Aq)P zn5EFU486G8gB+1q_Y)ZjH8sTLvsIT24QbHGg^4(+5mcz-nsTTInt8`+T)jzB<#rz$ zg&iqcRF9tZ14>7HRco7t=xcb!<};UKX)gCR<~Rbe^$lL{xs$57Q4rZ9+YLCjjDl~bPr;~`ps(LNX*7sJ1D~~c)RbW8e#=Cz9{8X{A zv->oXOv(=hV#xh#&HO*`^5=72_=4sgCNH`k^|7CzHS1PC4*V^sX?E$R_Ylksm%k+#V>jeB{K0Hf;mv#)MX^{s1vg1XEqB#9%Of72!hKdo@TV=sj7kJf4YNcOEcpt^^0 z4b9N)ITX(lSgUwvRE?8-M%GS)JmS1c8MV&`-fZ7BxliC_pu1 zMdqQ6q|P^Fcl7@N>((z1%=x0upRK6JmTJesekhPy-b^wSE3gCcu4hk}zM;FhuHWKT zog98F)Z??-ZN%&pvF)1U=a%12{oT5kll%Ua^ptSYlu|xF6^y4DGRs01Q=Tw$O`lRt z+p;(qH9|>@C|TT=BC)>M^D_g$&3d%(@q*QAeC>Q>syjs3eM(kBK-|BTHE+^I2;h%g z)^L=n?cKqu?IBkOcgtNivFF{A-rCH!JCo*(x?}^7rE2K6jT(dw%0G{98LBbfLn9y3U3hB1juLB98;aIAo%RExhhtnF^EjCQ4Bx@JS&d9HA3cQ*2tSsU2qvSHM) z4qq#t0?{?gI)+n_dkV@_VI^xFRPl9U_dA^*#>;gd*{)Qfb(IhI zPdKk8k&bsS59{ey;qhh7q#jzndn)H_u?R5ZSou{pGvN(@Xc8y9Wp{InvMxETz7|haD6{)jc zYloWQrI7Dt_3ckCTGWgIRhfgTp7mxW-4hRL_PJ8gA1x_4HrY}Z7}`cb=tXO2_fuHk zTgz_E9HG@it78D3ezlULXvd+ex_pFP!JeLC{{S&cX*jg?H^aV3rxWS#2l(6V+Lg_X z!era3=0bX$SA7bl)MH`JN2PfG0D{^v;tgZ~GIsv}FaEuH1+Da!lkQd}0pwS}V(6&U zZ2emYh;o8wOAVopJQKx83P;!)k59i#sVMg!%fyEL)@qO!BOqG^ZB{{VNd zdTQFd&9sg^t6nWQs|I2KrIsazKbP+s)09_@^)l_%7URn!AXVuKLkanDj+I_XA=B8r zoSMSa^`@V2h~OTTagS4;r9_vySk!eDjxtHhXQp~rhWPVZn^@MRj^RQ@7{apk_ODct znoqy;S1aOg4V&d@tzkx=2a5Et@{As*lZ@t_ta5%4xwyKFLckYZo4Dh(b@nqYyo%Ds zNmKJ+@m_ImmzpiZ60DA=kah4&)7*?!GF26k zlOr~%e&cTOocjS+Ai6fP2$C>D{{Rr?x*Z=%w6&3phvjA3c&v+UC9Ur#@`mBNXuf96jUxMVD!Mc0KP_kKZUw{a%4GDrb~VwyCLos&skbS&XZ2Tj5r6{lJ@9Y-XndQFwe%~DlI1A zN-6_@PkMt`y(_CE1Oh$j7`wiP>5!~B3ZRjbipy))S&1F0?%>gb&q~PD5Jq>aW3Fj@ z%~hnfI*m6{6DZG7Qfd+#s2eJT=kAf5*D0pnF;ULi+=k;Y?9a@5(s7I2pJ`GWMUueQ zhy5L_APRUtyW+4sRq)?VxwU(%R5p_@IE)gl{(r4(+PG_sH#>WZwWw-BD8hW$^rYby zYflk4?#~Fg(eAD_Wq}}&fIuXv#ygr*Z}zVc#Tht`CJWPniuUa$K{SRz1TiS{|Mrv}!v^m>Qy`_3p@qBT?G7ycywHd{L}g*dpy& z8*b;}e>%&tvvGwnGRd5t4Rw|iKA!N&5ANiRgCi-y2Rzr9*0*QTsYjO4IIkIaH&F0j z#7EI%Ru_!pVMEE!Ojpq!ANYx>{2`l2(EMK^o-4S+MKYYcS;jN%{uRp4sA=&0bI|X# zMoCp|YeQX5YB-5u=Xf*e zeLq%@QMQVB9c4#Rhf**{V_Ff;-PXJ>;KsE2AA@w%on&sTQtX~-zr^vfw`qV|RIO;mmnS&??n&Q3oJME^WN#!L- z9M*K3*-sey)|`qCNEoVer&?sABH|LNOJcLU&8Ldny^j$Jz_=nl_^9h*&1=a6HhBP6 zCFRKkfsS{~vK&oTz^XXkz!Y_tapBObgQ%09rT|ZG4 zk1dRO8Iobp5$VQ18tA77CXPDOVz8BCf4~A{y zLL&YB$NecWD6)uitP(Ek8-KyZJRQn$OAMgtIsw_nn}o)prG zNclNbbDO#4o*?n3h&)Mo=W3db#l(Q%d9q_Xa7eGT{sj46B=8T1n3XT&`BEO?l=42j z*UwGidv6gtA+d^AKl0H~fav~T~LFnMuqru_5GFZWiCW)K=c@ti3;md-TiQgkX<6eZ`Be2nQmb}!i zp|rG*my&l1ql1IbTKQ}ox!a3AyC3_gsXYtL;Ts)F*vD}i%$WZGmf&X{&VLI0?ERv? zAjZBf)ikdU7PHf>WGERACC6TC=#PwFww8mU_-jzpd@|DNdW81v0^O12qGyb#HTnMl zb+1WxG?Prlw+^!G~|w$Y0EMegX2jFhjdAk{9~Nie61tq`!{HCE7&^O{YGhmCZCO!z(QK>MH%j&S4`Q8p*ereC^x5qOQv^Wj>v$ zT$%SPK{nY4Y*mH1;{bH5^4nyomGP58b`mf7fUZd#^{Thbs(`OrgU)8i6zhdMa(w{E zKsUcCbz3t>W?HqI%hRABp8g($0^ zMyfWBvMY!$6CtwX9Gb(L&+Sa%U!3x5IvJ#o?!FJ!tiz~D0N4VP+|{V76Mm%eLeSzq zxbIE6gh;r~8m3K2m~xAsT8>@wazGxKso9oid2;ZKeq7f6nj~jNAYp%6s~%%q1?RaU zmQ6z9G}@;F*j7?CS|h1zn9@D+Fh#5lQ(Rr9I0o~dy^6-$eWwC-qoWb?%{_OPIU`_1#0bU84wjaPY3d;EbaF=2Y^pJ zQtrZvwQM~PH5+O!UTqBT5qv#Q7hAN}r69Udh3uqz*OGXX!*?DPxE9yDVPZj6Q^R7u zkCtVybTK$awz{T>7W0qg!ndblL(K2~_R`9}{9Ww}Bfc_8_6 zS&1V!s<#@Nrg+_x*A1ENTOBRPQA703B*2nVo$=rn?+dC#}NYJA#4w)`H6Mw;-q$nH;+$ z2N|oE7fROToQCaF%oe$`q{y;9bIoV#SN{O%1$vC|YArtTt?kT*la4W2SDJ#$COVwe z?uAmzk$Hx*} zL*mO>8D>e9Lhd>3=~lcr&1&~p-db#yW8S@H;>S+brjA>ySZ0s3dZpVg#OWZ zv)j5`1{}sl6jvnawXx~Y#70}5i=gb&d=+f&rDI5pr|1V-rPB2|T1`4> zkC!Ptu1_C@Sn<}l_J0rB+QEGLuP8>sAWjB3HS=oQ%**zWyH$I0$sKvFN|<=m-5$Ol z7wn|D9g+HNV|^9mNbtFpSwjuH@O#zOV9T5gb~W+;0PN-Q(W9Op4r>$qr~O34=hx*Y z@~^7w?~+K>{Ka6{z+TnyxU4&&HhuOF6AWBAqV_aP2FMi*k**JOPV+Y}Kq@w3Ym1of zvngCfxlT_NiE(PI#1We5B#(4vs7-1XN>;lDa~DnuoD7p$&7H?JVWcfg+gq*9Tahgz z9z{LZZA5-tlf_+y%t3J5a%zRu!C3j|J5`IRIl-(gTIh1SvFXiRQO_xMGqs!jyPb{{ z3gq-38){w{@nx2`r(84_R#L37va!j-1B`bEzu`&ZZBWR|YZ*Rc9jBhh1Eqa0@Za_T zlf<4AvekS;;@dwD+~39|g3lbX@w8-~r#&m^u=G9EBj$0H+io`#;%C6?kJ>8FM)-~J z`o(8$XXMo_6m9aZhYZAa9Mv5U{t3_VBT+D$)w8yQ95R^!Bi_E({hEFj-+Tk`9KIW# z_8agoB%LKiz-3@R!o8l~ToWCpHUqb&--iDHU`=O7wJ|i7g}eHi zG+)@C#eNgj?`|!c+2EZ96h4 zky<$8g@YxzBdZX4ish@9(yX;QC}x<9KFskyi1%yoM&2nk`6F2hkg%hT&(BScwSS1(#G*@?Ak$-FvD>2%0QEk#%6vrlqpbWv*6uYOX8LQ}nFfA#J4Yu92WsJ@ znb?w8XQ|su3zbpBzGREcbISOnqSye4-<461*0L^(e+j9K+m*Sh&maSu_tm1T zk@D_NPVJPnYlG#)N8UyTw61P{b_e?*v-PZvNw-3H$Gs9>X4XDNLgTF+NGzL>*vaYW zYNf^2?i8A#_MDUR0ZcC2h7aRT<>|^#b1+~)$s?^(kMH^#o<|tRe&(t(m5@@oCX8%a z-1}8|SZ&GYH0UP%$?sJI7gBnR@F@WsC|2ADHF72`A2nRB%TgnJxS(1PPxp-rAuEGR zc^PAY)}n$>ENy;G16_x8+?s(#<7Tn!4=~p8Jpc%~ru>=`ehdfiYQXVnt z4NA}|us*d0p@0q!X;{11hfR}g#Cn>#@qpPqde&W>qB)e-t;B$+Vcw|5Yf?s2BueM4 zA#JD)7OZBBk4j@4F$bd5OH@>S()ESmvzjS`5D~+0IpV&X(DgLcG|Nl0Y^;bY<=F9z zpS$T^!|+?gk;!c)jWoy4T*(%B81(*C;${@NqoMVAO@3EqdlkRW9%))Iy+>NFZ!uLF z;E~N-QRXdtoTAgz`>3yWri%VXekGQ0y=VT5w(5 zV>Iuw?O;t%nNi?9dev#6#s~AQR#C{!R+bR*RVS&N+d_$t)A z>s_bBj~RWcSGP$?iFpbu%`N11UFSQCXEpWs3^Jmwd=6=g_S01EYs(+mhSI^0UJXqP ztZ*-pWD|vDP1~{zk#gwSv zR)(4TwR6|y?MPlk8iayIbDx_$Ra-z8B%HUcMXO7Q!5=BjE|$BY$vl(Zt!#728cfR_ zux^Yi9$V*{;DjgZS~t>pF#<;zHO5v&j40sqUKLA zhdrx61F*5`Y1o#!5;e~N6+e|mw<0#(o_#7Nn+vp#YO`~d&&+C0h#flX;yYE^eq+Tx z!t2bq0hn{wn&fv#u1Bma%rYvY zP8W`}?qg!-+Wfq;DK!=Lq*~i4!Okj+TsGmj{Iy>4P1`^`6VjpVRChYNd&EsO0mkAh z8d!JEvS%FfDoL)A4L&tscVmjpTdmFax{=m|>^Vf}zSY1PJt|eWRa_I#p{ffYXxE;7 zYP^y#oSocbini`z`!jw!;<1)fw-m|sriM?HgZS1T+8A{5*&wOc=WC_N4#q|R2Im|UhUyG3boysM(aaQP1Gc~nZe-? z1xU_o3&;K!G5C5(Y$4wxHg=-&D@RD4*UBKx`|SGHNn>_QAz0uJ{2IRUx64X@E_+1z2PJYwS;iJ~O-4JU3-;seG65F4yc%IvVoba^4+6)kKIV z@|Z}0fa(unTD~9gcbRneDm<%*+Zz#ZxW#!G>?^Gs#UD?VW)P!3M(lklXLKfoamngx z^nX2Zo)hsBYIbqR7%?M|E2+1--HdTx4N?vhYDejmrOgEIxowvViiT*{IXu+BmgbR@ zcUpr}%@vI}G05VhjOP_Eaa~6k<^V4>PU>K*(yd6tX*m^_c{j@0=B_H_NU5k@#;Qp? z^c9n&={FuF)*-clWGWlXkf`7&Jm=f|DVnv{?%(-({XOgLf7tiny{3!c8T?DF+M&JG z+jKr^=WIO`VEUcLy$m%kX!JasO>bul_dGAdKMgePU&LB`2Tr$r(UQ>G8;IL@W#Dn`_}9&UwKcwt z@V4gjRn;{(WV)HR$7#bz+2}Ai1Kz%dH0KnOK3Y{`+vYuI_J8rT`sagQ4OaDJp2}|` zIVO+?Xz}v@09y199eCQ?;rD}eEqdvE$gLqVg#PgZf%wgO;r2mMv_0*T!G?C=bLB zh%0fY*xo0Hw0SuDHl6awN4uK&cUbWR`jg2l)3mZP5?d@wdz{xibwhCyw*wqvp_1vg z^flWUsK&>YDxB^1EX{IcZ(4)x1zVvt3d`%oHKf|csDa{dm!>JcaU z{3f4Eg^9O@QBG2OR0?<%GLzboFGMZgF_3xfRF$^%^ zDCwG`3vD%b&Q?$b1p{v6^%X|)P0NbY1NVNln|!-R6cU+9GPqzfTL?VMa84^Be&DSu zIWr#8XewUt>v;@vaB9rUxl0Z`YLkBMPinmkgKh}jnrP3c-Ts2C==!|+9;t7A21CTz za>t^O6$MK?o? zSIYhi@m1G{?ovo)V;Da==YlKfzYO@A(_OKSTXWQM81tU>@_5WErtY>sLBL~`XsEZT z()_Xv?dG6mVB^xP#5V!_H8Vz=ao)UpqL}T$n>X;Guh-n62Rpw2{qHqJ(bBnuXfJtXZ%JUTepEdGP@* z9qjDpArPJNDabzAs^1g7CN#|^o2N_0>^z|V09x{yZW*@_T3}UkQ9~FJ zsc)14#Y1^=k&I;Lwkn*oGf~v6_YBe%!Rt=AQmh6AVX)RO|0bg1T*&%@(_BGFm%78PDm3ljkx#u|o zgBd=B@i+ImHC<#fUm(xR*Xd9R0Bo~;DoZk}Fg;6jq`^n2v8-H%h9zDPddgdmEw-My z>rB=zm`Vl+7!^)tW(vc#Bx;iCbyo5>lDkMbqvmG?h#0KRF5%b=o&c+oPt&(N)fqVI zT@xyc2+bdAX4im5w&qhKYrhRLMLf!S&12D3>WwzdZ0SiT_Fg}SmM z?&pkltb6TA)2wntZmjzJ8~&n!J~FM%O4V4TtHcuXvYVxYHNK%W_I#hla4DI7ZJo1 z4l3=t{L74I(voctmMQZiz3>l=rPA+|VoxECFmr+LUqI+Ovfe56QJ83LDf1w_x@x=%ea8;J_X?^zeu8&$dOpTe%*Ty@U^ zx&2D$BJ-S_{oW5l-}0^LuBK9FOYo<__g@n}A?cb$wY$$2@h!tB$XJwu+4_q8E7blg zcn{%zhiz@HUqhi=TS68HZdYq;01uUW{{Z#Hd}sS8{6_FE!fyxom&JP4w__iOJhn*e z+#fusUzJq*kUuK;qvIFGt!v`fjde|bRlJ(&Td7MRcWsa_K^m`200%wm>F_jNICCEn znc{ifyC0_?7(d{lo&)gThVFmi55NB2)){uhf))s*_hM`FAL4Js{cqxDh_5xhZt_dZ zsoAg@j@bQz`d69UYZomcZ#4V!#S5;>(2#TZ*Ru%OA2Cw1lhAe4hjA-{d$8(FS8UvF zMm4pyh6ElDK~m~=>vajn6~{)Z zHn$(SF+Va6Do3PtEi}8ZIvRpTaL4A&HRL$J`_%!P83(Netw;Hd&oy4@&f}9!X^N6M zReOnv6bDh0Gi~CLLHi%CH5Zs$ik2441bR?A6 zuZ$BxBa*B}c@Gx|k@lNLAmBV7V`>R%Mq}eL*k?B=dtVP2E z=}d1z)zICR#sxawLKcSo;`2<5?F0^jnVD=!xM26F*+|ZMcA-w_`0Gi#a_v8OQflQ# z-4+=>%{BqZ$4cpZG2+Xw4qPmdP86A{7o^{&}x1~HM7^skF8Z)LTRJaRfP=*ZY2yDcB$ z=DVfDv74bhW2c$Pubr=#xjV%lV~5R>ic>zNMQ7v=J?dssKu|WHTJS9=WxG9xYa#)k#*dqB4S7-c`KI|}hJUEWDuwsQ>rPB@ zpK6tXt$mFiWkb2_O2Rch^uK72%R7z;ub#CJ+5+xHD-1aLism&>i~8mEL~|HD7*|{} z>W_1Vu5n5WMtvLN4;pED1*^T?+CoP~INW~<@IN1XSewL6Ev=HZy_XMnSCz5#^_?h_ps-a?7l6gI=*~4ICPg!n!#yd8heIoQExM3%LN4|errz;Si z{VHspL8zoc#~H>BYuV_MK69Gx?4A{9WBGtkIj6)VzL7!YPin5k<{NX4)wOFFvbI*^ zcXDa;u{zwav8}9INCOp@HOA*`w@#R%>gkz@-PWKOk$CIgkvHgCwN{uYWf;#=Yi4&? zqX-V}Jvvr(nvIHT&E$o1&N%d-cd|2Ljhgczuq#b|RRFzFutL)AFQ01AY%=2<&@{-| zLSXXM0?Zn1rE^x~`D6Ros@Cj2)^qa%-xS7Z6jqHv=~=pojyC{vT2d0I08)K8tc^j# z$N?BMTwO(tNkPRnNeXdKEMrWE#}!g(4^r8nWOoegyqt=GKx_f{(~PBo6h<*lbH?lz12uzY3n-BD zS~_fu_X;|9rEo*FnYUj^pzcL%15rtI9YT%(sux!b*D`0HoQhR*iVUT5N*lun03JKy zq?1+Lr)kbQ)=6-C^X*Ye?yH;+rg=2(X#{C4^Ulh-Dj48awDSvFFu%v&J!=n1k9&FZ z3_~ByjP*UJ)O9Ahn|IyMWp#ftc;!8g zPo-$sw9I!KeY<)eTE%Y@Y1Uwkxna=OefPwMSjsGF6R}>k2E47KxNE0r0-dp*`8A`Y z>kpvbrOHU#*YaW9SCdELN$;e{+*jAqx3s&drXY~cNgOaHiLYrMR$UL>)KZS;***&K z6neImZE}y5agMy_(z`2rpvpF!*UWzkd}f*@^4MIlrQ(Ry9LnM3C%7(SKx z{x*Z7QTd;&Ww^D8h0{4Emv2!}OE=1R#UY#JY}EwCagZtR}?*Vw3~6=U<4QPjMjQCc13t~%9etll4+JXN)j zZq8}4N@U2!N38@|6+zt|O*7>g3^yZr~gBW4fqm8_|SvrH#m}F&br=g&wpvgXF z%~hF(>Y8RMeX69Kkw9OlD+SI)Np8WH9V$J!6tJ!s(z#;DyIA6*kNsc=ijrbhp;NiV z7Xoz$r@cB(f|^hH6lcFbjTaYESaKJoMJ9I~)tGQpoYiSET=7N5MtfATwg{+QN$F3I zZf~;PNvb9p`ti-rcQC%oiJZI@j z!!uTj#Oo1wBQO$Q?-Dp?icGpB0|R)&M9`4V%g0_8soA2 zYHS_7Ii@=nSNE1=Fs#MhZ*)gv>soeg<^vmXS@)_IP5h9joK|mhRk36-WE_4})qj}r znrtuTMhbks%}?^r@eF+_qdsSG`@>@g6pcF$0X)(uQJf#nqhFh^YHX!ZmOR4Ag4n3Z zBLE!YkmHVNM?=LWxc#FYxmy_qi5WJIwHG5NcNFE2Fe7e#>i05od)#0op7^OS&49gW z{zzp9AX6lNEq+nWK7>iiO2IUSIQEZQ0yTYDn0~!D$XE$eP`9`8@?# zn(3sE8Nlg^iyH<7MsnFX#wf9;GI|K)?#6Rd!kmCR)B_H{0n)9)q+x)hLyGQbS*Y8! zxWz?$z~_@w$NsI4b5w4mJ4ii!Xfw99B-2+Cahkg~%9+jxs``52cU6mp-GiJ^XtXK4 z(yAP`N%yI=^&3IXN&PE3P}?5BI+I$KF_5Zoe<}uBxMmUXdF@#43(4~yYewo~t^pXT z5^UX)Xd&)4M+&2wrz;E|Y1a-9-OWM<^*NxWdxEa+hL>UNX&y7X?W>;j8WFP| zhN2P{ZN9uy*|YO!nsuB$XUs=RR|3Og-Zemd>gJMja2%c#RR;a$N$XbZKwmKDq8g+n zBQc!GaVfzAdBsi$+t#6v1+qEKID?bLC!m_@C_QROV{51K)Mc~zR4k>sb*u2mws!l6 z`ol`)tq`~O32cG|7#RK<%Tx?{nsvm6M0GV$wJq}yO99)Ox1{JzsW55DL>&ESw_uI8 zWs7ZFQPeM@duDy=;Hd=gYwVAM{xX+b&|yo4&D<-pOdh`V^97BJdVDID>IU9-5y`H< z!M-YQ3tyR&ca+P9T=yW?m5jrx(S6T^nTV#90lWkLqqa?)UtUHFyQn-_5eQV_6 zwLa=eBw*`T0vMg2fnEvX9YpH7w9*#HQ?z?xy6mh)BN(R!?jkCmvLdm4Ey6JziLJEG1nt{XE?=IhINxMxcuqx+ybQ^uf12E z-)n9|%>zuWbRO1hsmh*$oo{$HgsDy^jHCVUQ(1C5CQL}Y8#wuXDvrx>tX$fy(*#%VQoX0p73}@vvGQ%7Cke?NWG~f zjP>hIk2nIA#$8t60nHMp$bD)!j?+@JXN+g*R0d?riWlyRo@E3Q1}e7h)L5IAP?fPA>X$d;-ykqat%WyXBq2D8*~(|Su8E(&W=evuqwu-2bia5 z+s1KKa%tE}ragS7>KpQ; zX#ijVz@)((VvggC{uC1@eFrm@QHp`2ENWJhJRULYQ4BHbMaz!DWA&*cO^meVRmjPw zwi$*x3K5)vv*vqKS$fln$)>O;r{ztANiFuqz>$$wBPX{)dQ?$h;BEaX$WXy?#Yo(& zTU84dPX@BC8JXL*D^74$5=YJSthpO4lh%OqG<4}dcY-lYySioE1r}b1y;9Vr@?>E_ zNtL1h07$sYHbV1?=&Z?QQ_yv+EiF~D*sa@t^2Vd!BgwRKDMmV;DhU|5Dmm{;;c+Ex%0@6r ztI9sl7*6=Ax_!BsjIMHtR(6&dJoCjnX>ek0$JV5deoQ;TrN zJvgb05!BQHwzWN*IHdI{>`5COo+zH<<=c*F(e%wynoP)jDOjbjUf7Z32(=hpjUiX{jyD;aAFufI-0Ksd<7m+(^jpM87ZBy;PBmj0Sk` zKref9OZ#!tqOJ#^tCn{cca9`72;m%_F;uks7#1;ca5Lz+sc!WTId-NJG0{g98ml7Z z_O&9#Ip{kInmd(d4ZDv@vzAS>WoD3aTLPv_#(n|GtbaVVNGBfj^}Z0}A9}NU zo5JZIS3J9W);^_pRa>3ETDx%g&TE?1uQo9~PfUGl;NrDERGhg}JiFq?xI)EZjB?U> zjh{i&`PZ1pMZ|et8y!2==Z>$9=ZG#?la={)p2M|s9%q;HW1igC*WqJodLN(TzZ9nrItM&plDP|usF_bDD~^v4wtk*ANzm3GV7jdon~Y;AnALy$SB8H%VC zm2Z0`tAvo8e>&4yqPSdx%`sStOsej|rAhLmBdsKkBhT><6Q6pDXZcMlm13N7ZEAZB%1uO9o+;tBieqm66-m$wpTkRI0@Bij8s@ z=A0O-40ok*brw&SqE^8*G>ef@Dsf2+nl{Z?Q;ur4+)-0T+l5*ps2FeX~y;( z_bqKIrLjr;IqyfAmBl@W$UB;(Wi5g~yF&frNWXTMxT@U2_Za67LoihY9%)#O-n5R~ z3@&Oqoe@_=5@oUPQ$-qub!Tsj9l9futSDs3w_*D^V*n(~R>>(#Exn zdsRj;p0%qRZ8+^&_P^@GcNKCrE!V9U5kmO>_~xp!4)teH{{WAQr!62G_qqyl_olB4 z$26sl40qDQTcN7WxHrqxoK*Yz)1imVecgw8kzBAB?C}U!zbt4)C^6cG%eHaNJ3Ljc z!OSym=_r_OQ|Ute>PyV|JW*j>qGRVY^#O<#7UCG@ri5A6WbZywLHFa(_#xe4mqqyW!G^}~W36`}l zM|Hb7%aiX{?AL5tp9_wIJk>ou%#6=I6+p;dlzp@95_9rL)84A&a_gb0x1VQ?rQ5iU zf}xH>bWF^c&)_R9rgo5`oX77|LwI964ZwEILu+&wZ1c20Q}%ie#bULty$ z*wk(SW6$eYw(J`3clT@ICGM>c)FWx`a$gfX0GF1{duJF)hbL(3it!tmon~}(!>Pd- zudS4en07V@?hi`xkBGky7U`zCvp|w{3I;3Gz~fT)BzXCr1vv9T9xEdlaLemXxZNU& zW5(|FX71IYk)f6*Nmqs#s(Va$!TD?H)~QM-#L6xYmP2Fz07+7=K5sn-mn+LvI*Gzn-xa#w+xZtSiP z7^yb-ZP%?elkX8q#<8;m=qhg2U0a~3QT|{mx>$(-?@A6BQH`_;L$LD4H0EP~DK_rK zNw;d}6vD&|HiPR;R@!q@r-I=A~S9&my44aC1_o-hdp^u%B{LcP?p) z4ti6g`CBCM=}vA~kr zv@3L`up_M>b$Q~Q$mKwOT#-?kHs+5o;i=F@BsnL6%}HxSNU9YBcQns4o<%#BZkQC$ zy38?5G;EX19Ak=&vc&pQ@ZQv_o117oX`?2U$6H6aw;lkiGB;7$lgsjB$p}kM5d|M%zlww~u;c{{S<3)D00F$iNPr>g-BmTy7N%5n~4x zF<+aC7UO!8BXu~(y*03MbM&K;+m7`SW4jpQv?rAhjgJ1*myA|F@S-)t3X4$BmHhXlXQkYqLFqZw;ptxnAW5*h2#-X+F6B4u+LZ=c)9lSZ={IbKKOML#XzoQerG&seG`!<1{Wta42RwNa;$$07RKI!oBIk`HAW_fZR_tw6m1UQr@&~O}jy29$gY8zHL*;IS~RL`f$@J_6`=CnCoN^-k~dHz*W z&O)u9)}X$)FEL)e^)0vEQQE$0w`1$+D{5@o%G*XdccRyERzv&=a*s%EQ0%uYU)Oaa^-LTQI=Je)LZUUzK<@9GTjCnx5(zZSEc^ zP{!(TRE!+dJGx_<`bf!1Clli;Cr(_fbQ4IchWoyToh7d2E~g&U-{H+YB-}6$N@jN| zG@Ecc_o)MMO`bjEFjTzg=6zIw0CY;#XaZ&QP;(%m~ zyRvamZYsDuRO;MfqnSq2+|USx)T-_j_~Zxw==ZaX@YMPm|wxQ2&S~MNY z2_tRbQyacVG>YYRj@0Ms4M>Vo0B#iNba%rvijVLNX z$T_AgWt)RVjIJwwwQkNdU*12ZLa}EjIjM_bK%jiQ%HcBx1dg7S2Hnbdr;>KHA}M7g zbfj$^5Y6N+2NdRz`F^yA2ilO}bTkE%)Q#A()EM1?-lk*NQ=o@*oQzV`wPBH{=tgS7 zf!I>CA!Ml)d(%WpNo)jsy>U>ydBM(VPD>C*0i=IQvzp{0PNN@6jkoRxI29=BY8e>r zG?~118qLi&Zsr3x6xJm6sbgQ1QX}mWugXBqY3;$tO<9@}`T6LHn@FRc@5DfF3G+`#|HGia=zTp0utsIaoy*?SWNoqiJQ`+db*m4U!ku zt=h-ssN*z~)Uw9{Ja8&4+lMtIgl#yePu;6$8okE1-sEPT>Dr>+cT&kV7uKNYiyqQ# z914Zy^{9-ep7hPd`%qG2q?wx=dsLCe?X;ZJ;k7bg`cJ6 zldV&c9<}fT;eoT$mt4Mx8;QAvNZ=m2*wgVY0P`2vt%fK&q?Q zRLyQTA6oqP6<^y_XX`jTH?XFneBo^`+8LbvD^3N(VzRAc@=z{w>sr>|GK%S`tGUTf zV)eX*a4O2lx$3g6&(|&pHb%qm|U5D?>toTzW{Zrp|>qb z5ymJHZ*e#ssgkcub4sThZ zJggv$L_ZTyh8u8dHki!ij{`WV6-M0CL(%R`zjuN8(3uQ##UNw1K9sA6suX2pFo;$PWH3;j~zygRAKZJ=Aih-bZ#n3)L4;B@A^1IAt( zo5B7dywdJ2VY`;yzt>y7=-3{Z9jbZL(CL*Y1#<;dv*WjVwj%*?ih>o(ZZ%;~%~~$! zJ@p;8fq_pcvs8iRjDKluc$?a3mn7KS>fmfPOEwP%fZoWigj%l(ITO`z)5}8ip=xL8P zZq*A&N}h31?jnMDNg88OnNAHV{_~EetwU%TdE%)G{Rm-<$h{3*hR>nJO%1p~&j3^2 za0V1()~dvFYAIxmMg~1r+%B%M2#$B<~HS^!WT^`2s#A|tf zG-zQVk{K8bo_imqeR-nZ$0SNYUYYrNV!n4ZsVL~SKF1@YO}A28o4!uP82O0riWU&u zo+>!!ZMo{Fy-JP<$pnvT`57&5WA7s?>W`YBi*d#{^{p6JZUCm+#kFycJ#kjj5WLr} zc$ei?9Dv|)Q!YUi)%gb_idC6;1FbGnd6^?I>)M*qe7U4ZWtp&uU)WUIo{OnlX;WN7 zY}XPhlCUEMX8cWWPA=vXyC}&xf8y!ySlYjcEVQ`T+|DA$s{m`qJYVrM#4mLIIn7&QH_tDttV1fCk=vVf0TV`WFeO;$)>XwC+Svm z^#zlRQ-#9}fC&`}_ou1bnpYj0(Go{5UBZH@{V`CsTZ&lFte-L4_2P~8B`)Gg2)o{v*!#vd`Y-l^3rSaI^BO)M@HOKahlg+ME~U4YCKJTlSxW*z`ifAi z8lMTJOg!nUv`|uFZaEq4SK2+xzc{GVOS{|iMBj~BHga3rhAWRyYfGH7O{`;jM4=jwW2U2j}6JDvf!F`3yLTykT-gWgU=N+Q%wYnLyQWUPTW)->Og1$ z%x|8Y(x02HK^qlrm1$!tAVypmRMJQ}iQqf^pO~-Mj$h-qj>qlM>0*eT(!selq z4bXI}5-9vC9ln%UcM)VN1xOoqDj5OeihAWxQzlW;s_Y+Cz^+ zN?6Md;&4Y=uI_3?kQm6#GJrlt1y3A?8&i(0RAXbbgTrT~T9N+%bsaqfIwc!O?^Ey+ zpkI|mKYvP)=uaLt;PFcujl@)Hb4sC^fL>3vRn@gKigM^!afGPVb538qhdBDv!V*r< zSassCbs=Q#bw-U%t*H}yzl}($Jh}>>?vtLJQMh41@6xrWH8`e@dDEO-q^vh@r7@TQ zd(@d23=a%(pMOeqygTO^7*3@2;1(mNsdbjs|_}KO&(SN$fLWW&jMH!mjCBWZJd;wWYLvY}3f7i|$SV ztqlXgn$L-^t?cyeKH}?@V108-YNj>aj@_zR(H(`EjC^M}sFb>?B8MH<=p)%YVB9chkvne2o?R+Qko5Y?JWLR!~(HP@w znK>1~2HZy+)7f_5=LWgwMio9ZcG9m>m%z`fd=L9lX_u)STGhF+n>&2OQbDh3@c#gg zw0{s=teSoNHwbw+a1Z60{On!F7$b8L)K{&13HU|gKZ%;t$E2C9ZR1ulTn1o+gMbfA zK8#DQj}V+c(apUjp6?Q zhPpq8m^^m-k4iXBfM@t23}G+XGRvbR`c5rek5@_>V%my8zl z9q>EXVev2J)S>r?R~+Xc*3stZ%;b+Q_{Z>;-^Utz-`Ym8YETTRMaK0Wqt?Dr)pX09 zCi+WzxQtUNKPebEufDeK<2!%a^!zK!zA=0!PaA3SURXwnszfpZfWBgmxvy^viE;O4 zco^&&sQI9*e3HX;3Ig`4x}KYJrQAsk%uNeM#1&!pYM=$W4A->1<#?Yi(}QYA6^w1T zoR3PGN12ufk4moHDHV$26-w8$GI4U)w9Ko(88pu=+ngLz;RZl(y*k%X;76DMW4PUq-GPUPQw50VtwTFZf zv&>3^wAN~owC1{FvBNKjYO!o_(xvT9&jSLJarB^9 z4_bxu&MJOb9x5yzc%VdWlD#O8f-}WFn$6OHCBZB)R@IK)O;U}GOXeOZD(b}D>Fj<= zja%h3>=s^>#e0I(jJuYRMgSe@8zUX5*v-nsZM9d{qCYa=3>uxI481v~vTXwttWsnW zFYdtZDk8@KVyrbl-RTbFLmVC{yNJ$sr0<+(oMS$_^(UyUl zC%0d_Cv5vw80dM#a(nd^-TWx<<&TIpxl>S#%>*#Cf*hT!*%;k|IO|+Yk)upnHZLD$ zZv5A#d#2)0XgA2!G%AbXsH(!DSCZ;DAg2d~2vzh{@uY+PeIbKF;B zc(>p1uC;g~)K|n;dt49*z!>L0O86+syy>|)pQ}!u8Z~a|t?Ya;@jJtoo*=r>+SUkc zuCHfUM3F$TuG7$vpkxktuSmE3gQbc%VY=~^j5m_P8Ym20l6|_L!np4duadqSGbkQb zpqr2$LCNo5XLzP-OK%$ZYUBP9yNzP);6omv4h(T;u?MGW`i!c)zOSphJ}*4O!Z@bV zwa0(vR!wMp%cBmb8}PUGb(2Tt9{2${DKSk1G z@ZHve-b_+Npky2zsK#{sdFM3? zG3i|!BZ~dSk0-TSMJxs?IG5$-tVi;wsV7U0RU;dXJ(uMe=8wIKcHN?agLlo%BR55@t&ZtX?ktN)be!l!5^+FW!;*>E?Og&juw}mPt&Ddx6{f1 z`#=Q0oUr4qeLLYl*r#8-)7E`Tc&#U3e|Frk_9m=qU$G~MniAI6w(_<(TUiCLOiWRs3uRls%#j%WJoKi#c4mmxC zt$Ihn?}EDD#h(#d+StH;$gB+W^i)p#`tegKB#j~OJqtesz6$Dp7d%UEX#$w^^=;QT zSU5!;Ks_^Gq`m?07L)MnLAKKLTV%DjiE+ChJO2Q*PrWC@KZg28!#@kbr0GzoRbSpq zv~H8}{OhRO>++~@#R&G_TOaylD~MuizWAiOp3(c21M#mumG+z-E3PqZ9I}@zwH?5^+mzqIWKJMHn1J=F7>`hrgp>5=@edjLM}IQ?rj{uLKm@N7kcQTO$fj;a^^ATJM6j z{QagFZ$I9TpXFTr$AtU=sctKyuo)Th$x-;%r%w>2x;%QAK3{q-L+6hV=(n2AsTG~1 zO!K+mVE(?<^>@R60;hs>RYV!Qak^(K-1Z*TM^9f0_#Z`?BP`hI$@isCg5Qu6VPv(EFjdEUj3^R8In-seqB&M|gJ)|wxSG%0*V zZ)FarZ!Oe~wN(akPipAzBl6_h%Y)N7>w;_JuK?UjZR1TM@;s2237&)ahyMUxzRT4i z^6r@K$jQg^{#t()UBQb{h-U!sYn1(}?EcZ9=@*JQj%|efRMNuBmUr%JjF0YYe5oFq?URk8JbTpX zXd~y+tt4-N3C7R`O$vo?nR31B=z1R@mDSFBT+`O#&7@U1Pio`jk7=(}nNj0(3JSQ} zfnINaZeh5RHW=8%3h9IBan_G6#Rbhhan3~{ra3%d)~6~L%sk)`P4%a%f~SsZ23FmW zc%Wi6FoVYw`V9aonsBHFIn7BP27j#va$QR?k?U3#sPohsnm0Y^qApBM*)!UPJDE>v zYZA&SoU~N&HmiY%NXA;)vODD!hqSn4P0F15y)YDtxxf46SR&duJuS z`DJf67{RQk8Bz95V)S|wzV3#rU zVxauJ$3C^oi=^w)a9f_90=mOijYrV?!{E=v4JX06KDnoBcK0^|?oG&$z+4p|bUmx0 zpW^3-{4=B8T6kALx>mRa8LkkfG7e8aTKJ8AI(V0#E9^F_o)SA@`SK4n6rUM9S#a1I zj@{f~Ll__W4SZV3@m6t9L-arOivrg(SL%8v#e2ytd^c?|-3`iI35OXf*~rCKllHdw zk2R{=jcsFzRbo>dAToi_=kTvD)ivE;#O|k4yprT8`Bjet{{S5oRcw|u3`Pz~JlE0X z_y>li$tQES3h;)3#PV?++57i z1M)f9eK?8w9@=m4skiz0l>)3!z{*Nrt3=cQe@WLEoRs}N9ek;v=Z(|*w_ zobKTD6&k62PdTT5s?J6YXp%B@Btv%00OyLQH(cj5>EtZUnuB-BYfmEwuA(X1obgTm zAx&@I0nbX77|!2XmQsz$;#`WHCltuW)fG3TNYb$+YBtjuj_h`){{RW3##H*ySi5n9 zQS-R*#X3BIcO25MdIU)lw-^~D;}z;334RRUd{oqy7~kyHabcyn{^;j{>(JMo>99P~ zMyfe36n#!{U!ea00DKb9x9p4H zzZA(V)^W+B+&??*cu)K0yfeoiu@8y#*kqqVyiH~?z=V*J5%fGC#=hPXu0CO(PHJS4 zJiKEAJdX8IttgQyP?NhyM9uaJH>e#W=fvYX!tH=k$AeUY$Cc|3*B zIIgJHPj+zB!@J%)9~}8@A0*&+r>uT!Z2*Ij^8v`OaqwsCkK=C?YCc@n3#D2q!%ucc z<`h@dzYG5WWG@JOKk_ei0NU=Q7~PwqL?OLGj(wgm_hf>tw zmrKyqgBc|lc}M#r{PnNU4*~c$N%(o9!KP^TP}@NoV=92TC#fgDO1`X?;UYuwg#crY zJu%n{mO0T*cV@U}Cnk4Orx>FAZ}Vk_-Y_YPGVZ|@Mr}c3IsSAd+OXZnH75NmLrr6W zOOn)&Ung_!h8ElfCNkfFq+ax`z$e;-Bg}p@NXui(*&9tBQ!KRwIFPW`K^hugKsMnFWjMr6t zuE(Qkvq;(8P5{Mo5ZO-^#BJobDs%TuTk$oV_ZG3JM=SS_%4=A)eOZi@t)Y`^sZD)w z=2;!V`GW4?R^E{@Yt-jCImS9yGiPlya~9ak^#oTzqN^?95~Lq-RaM!m8PHO*Z5Ue5 z{DiJK=X+L8onqPOR_?WG(rcFpoeYdg_Ts%~_G$Q5JYDfWN>@N* zwQsb^k;WI+x}1`NX`D`++_gHme`2p4=(>HS{197SZiy$`9E*^02psq8UZ>(M68l42 zRMc&xwUwboD(V96#tsPU{{Ysnr?m-M8--Y;7>p?j4;w}}uPFHStV?$KR-Don3chJ} zQI*N*UPdYN?tAzs^4iCk_;tLSsIP4V)^EAIoY^N}3L`Shx~Xe)6U104Q6Yg^)k zU)nwgy+FCzipK-cir~Y$O!YAu!PxnO`xf3nI~;RV?lhN-kfSTx6}|RXBw>1!)E`=t z>Vs%#Uu| z(>-cK(xV{r#R4O5y-(Zn^Gr~4(w^t#pa_|H<;fkXYEn#!klgT3a@plqQ|#?KDn%EnbtqOocdJ<%c;u}X}54UM!6hpcXDx1$>Jbm zJ3&%?YYIr&m|*m!+E`$UKx;O&ERhk`pgOanXL%KxBrCalRGwd$oYNkMdat*=B#pUg zm^tZB?O!5&$cjcOAD*1kO$ulaL!0rvifR@s8}tkt@~#>DEdwdR>e=aDm99n_)rlP| zp8Gf|IIfy^LPYp-Q~g$`+}lx z0q$R#7?1n}SEMbtUfKH7zR&*1quRcVJ&b!EXa4{S@;$%t=>vbj1w;P;3gs2Dwy}Hs zg1t;z=QvSFw#Ro$J+z-tbYa-?v+%wKW^rKvEHGHFCcUTNAH(}k3&*MI!qFp@*UDA{ zpTe`g&NjA3ILP|ft7&%UNbs$s0Wj_aj6n6SiZv%An-NYBS|PD!TcXGA=WaWmE5&{& z+#B6Y+_B1**q=fEe@gawCN}nR%h9kx=hX3DQ}HWLHu`m=g;TWbC*QC2s;^U-q>QkT zX*SP0u#lwc=bm`4T=+|;>AoWIwuxn`+sAcdG~y{@l|fbqvCq&~k0S_3J@NiE-ux`p zzQf|3F6V#xxzW1+0JJ~)^^GO2r&R6i<=p$$KiS9OqeuS$B4(5eau`4bH~tx~;hxeD zgY?pU;T7oitR4hm(2xGV^{H#?BN*}{;3YXmZ5}16{>Fa>^_I=gfb{Le{LYHXe^2XP zAMtDc36t>l^G3YC@N(Sfx}9r`SBP>NXPHrr&-*nVPzFbs|_dxp8C#`C6Ur}4` zjCH8KW^RY_sVPUT10#@)xbIQ!+NPfCxwAo0wtyNKkTFtjIP02b+${sO08XcH8O=+y z98@vX+p&rOe#6Eo+^F@Yd6e~R(?rW)k&fzb-lsC=l~7d}jVqjEns(mw z%{zr*npTW2&EA{KVB<6tqjGG6(widgT1}>xX#nPvG)ln~dBEeXZ^Lo5Lh-=k6^94< z#p1Q&b=Ww^y&#svt0~%d98wnRgPMv)+m89^PM^bYwcxMgZ0fs_YWrnk9vi^?KhkZRS@4n&AY!Ql7(V3-iBXnzZl?Klnh16kTyg;62sD`Uep&8v8V&Ma;+Oslu?tmiIRwrxi4X(RN1;7^9f zg}-NAK1YZw_fO}x2R!=JlU|-c>0Qh=X<_h(PPaf5M+9nAb~vv*Uzvy;*M~v#O|$DU z6#be=oosSFv@CqF}E1zpmi#| z8em5vdwkT%J zAfmoN`|$|fO)G)L3z42FySbsOAw9Gid1F4I8HU~$npXR&gC?`2@V=)D5cU@vvCd;| zKT7oDIoUTN_qTUL}0`fPa{->NI_--16}lpJODCg3gP0oo!@a zsv2MH*|E%R$NMI}^EyVKC*HG#zNn^{-W$>+>tSv9#w(-hQtoqqXh*6(3~P4C1xWlU z{{Urg?w`uO?QaI?ZP!k<{{X*2qkjPSb^7U6t^V?XN7QHBKeS=k_*h%F_kT)pkEcre zi2O6~#GiXgwjb~sZ~Q8s3bLH(Hs|oA^%;-*PMX~x4|zWLp zn$}=QVJhH$HB(f|k~eXZKT?0Ka@w`iLo`M<%*$~%mA{C`ULre*m^9EIQ-{R#cEE-m%11jlaMT6=a5t)FWA z_qbB5KplBMT-U3Y%bJ=`q2lJT{qHhcl)Clc3XRj|H7&v&haR;9WkJcWSoz+fU@ajB zj&Vo{Y*Wb`QDTMi_Kvxz*>=;iSG^%6sQ}Ya^O}1Dx1|gBXaUOD6)yh(lwzv$yRIrl z2iAZm2W(`p=e0gO;2&CmF>C^AQS$LjPgGb0_oZI-51EoZDdobEgPha3k5XDG0mz}7 zZ7^c_Z2tgsRhVqaQcnh}d7Ldv6~k`8&%Fi3=tS|An2gZK*%Y%$x=(s?wtCP$Vp~+( zFc}9ud8-l?jY!;Th>)b29Mhgs?avvdVM|qFb(eDEpJP!-$ESZD-D*uE z8w_$-9yz8eo^!|6l0TJmoYTk8$)spCBUWs5t4gD82Wp8@tiru&u4N)f;w45ns|vdT z%@N^Lb5XRJV@!Z%+sR>7<)71~CByMhFU+Sj0=V^jwOEERBQG@qN6`1Hwz1+c=ZsKR z`V(9~lA;9Q*P{Fj(Z&A&jjWx<<%jo&@HOU}+G#@(^Jl$%0sA@WO%I=Z$O#}OanmNb zF-=CBN3DUS%~dYP=q>wi_-kwiF||%bdBBW}5Hagsg>j$wR&ZeUU*%qSjN^h0c(^@N zk@VRA0Er-CrLspgDyZrPDh7QEY7w5NgX(EsMk|FN z{xyuZEiR$EcQlNphg=G0%&U`4MrkrS3X;nzs>(Z>Ra4GtvhR(LrB1U380csMITNKu z(Vl{*SwJKans=9;bBX|DIbJ(bv}bmDQu&Ib9qK8jZ!^9P07mPEJm#a4J>VVK0;G{i z1djC)iJ1*F1b$WlAZO`Nwp${sg=A1OP1*}^IjS>dMjHkP1kwoGu4=@Qjl&|B$ts|p zhO2EzlDXQgJ2b&Xe1fs}`i`ia9yrq0IX4xPoLAOS$TskK_pe6?*DE}1bXPKHy&T;2r}^JE zTB5R0(v`+5y6Ey+W|y9LrTa%t^+9eAdK%*$4P08eHfEySij-WhwPK5tQhlKDTJuE3 z!Lwm*ly;%6*MZ)$gvGn!n>E*y430=URGJ)>v;|L7%KkNL-etmDAzm4o}W<59wVe!VN8F)jrcI@fajzckNtq-sf~zDn0ha#jT7{ z3@AkkKMLXgIH=S<7wge*f6>{o^sbNXEF%P(<^Ce(^TE2bIs5kRKD<`7Dn3gYQlrf~ zpPCx3HxM(N*CVauTp_{xz;X07+3Qf4uBBePSdYlpAFYGCJuq{c^Hr^5*p~M{PCsV7 zTkYQj{4*eI?Y9ZR>b=Y zOUW7cI|W`y3-e%Cx%>;&79R>W;z*2=eL4#Hrr}I+Mx&3Hx2ezTUbpbqU;fSTuAv!x z9o%#N$gFWR?Xk8NrPH~M@#9^WTwO_2<|INuua9p(*Aj3842t@T#SC>T8`4kA=tfV_ z*UJ*+p>5o>Zqfcmy*v()Jgm+<&gFT5+IXrmecI5Gx57x~s5eUXQS$TAjb4 z;GVReZtmEoIq6NM%q~<+vQqBOY9=G)K9swLGoH0qCzNvi>X7!T>ipB$kIT*~vtomN81o=(kx;bHxC~;Y!Hq~>roXYhAL)_i+rPsZT&PV+}%KRV7^_}6#N2iBYYsS1<2Rn2zuBh2=4>}m-*(g*ddukE{Cr}yjl5kl*> znEwD?593RnA$vJJ4Rw?b)P19OwPgPQY}>g3CHmCqeG`N8ZvK@@X^+^l^G(Nk!trjf zEOc2)x9=O}9P?Km;0{CnX1EWD8ljHd#-|uG`IkW|c2{SY-^kZmgR>G&>{qpXGqXBw zhOX)hxz2s7#dNsZ>gZ$^EZr;JH0y-2(_o2PZqyZ>Mx)f)5OZ1^msjz^GQ|4|z}D{# z{+o3kaE%)%{6VNM^%aqbExR2mgxArnxyxaB-T4~gomn<^(WS_)&w;#I8MW3gBkZ!U z{cDET*m*C;;687cuN|w9+>-0#rPqW0 z70uzRCu4tgGckOeENzaS_2XJ+h?dRS<&C6m*)9(!+|#^p-dvEd{_S#Ybj-XO_b}0n zQSy79tqn*N^M6E9w_q z?gX4xm`mQqSm(@+D`*k2fzZ_{7j7#;Xo~MS>S~U|&U)9g%zVp_Ga{hUx5{caVsTcr zF_PtW8{VGZc9B&2QhyMqVGmxE9QLGU^yZUs^rQj|^O{}Qrn?i4C}DuK0PV(=TQtIY z3O?`FfGqCZywgJGIjHv?qMf+y6ca6p1{b|8KwqUlcgsNu4ra$n7DG|1Zp|)mMFyjq zLP)1>IO$OqJGxW1mB$pU1iP}LkKi=i^rd#d6aXpPPG;#*t7ok%cBDI^MsiefPeZwC zJ-~a@(ftJia#k8?lCf3b<216#w>)O5yoBSN)dI5`>UR3lDIimovzkTgO5;P9J;o}` zZMLEGsT5|YB#TM&;8UcKMmEwR5vEAyt4zms?^-TrVUoz(xuzaycHN3@>{2g5@v&C+ zHEtC1AJ(bImP}ygw5|5V7FhF+wASQHZ3Ve)v4sYzpd_g4Op;9G=RDNb@$U#h!6t^v ziqP~whB2b}lEACb(}g(l(E%9qYJn`6f2M?yYeP%VXBLFncr7$GcPo3+0gA{VF*m zZM#B^qo=8*&LkqF+BWB{dIywOg|?H|-!(JH7yt$+AzK7-PV&LU0u@wk9Mbt<(kh(v zr@IJOBa=V^lNz_mPvKF?GRT{D5%^PgyD2&ALV^c00FlMF82h8Br)>rD1vkvva1S)Q zijhDATcdN4pG?$0XWZilrA`P3b9bhO4E%6t0yT}4V>H<#A~Hh)YJI>yI+|?Q>^Y!m z*rgQ*qLqcP3hq$VNyXDeX^<8v6 z<}BJiy+uXpXlfoAn)gwcYb!L4&O-8VY6&6JG_2dnG;1R8++_a%^{a&c0EK}Lt7`3S zJI)mC$T&~an#G&MH!``68Bsd>56-hmEe)KdC86Fu)sz>}-9q;h&W)9gh*jgIb}QpA z5b75GZ<%Xqr|yQ3@%6=dE}wMMKw3#RH%jBRt#W%!QsO3_Wr-JXUB?ElH*xsZ#W5yKfBe67dz$f{G`S;(QTd{c0HWIh1=*w@Y9@S7sZy`75VCoF3hRQR1} zu*vei#mP8hR;bkIW%Y_t)t^gVYhD|Lj8EcA&CC2-_^i9X9C%+#k9+u*>*e>&e1)m} zWSV5(YZ8nSK4$0Ixm`oXnvSU>JhL6FKH%wHkiyNYv(KxHrk;n}ko;)yzSd}bVQ~rn z0BSNtYw7<08?5d&Er*LV*_W`oQyU-02ERS6HA&`XjCpb7@@q3UyF7}=(d;fOH-Mb%a+>rBcHO|tLNVs2A$&FVr$srGX3TNn)w&tUXv!b z;|nm1!DId7l?Mb4$C~cZK$(X5CDo`-dFTw<dvR3emwRzcEFz4zu&r$_+%Z-^b!#pa%U1Q8 zc{Z8#sFuO8=syUpR`bPivHk@uk4#t5apXvt9l@^x_!|h5#1}8!Vg9xB1V8J&@GHQ^ zyR+-Exci6Gd%xn?+8_2-xOI{GsOeqE$NVcBB|Xt=hw{o3&lQ#td#vimYc$5RrJIq1 zQjF|5sJABJkaO)sj5*lfTJAiyKWSl}lq(fH)M&>ZwIZ+`deAGDB4PEUWmy>ZsG4a4 zk+3hlN9OIo87I91CC1W6YI3gSC#a?zzB$3E?W5ZX3^PC#HvGhnNT~rBJBAOvKg(5< zAOL=}vPP#2*`NxtH_QfVMO~|!7>+W(Oj0o{qydpY0jK{p0w|6K%&qv$3I$sm%!$%Gwy6{ERXKyD#vMxSBeBhR_2QJYK8FucxSBdl#iJnSg(kQ! ziWd!MeH#t~pgec3_QgzVo`$&3iqSJ$MRMc!WxT(X`*k%GUn{Xy)07*z=Q8PcI&O^j zx{cULW+mW>Im-L~mFK=7yb@`*ELoIoKGo7+%=i991M!;EG-*oA$Jqo@ue-U5ldu`sefhd zAIs8p9co3uKf8$I^Zu3VqEED46OOC_KGlQp^F?0^{5aCAw(Ocj^Be)s%m-0h9&~m# z?L35q2LtQQD}qwHvFk=EF*w~$`SlHPurl$@v0Kmz@$cIT?CE+=iE#vmIm-}N*NXPd zCro9#p8De$l0wQqI{BaWy3}R9y3<3G~SYcJJ&fMhP0)M0IzJgUJTEB}Odch9XgVpGHA58!$Th zR((QhZzG+SA2?3sx^P{z^jE7!xd zC~A0kzjj(5JiIUF{q8$gb#4302p_M=D~`Uiy3_79&kT_=xm+?4U1pBnZj*1%A#i^> zs^%DN3s9+(r)uQ>AX*qBd3qBO1K*{329s(eBLj?bYXjp2h_=xpm=F%|qa5|FS~Ik) zcH$%ZyPhi?z|DYZWL#(7s$4Ny7%9)q*A;#7Cf6MZuVrj}^6F>H!8zifW7e)+N6_}F zat*3$SnP92d&Eq+Ij3U+h3Q6Wh;h(h?@LG&@<^bQ#|Ddt8GHIuw&g(-tMhPprz+zk zwICy-Zs2N0jCSUmfV2SJxWyqqF{u{~OlA3~0S{_Z+MSFFUT@qj0kGXtV{oSJ=~ANiph2_*&v8&l+rG6V&OyaMXe?FxwDss|gBUrdt})hw zHtZrUb5I- z+L(D;BJI|y>2VG-Q(R_A@=rm4KPp@3GuM6rLa(aoE_os>e>(R?VfKJWOac6>#C`%0 zml~XdsQ?dtwe0cEts<(O#IVLI=dqs=_E~#TrhPcC{{R-!)7NU(7|pqjOQ-mX?&HI- zSzrWJ0MuI*_|MPnQ-#tjtZdh`qya^-FU9U&L8Ck zUIjxeXC8*6azkT0cBJymm^t83D-joF$UKU2uI1ycO3J%%C|K2a&&}vM&@#B+8-m%z zS^G!GNayKIWexK8_o()5`9Z;;30E$=k6KilEwzUg8ZnQ8X@7{&1LWFx6tPA)&OoLv z3koEZsRP!4A9Sdz`@g+ann5IDGs~Kj{bHVQX{-Cp1_46<01%)E{J$?C^%RO2zo4l+ z=;n)I;ep`PfqN1UrYHgz-LP#RT8C`2XFOu8%nsj{po%#ew(<>9b|uE=#a4i|s-a$o zxU9`WJ@YaQp5H;-a(Y*`w2AX>Dq0^l=zp^cLn2A3YFk|LV}(f{ zoprXq0DL*8$s5SC+`68xAjNwB0NGAKAYz=lT=$Q%D4pA|L7dd{c45ep*x>a40EYe^ z)4&nwHs_q~DY*W%)%a_{`h5Duq)}K~DzlBiL;x$){{Twp^xp&O7ZWIC`#R?aM?Ev` zU44&&VDRPA%@yk2Tq^zO(1qvJ)N?h|(lpifENfFnk}PO(7*T!Z2T1NsBi^&QzUs(7{_c~DnIFe$cA3K)Ie`aDwLawqcPSowrjhgC z!n?1Q?lN)CK=#4ry9>N_=Zf_!PYCH6d1DTr3YHsA)u|7K^v68fMn*7t*PT|MG_HD7 zYQ_=eJcq*5t+$Kxxe3NDR1eO+*O^0GrVt!}dlA#qy?6{h3({b^OPH+!NgD@WsIJ~W z7;15ZP2i{=m8CfHqnfnUMs)h8fV3YFWL{~u^S|C3p#who9V_MEk6sk9@W+gj-%htn zTW7ac5k@cp=O^*6pkwj2qm92V-a$3N`18Yd{{Rp*2rlp0qMkT}W6R)H(r!qaUgOm8 zy$;+$ptB5mS3U8J2Jq}a4F35@9+mFt@V3t0HC4Efd!B0p#oq#=@lCqGbr~X6IUl>J4l}veQmkbg9}--lS8jXN`#Ba!Hun|ueaGx>k`iIo%93(-L_ei6AK3cx+dFl* zj_>b8YuAj`wLB+IZQjSuH&GubcdYr7n)+%_*$-HfG80p_Z>pNkxc!a%NbCE%>qkDF zDwRl>N`&61`OwGmjw&*{Gm+P&eE}!zapNT)D_TFM9;nUxA$ayaQr6wS-I!H-NSXa! zr&Gg6PPwC}UMtw<{gwV8!@<(TpYF(~`POaM?APP#d}l$KzJX0XbU$Gu%bT@GzjW7o zH^4s}+w$HTyl-`jII6AihsE&ce}{DrKk0*U`3iiSNp>?r zb*0AIvi7d0?&s(!1Pz1o{$iN9Ut+5+aZVA{hKq1tZn&jbPhp>0F1iC&S1TCl>mSN$ zW{+!fF->Ln#WE8hZ1ucgx9nWG>U z=by&CJ4Nv=@0hCw(KBFf3Qt<${ugN9+7_2?QJZAA>Fr+M@Z-R@I;OP_$T18=JCmtL7Ksl zU6=xK>sN>V9m>XA+ZGYYQb5fxF(l-VYGScmfO>VIqzi+L^UZV|WQ@7s@M*qakAu|I z?8_z&J5&u0Up;66Rud*kBv6PKEDy|oN}4^R?;Lx2)me+Q+#Cu3k~rIGEyzbM!+eq4adQ*1(@A04n+_HA2>?*^(Cew~7N)}?lx=;g-3E^>$yip?VLPiM`+_9w( z^J5sG3au04B;(Kud6C3;#y_n+o8}_~;+)apGDc_u6;i__V2WqjHn;GQYWXiLV!^vCC3`6DYvG6%kECs@(#FClL--YEecLJZfD?Ij(Lp!&RI zu6Tx>`yKci*HRanM~f~XnMPO72;=cN=DLj|_I-!LdbQ2WUL&`=S-2r#13Y!&x|sY8 zVk0b;sTe)fl|PR)H~b^E7SZt*Thx+&nXZ`r@oIVUe#P>pH%<6+29Bye(+tcx^BjZu zRjIr)2bY;IV!`a73|1biBsR_EL<30O2EoVcP&rs*8$dGSKPvEl5k#b^qUpj_dYbZh zcTR;18?sNPDmBuyrT+j}uJwuig6i5xPi7}0{{XE~Y8s3-uG`-@=}McGLT43E zbE8Jl?2pT8ne}g)tViMxDOq4Fh};xFqczLf%990hGOgGO(h=&jDO(c^Oa11?Xp?be z#u1v(xGtJj2pEFQKJnyM{;3Mt*~XiT$VWBJ=$0C*YLP{J@k*a~oQ^SD`s~Wn1zrO2 z)~Piu328?|mDc0^!H;R@lU&rcVmU((P-}ZxygzCxcwPo;HfB=I$i_O?L~Ub=SLQl@ z4DE+Qif20lTy^bSmyQ#4@RM*NOt1s%T`i=^Z{blBoHVz8DEu>AhO=__%r_2W`9%v* zdl+n=FrcX7t^J>IITVd<7PVR#G*s9r3gZ~7UQT*a`8?HJRzw?qUTJ*4lyO$Po}6Z+ zTVi_Dg^@{OKA)vXwwt>e(2m#ItR<~6=wzuT1c_hwS8yT3btJ=YY`< z@T{*6d@|Q2!D}{zda=cNc7x!ny*(4nDUs9xMc8tqQ%>++g>eY;bZZyL{{Wr{bNPxV z_)*~Nvf_UWX;KgN?GV=Oyfa&<#@tiPa!A0IBi4(tS#~%p{{Vo04R4E?d>NxT@BWCQ zx%>YB*;nBu_U|*m+F1Vpc07L~E7!ipKfHORI(qFtH5|-2S7YbxL-r;3FMQuOg6z=x zqe#EWs|xG>3HR_~>p1Y^#h>}-bs+wxzMNe>Hk^}DwW5Xq6Hl65#mN`Y`7Zwe{t2h> zdg*>kJw_A$#p&bo70=%P0KqMO7Tj(zU+U3%e)V4;_t5@T_M=+ma1Ln(p3J_K`J}Zc z*}-m)gs(r~ls*QLvu)y?S`7aHu^Au8Ru%935>H5zaJKQy%z5eN+JpRvuhA6Jos?m* zijlN=cK-mZ!RT^2RjJNS#JE$n+CMTczu=MAN{#k!A6qZ`QrfbE_=0m>-N*bAZ^aTT zEuW3_De>2b2iy2feP8i!<93@Tj4$+=E?FS5Zz<7a+Jui<@~;$pVz#`pYgpI+4dU?SJ~RyNS%8W)G?pT3i|iq{{Zbh7ld>~)9$r6+TIrV8gf~H@5t+3$Kem!TR`zn$4Twp zEPV2-9n1d!0X553jaqsm+QH-SxSD*|vH5?ff5A5XH`vC{ABLg01Fw^L3xDjwx$FM` z*gxZ5pTqbYP+`>hPa9|d03Wa09Vf+_R=Em2mGl=U8@h~z?r~Ul{{R>~D>dZS{{Y(2 zMKp4GWn|-=_O5S#W_pp9AC*g({7k<6k$x;#ZZdceSs(7(=lN#2+t1ne;vJ5B-v#Sw z>;8c!^jiLb)SGkI7o4l%WBd{M6_p1B$ zJNP}QjLqOpC?8aa59?Sum+TktTKHi2LKwg6obUcc9^Di5R*%D#f=nC^m3Ge2fehGR zt$xbtAMj0&g7;Y~quoMJbh>Unm4$Wx00h7IRU)4veOe>w=j0F0k8cuwuFuH1;xcaJ zanh3B62E+Wq!G{3zgF+R;FZ1uorr^9)uYe*gb&WJFTdcE+7{9+JY9JnPw~K}k8GZS z96Pz?Kd`2i;cZ*Oy4}98)~5T<46ATPSYv`eD*9^T`@;GH$rhBh(oOeq0t^iM_pTGe zKk!Yf{{RQvq`Gg5_emRM7Ps4x_04*vuk5?8*{Xx8!zoeSo0Iuhfr`V5 zi&)tDq=TC1qZb&cK8G$Qaj8+w9#W_oO0Uert~sWdasVKXYtn8$0rV`B-D?K**!Q&PxxMwIj!t&+z(D)p+FlQ$(5L(wH9aw{&FGX&_Z4jslFDhQ|0w zn9o(>vOGs|C)rvw1w$Mb9YuIDPEyeNg(Vo=f=`H=WzFMRLnBDYaL%jpkH)VuHS{KU zes#eheJjsRs>g8A#8x>mlYz;u@8Px6OL#3VTOonPcT>?GO=!k)<~ciyDU#*x%xu%K z+OeG0ge!3kuFHs(So4wEy`{WAY$0qcVTkHiHRs+UvGU!?0PQ^BR;nsW?8a3b8c{eM zV^w$~DVzX0?ZK`}eMB)NeAwjV74A!RroOIyVdExH}>J8!hL}(j+%we0JD-T}qKC1FM zC8;gjCbain z+tjbFF9;j0_oQ*(nTOVu;|$7UWk^V zmQUd$IdRS_kJY?4rp}ng&;mD#USvO0W~{ikK*-CJKRZ-k#Bh0|J+CN|rRIax66= z8$~!nQtbm3BFDR@C)$gF50p5k`8_Z*Q$-PyK&g_)qJffYq0@XBdw6#;`78d{29?Hg z{$4v(+YKh~Qjt>D7nPfjlvktZzYpyqbu-3hZ+?~Oo)^*6PmKgItYg_g{&a(0hm`0) z1U0=;V>7DSM%SWVkbyxZ zk73-<^xPHX?2cbe_<7;&FKLHPiz;#Rsbl%p^}IG#n^h7h$3*}rABB8}@mu!Jy|&h; z(mW?;9k_-@jjyi1cv~G=0Iv=4N5;<=c%dM>)-}7Cr(PqD2J)0(@ObEcwZlAIAkR{k z0;Jb7KTaVk7!EQ|-N-d5kqO|B&c8Rl9RAT?5PUPJ1Uk~{cFaI%ug2xaJOVlz`;XyI z#O*)gcZVa?El7@NzDtNmPiTXY2kk(0n0i*E-g%XQxD?Il7!j{d4(I%)5sx=#7CG%Aj>(afsDI2V01o#TI)F%%q<6^Pk19+e=>fl?+f? zTTh``s2lBV=iR^8ErI?`b59Wn>2t1*7Nt#EvHBNve82lne$)%#`{d9(H+q8pH^uDH z;fg63+6S*+%DQbEJH;dtWItYMQ>Wg(`C@PuQoJ05H1zl+wM6tjl%=6h%+)$bU{ z&n|a{KK-#@SA&YFXJhls+O)9rrD<632<{hB)-Ueve%X6*GqV;1oSf$;^Q?VKPw7a7A*Do7x<}k+<%G~)MZgrMNZZ|IF zJ!)%hL106$;GRy@Ij(m3w>^kPQI9HmA4ppKe!qe^E^Y5V!*L31DzEae@0!h%;zZiT z;J%J|7tCz7!hZfn5A&}EeNJ2GS{S8LI)Yd9u8+cckC|&QxdImnjmz5|4G~bjsEY2Q zishB8exd%&-y9#u+B_DTj4YRs;skNgz#VJeM(+5|dso80v5u^|hP|cO!xYT8CFe6J z8;7W`zV0-)Tx}b>mCqu)3|%D&-5;amIH^~{sZ@HDsmi;$(Y2#u3T>rkBOlVd)9N&_ zDyUkJk;Os3<)h5tP%D#mG;_uUM6y%XN(4NfnWUz)gS`tUprDahk&1SDQ%h$Vrxq9- z&=v|d=dB7ytt(S)vb3<9anhs&Qx=h%(vdbKE$DGWZ8*+P;3^>5>rx)n?lQExZN14M z;#MB&D=zcF`gPQ2b-ZIeK|pJCHri0zy(tdonRtWX_L+YZ?1fOD?v886d|B{D^2M4< zUCzAWeQWCJ6`LFiuQi-=E*da?qJgKW@V=qpTkSoVO>HD+xxpf{3>#E}FhzaGsdy($ z)HCK=r#*gJ;yL&JckQ1?F4ntYUn%{;%MZNOPr|WFXRJVCOup=H&#ijZ<-B*A zYwy8~91M(C9rk!^ZVSSrf(SL+2Dx=PDkpspSC2tYv8&u%g<=6C(y2+KXp3~RN<8KO z@P6s8N^NT9<{Y%FK>%YlPy11Wa_y1tPnks+x-NRNvztrN;Zo5-7|%TcHG!z!L2SRd zg$W1yl`Xx~PYRsYMx~NnbIGjvuFB=Mgxar&u4BCh255%Gz)`@fx?hQIq*J|voO9B- zeL>lF6X}9#O+MhR%G z%)D3entucMnq4s2B=%8&SLOS}*x$I?BwgJiXq+|mb;=H>>{h)Lk?V{l( zvd>)dqw%iOO!3BrtDqLTmAju!z#qq&=<0JDeqMSSjHvXfVwO20%19(%?+%p0!J7c& z`U-Xs!l3(87By0Pnw6MFq`%5Pym-ZPUL^7MmEriAXSg!I{P97OPijv^aL{&GwHx9`h2oiEeQMPtJr$it^{$4-`qxm8%(u9TWX5wF17Dk( zFNM5E;?Fwv+B=KIPnq3ZUWxF&=fn_P6w`Iav${i{B6lHULw+>ywa}iuPt0;HM;^ny?Cr%hWF6s^iKfU>5+wo5L^CwFv&Hx zJUZXS^LlYzTo#^D3R7!$1as|H1+Xp3;*ckEnzPYFYza~MR^6SLRZ)yp$s>vY8L$Vv zT!m4#FkEDGrc<(4V#kQ#BRt~1ME$S6ILl`Qo)OXRe$RAV8>zQog~vdDKhnOqxRqmt zv&PU^gXk;rbM}zdKGpGyUQ3BtW0K*RGPZtEjAFR4a&3F3eg+CpQ;fXTjf}8>DR?ii`qZJ-wn;E-`qznz)|H| zZyA-(Ps26xCyBpoFB^EONutyK&*A$q{7{p--gWPwUd2KIaAZ2HO7+G@C&6m1NcW;m&1NAzVPm;4C>7! zYI0F}W8RwA&LhBV#@~)=yC`MI#yv5L+B0q3!lW*oPogY-GDWIdLoKwtC>x_Z5Np8x zD*R5L#GWpmOuP&R-<0G4Jq1#;iQ;Av%E~|_DxS5$c!Kd6rg;dCUO;kd>o6FXC1!qm zon?w~6I<52$v4c*N&Y`ytyH(TbEi!C{pNULdsY-vTuCEFq)g-wz0NCA!ra^2gfG3A z@=rluM5N}mKQXC7ofMK8CZQoz47;BlMFG{9Cvajq_NqF{J&cR9Ef#+F^sCm^i+QE_ z(Kr)l{aYL#%B8y<5r;BX7S)SF%sxe5z}G?Hc^k=)yjzu5cIV?h-u2D-4{ofF@;==4 zt&KkU=13qi0Jy*-flHWmDBdlfOMcJ(B)!q~s~N3E$Y!}!+_}mFU#a>Go=%f#8_y)t z6b-q~dW!tn{f_)I9<|~tA#)d<9jh5s5%QPqpYz_oNHm{5NSDrxM#K15x3zHNq^_)e z7DGmGgOs*r;fzRwC_c4PZ8V-^KU~%5+vUOI6z{#z*O$tqeP=U^v5IZqq2m;uODCzV zpDj*uIiW4o=Yjaq?Cx5ha}xyg6s_8}TEHHQ`BW!Q4BazH(~(}%CR=o=Bm1?d{hBtO zDa)sY#}vJsh3%qd6n6Wfr54g`=~{_qtJ^g&iG3=SDG@5k7|U-Wj+DMkm9(*{^yBcM zqYdbP3cqB?`ob{U7o_r9w*(`e1t5rX@`|5g!|Mpc@?7JsJVeXbpTf4hwC=QdDcNZD zEIzP|Z!Gr&eiWMs?OQ%l{{VM1d29XAN3mh`gk^wzDH%_tYWYk3&?xek`=HbIEPq%= zK}T=8DGj`ym9irplvB!d`9&VZlPp59gZ5_r;rywRX=`w}Xofz5x&W))bM&T2$roRc zcgA<`xc#uWtn3iQ2G#8%d-z_=uOSD*NU z#>n1aM%;T>El8!Y-A|rcv&DQ@@Rl1kk*)W0)7rRsyc>HQgls3?y{k~wpHR;u^Q^fc z8;{Bl(z(u<$(~~egs(6Mms(c-3AmFRzF(zx>l)yEpj4xe;ryr>#;3#9`AbQU!mKaD zODm7{%){M9b@8$9(yT_Ku4$qgM~?XN$NMKn+Mt(GB#eWNwO_)Qk!#Xv*Dj3#5~yN1 z+{3LDRx<2%Q`+aOUtdXh(kiypLye<>T>aU2@>{2BD6V;EZP1?1V)1j@n=-G&K9{fI3tfl-Woj2n#TT3!y=w6?git{uiYoe;KZMlNY~qqd zkNA&z+nV0rPqlw7Fu+koP~v%YtgMQ>>KG2X!Nw1IacWH33$at~@KriVQi zg*|czblpBXSOAU#z`*36Q(r%L*(`6oM{xz^v^P6OH#9(>)`}~(f#z0|IpOf%!&;(- z`#0HKlZ}HJ{Hi(r1%-^sX?Y?K;NEkOr!-Mr5;;?M9bxdt#JX(3A=Vr(Tq|Sx*HLSv z_>ov!i_3;^Ib$;7iYg5a3qJ(wl9o3*wiN#Wdo7R3h`tWmNxn;)$t1d9cTXP;k3pI! zqjBtT9z6Y(t^7(FOMP#=o<+z3}=WeRcMGy*qGLlHNdv2fowI z6jrKED?^rQ?(FOQ7vVH*6l$In)oyLV{F1>i`52C%`qVn5#j|P=N3YoZhUA^AeQ4h= zJ+Qwp&#e?w=4_aybD@&z{{TS>(q~n$WeTk1dAofHZ@dP3*In@M#r`k&XLL1h2kPbv zDGuo@B_zb)o>ZyecjQq;bIk05x%Yp-pV~7`_^ogDD~m?b^{7T3(`k|-amy=q>E6Az zB9ca=0O z&yl}rPuj{&2G(sO!|~3icv&t7$;WU3=DrH?uZtU6*5tjGKRRig{LFdgiYvsNGDGsDf5HI&03wPj7H=KTNwz5(;Wnro z{o0>e@SHlIg>E%pDjA`Sg?QLtoad+IMHQN7bw%!;cc<9e=y18SLWWbq=Q#ELb$Z>M zqbi3Hp1$UaDms(Z7a`J2g*K8)9uypAs_KfC`hkQiF3>WB-MH1v6&NClD`>qAYLQn8D59$7QQRn^if!mAAfk#Y zIhhtgMHErY!pJD1ig#gT6j4PkW)?w36jQq@DO^#|)K7GfW^_gg?qcd* zDT2vafp5yVe-L>2*fEWp28t_=a(6vSRG_1=!)luJ_o~@;=iagz&p9Nwe9=W?ChTmq gb_kb|Q|zLO$kaleDn(wDQ9u%TeJVwwiUiO9*$iRBXaE2J literal 0 HcmV?d00001 diff --git a/docs/images/mikhailfaiz.png b/docs/images/mikhailfaiz.png new file mode 100644 index 0000000000000000000000000000000000000000..791a64b53e8bcca5ed8963f37bbda3e823f8596a GIT binary patch literal 289201 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 sIK;_&u=i-<@zL(Ko+9i{IxVEdMP{p-aayJ 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ଷN-o7C1*190_4TOZL55y&=56Y8kF7|*EN;Vw% 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

    uU|StMt2YP1KtCY;inYv8SdE; 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 gU)N^CUx<+oq|@sFRs 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ΝDp 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 PiYNf@N;*+R0Du44^#gno literal 0 HcmV?d00001 diff --git a/docs/images/zsoh97.png b/docs/images/zsoh97.png new file mode 100644 index 0000000000000000000000000000000000000000..62765fa407ac580e6e2bd597494400150e06b814 GIT binary patch literal 112018 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 literal 0 HcmV?d00001 From 86313923eff22996c72b3e0d814b3d968c203812 Mon Sep 17 00:00:00 2001 From: zsoh97 <41435427+zsoh97@users.noreply.github.com> Date: Tue, 25 Feb 2020 00:01:07 +0800 Subject: [PATCH 008/252] Update UserGuide.adoc --- docs/UserGuide.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index a5ba357cc6c..cc4d4a37b0e 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -220,7 +220,8 @@ Adds a new journal entry to the entry list with the specified content, date, tim Sorts the list of current journal entry lists in a specified order. Format: `sort [SORT_TYPE]` -* Available `SORT_TYPE`: + +* Available `SORT_TYPE`: ** Old to new - old (default if SORT_TYPE is left empty) ** New to old - new ** Location - location From 6b8990b08b30f526fe73560df19f3c2f87472ae0 Mon Sep 17 00:00:00 2001 From: ranicewin Date: Fri, 28 Feb 2020 15:57:10 +0800 Subject: [PATCH 009/252] Update DeveloperGuide.adoc Update website title Update DeveloperGuide.adoc --- build.gradle | 6 +- docs/DeveloperGuide.adoc | 336 +++++++++++++++++++++++++++++++++++---- 2 files changed, 309 insertions(+), 33 deletions(-) diff --git a/build.gradle b/build.gradle index 93029ef8262..f3509b7343b 100644 --- a/build.gradle +++ b/build.gradle @@ -67,7 +67,7 @@ dependencies { } shadowJar { - archiveName = 'addressbook.jar' + archiveName = 'volant.jar' destinationDir = file("${buildDir}/jar/") } @@ -133,8 +133,8 @@ asciidoctor { idprefix: '', // for compatibility with GitHub preview idseparator: '-', 'site-root': "${sourceDir}", // must be the same as sourceDir, do not modify - 'site-name': 'AddressBook-Level3', - 'site-githuburl': 'https://github.com/se-edu/addressbook-level3', + 'site-name': 'Volant by CS2103T-F04=9-4', + 'site-githuburl': 'https://github.com/AY1920S2-CS2103T-F09-4/main', 'site-seedu': true, // delete this line if your project is not a fork (not a SE-EDU project) ] diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 3d65905a853..212eec569c3 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -279,78 +279,349 @@ Refer to the guide <>. *Target user profile*: -* has a need to manage a significant number of contacts -* prefer desktop apps over other types +* is a solo traveller +* prefers desktop apps over other types * can type fast * prefers typing over mouse input * is reasonably comfortable using CLI apps -*Value proposition*: manage contacts faster than a typical mouse/GUI driven app +*Value proposition*: convenient travel assistant for solo travelers who are always on their feet [appendix] == User Stories -Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (unlikely to have) - `*` +*Priorities* -[width="59%",cols="22%,<23%,<25%,<30%",options="header",] +* High (must have) - `* * *` +* Medium (nice to have) - `* *` +* Low (not useful) - `*` + +[width="80%",cols="22%,<23%,<25%,<30%",options="header",] |======================================================================= -|Priority |As a ... |I want to ... |So that I can... -|`* * *` |new user |see usage instructions |refer to instructions when I forget how to use the App +|Priority |As a ... |I want to ... |So that I ca ... +|`* * *` | frequent traveler | add a travel entry with weather, location and time metadata | document my past travels + +|`* * *` | traveler always on the go | record short text entries recording my travels, similar to that of a Tweet on Twitter | can keep track of my activities without excessive typing + +|`* * *` |user |add an activity into an itinerary list |see my planned activities at a glance and better plan my trip + +|`* * *` |user |tag a location to each activity in the itinerary |view where each activity is taking place + +|`* * *` |user |edit the entries in my itinerary list |can amend any mistakes when entering data, or change my travel plans + +|`* * *` |user | see a chronological timeline of the activities in the itinerary | can have a clear idea of my travel plans and schedule dur + +|`* * *` |frequent traveler |see a record of all my past itineraries |can review my past travels + +|`* * *` |traveler always meeting new people overseas |add a contact that I met during my trip with metadata including their name, age, phone number, location where I met them, and their country of origin |can keep in contact with them + +|`* * *` |user |delete contacts |can get rid of contacts that I have not been in touch with for some time -|`* * *` |user |add a new person | +|`* * *` |user |view my itineraries, contact lists and journals specific to the trip they are relevant to |can effectively plan for multiple trips simultaneously -|`* * *` |user |delete a person |remove entries that I no longer need +|`* * *` |user |customize trip names |can distinguish between different trips that happen in the same location within similar date ranges -|`* * *` |user |find a person by name |locate details of persons without having to go through the entire list +|`* *` |frequent traveler |to be able to see a timeline view of all my short journal entries and photos, including the location and time of the photos and entries, per trip| ?? -|`* *` |user |hide <> by default |minimize chance of someone else seeing them by accident +|`* *` |food lover |add a meal with description, photo, price and location |keep track of what I ate + +|`* *` |user |sort my travel entries by category depending on the ‘feeling’ tag of each travel entry |see my best moments + +|`* *` |busy user |list and record items in a packing list |easily reference what I need for a trip at a glance + +|`* *` |fickle-minded user |delete packing list entries |remove items I feel I no longer need for the trip from the packing list -|`*` |user with many persons in the address book |sort persons by name |locate a person easily |======================================================================= -_{More to be added}_ +_{All user stories can be viewed in our issue tracker.}_ [appendix] == Use Cases -(For all use cases below, the *System* is the `AddressBook` and the *Actor* is the `user`, unless specified otherwise) +(For all use cases below, the *System* is `Volant (V)` and the *Actor* is the `user`, unless specified otherwise) + +[discrete] +=== UC01 - Adding New Trip + +**Precondition: **Start from home page + +*Guarantee:* A new Trip will be created + +*MSS* + +1. User enters details of trip to be added +2. V writes added trip into data files and displays new trip in the trip list ++ +Use case ends + +*Extensions* + +[none] +* 1a. V detects invalid characters in trip details +* 1a1. V outputs error informing user of invalid characters +* 1a2. V terminates the command ++ +Use case ends + +[none] +* 1b. V detects missing fields in trip details +* 1b1. V outputs error informing user of missing fields +* 1b2. V terminates the command ++ +Use case ends + +[none] +* 1c. V is unable to detect a valid keyword +* 1c1. V outputs error informing user of invalid keyword +* 1c2. V terminates the command ++ +Use case ends + +[discrete] +=== UC02 - Editing Existing Trip + +**Precondition: **User is in the home page + +**Guarantee: **Information of existing trip will be changed + +*MSS* + +1. User requests to edit trip at specified index +2. V requests for details to be overwritten/edited +3. User enters new trip details +4. V writes new details back into data files and displays edited trip in the trip list ++ +Use case ends + +*Extensions* + +[none] +* 3a. V detects an invalid index i.e. index out of range or negative index +* 3a1. V outputs error informing user of invalid index specified +* 3a2. V terminates the command ++ +Use case ends + +[none] +* 3b. V is unable to detect a valid keyword +* 3b1. V outputs error informing user of invalid keyword +* 3b2. V terminates the command ++ +Use case ends + +[discrete] +=== UC03 - Accessing a Trip Folder + +*Precondition:* User is in the hope page and the trip to access exists + +*Guarantee:* User is now in Trip Folder + +*MSS* + +1. User changes directory to specific trip folder in trip list using index +2. V loads data in trip folder and displays items in trip folder ++ +Use case ends + +*Extensions* + +[none] +* 1a. V detects an invalid index i.e. index out of range or negative index +* 1a1. V outputs error informing user of invalid index specified +* 1a2. V terminates the command ++ +Use case ends + +[none] +* 1b. V is unable to detect a valid keyword +* 1b1. V outputs error informing user of invalid keyword +* 1b2. V terminates the command ++ +Use case ends + +[discrete] +=== UC04 - Accessing Pages (Contact List / Trip Itinerary / Journal) + +*Precondition:* User is in the home page + +*Guarantee:* User will be moved to the desired page + +*MSS* + +1. User navigates to a specific trip (UC03) +2. User requests to navigate to the desired page in current trip +3. V loads and displays the desired page ++ +Use case ends + +*Extensions* + +[none] +* 2a. V detects incorrect command to navigate to the page +* 2a1. V outputs error informing user of incorrect command +* 2a2. V terminates the command ++ +Use case ends + +[none] +* 2b. V is unable to detect a valid keyword +* 2b1. V outputs error informing user of invalid keyword +* 2b2. V terminates the command ++ +Use case ends + +[discrete] +=== UC05 - Adding Contact to Contact List in a Trip + +**Precondition: **User is in the Contact List page of a trip + +**Guarantee: **A new contact will be added to the Contact List + +*MSS* + +1. User enters details of the contact +2. V confirms the addition of the contact to the contact list and displays new contact in the contact list ++ +Use case ends + +*Extensions* + +[none] +* 1a. V detects invalid characters in contact entry +* 1a1. V outputs error informing user of invalid characters +* 1a2. V terminates the command ++ +Use case ends + +[none] +* 1b. V detects missing fields in contact entry +* 1b1. V outputs error informing user of missing contact entry +* 1b2. V terminates the command ++ +Use case ends + +[none] +* 1c. V is unable to detect a valid keyword +* 1c1. V outputs error informing user of invalid keyword +* 1c2. V terminates the command ++ +Use case ends + +[discrete] +=== UC06 - Adding Travel Entry into Journal in a Trip + +**Precondition: **User is already in the Journal page of Trip + +**Guarantee: **A new travel entry will be added to the Travel Journal + +*MSS* + +1. User enters details of the travel entry +2. V confirms successful entry and displays new entry in the journal ++ +Use case ends + +*Extensions* + +[none] +* 1a. V detects invalid characters into travel entry +* 1a1. V outputs error informing user of invalid characters +* 1a2. V terminates the command ++ +Use case ends + +[none] +* 1b. V detects missing fields in travel entry +* 1b1. V outputs error informing user of missing travel entry +* 1b2. V terminates the command ++ +Use case ends + +[none] +* 1c. V is unable to detect a valid keyword +* 1c1. V outputs error informing user of invalid keyword +* 1c2. V terminates the command ++ +Use case ends [discrete] -=== Use case: Delete person +=== UC07 - Adding Activities into Trip Itinerary + +**Precondition: **User is already in the Itinerary page of the Trip +**Guarantee: **A new activity will be added to the Trip Itinerary *MSS* -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person +1. User enters activity name, date, time and location +2. V confirms successful entry and displays updated itinerary + -Use case ends. +Use case ends *Extensions* [none] -* 2a. The list is empty. +* 1a. V detects invalid characters into activity entry +* 1a1. V outputs error informing user of invalid characters +* 1a2. V terminates the command + -Use case ends. +Use case ends -* 3a. The given index is invalid. +[none] +* 1b. V detects missing fields in activity entry +* 1b1. V outputs error informing user of missing activity entry +* 1b2. V terminates the command + +Use case ends + [none] -** 3a1. AddressBook shows an error message. +* 1c. V is unable to detect a valid keyword +* 1c1. V outputs error informing user of invalid keyword +* 1c2. V terminates the command + -Use case resumes at step 2. +Use case ends + +[discrete] +=== UC08 - Deleting a Contact in the Contact List of aTrip + +*Precondition:* User is in Contact List page of the Trip -_{More to be added}_ +*Guarantee:* The contact in the Contact List will be deleted + +*MSS* + +[none] +1. User requests to delete a contact in the contact list at the specified index +2. V deletes the contact at the specified index and display the new contact list +3. Use case ends + +*Extensions* + +[none] +* 1a. V detects an invalid index i.e. index out of range or negative index +* 1a1. V outputs error informing user of invalid index specified +* 1a2. V terminates the command ++ +Use case ends + +[none] +* 1b. V is unable to detect a valid keyword +* 1b1. V outputs error informing user of invalid keyword +* 1b2. V terminates the command ++ +Use case ends + + +_{More use cases will be added and current use cases may be edited in the future.}_ [appendix] == Non Functional Requirements . Should work on any <> as long as it has Java `11` or above installed. -. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. +. Should be able to hold up to 100 trips without a noticeable sluggishness in performance for typical usage. . 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. +. Commands should be <> commands as opposed to <>. -_{More to be added}_ +_{More to be added in future development}_ [appendix] == Glossary @@ -358,8 +629,12 @@ _{More to be added}_ [[mainstream-os]] Mainstream OS:: Windows, Linux, Unix, OS-X -[[private-contact-detail]] Private contact detail:: -A contact detail that is not meant to be shared with others +[[one-shot-c]] One-shot Commands:: +Commands that are executed using only a single line of user input. + +[[multi-level-c]] Multi-level Commands:: +Commands that require multiple lines of user input for execution. + [appendix] == Product Survey @@ -423,3 +698,4 @@ _{ more test cases ... }_ .. _{explain how to simulate a missing/corrupted file and the expected behavior}_ _{ more test cases ... }_ + From 3ff2c2561f9f959dc6b9b70bd57388cb019bbb92 Mon Sep 17 00:00:00 2001 From: ranicelin Date: Fri, 28 Feb 2020 20:33:17 +0800 Subject: [PATCH 010/252] Update team portfolios Updated team portfolios and edited minor errors in website .adoc files Fix bugs Update team portfolios Update team portfolios Update team portfolios --- README.adoc | 4 +-- docs/AboutUs.adoc | 20 +++++------ docs/ContactUs.adoc | 3 +- docs/DeveloperGuide.adoc | 4 +-- docs/UserGuide.adoc | 34 +++++++++--------- docs/team/grrrrnt.adoc | 10 ++++++ docs/team/johndoe.adoc | 72 ------------------------------------- docs/team/mikhailfaiz.adoc | 10 ++++++ docs/team/raniceyue.adoc | 10 ++++++ docs/team/vuhieunguyen.adoc | 10 ++++++ docs/team/zsoh97.adoc | 10 ++++++ 11 files changed, 82 insertions(+), 105 deletions(-) create mode 100644 docs/team/grrrrnt.adoc delete mode 100644 docs/team/johndoe.adoc create mode 100644 docs/team/mikhailfaiz.adoc create mode 100644 docs/team/raniceyue.adoc create mode 100644 docs/team/vuhieunguyen.adoc create mode 100644 docs/team/zsoh97.adoc diff --git a/README.adoc b/README.adoc index e8c40773c64..ec3e91a411e 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,4 @@ -= Volant += Volant ifdef::env-github,env-browser[:relfileprefix: docs/] https://travis-ci.org/se-edu/addressbook-level3[image:https://travis-ci.org/AY1920S2-CS2103T-F09-4/main.svg?branch=master[Build Status]] @@ -25,7 +25,7 @@ endif::[] == Acknowledgements -* This application's base code is based off the Address Book application developed by the CS2103T team for the CS2103T software engineering module. +* This application's base code is based off the Address Book application developed by the CS2103T team for the CS2103T software engineering module. * Libraries used: https://openjfx.io/[JavaFX], https://github.com/FasterXML/jackson[Jackson], https://github.com/junit-team/junit5[JUnit5] == Licence : link:LICENSE[MIT] diff --git a/docs/AboutUs.adoc b/docs/AboutUs.adoc index 8965f981936..2f3578e8ee5 100644 --- a/docs/AboutUs.adoc +++ b/docs/AboutUs.adoc @@ -14,45 +14,45 @@ Learn more about us below. === Ranice Tan image::raniceyue.png[width="150", align="left"] -{empty}[https://github.com/raniceyue[github]] [<>] +{empty}[https://github.com/raniceyue[github]] [<>] Role: Team Lead + -Responsibilities: +Responsibilities: ''' === Grant Lee image::grrrrnt.png[width="200", align="left"] -{empty}[https://github.com/grrrrnt[github]] [<>] +{empty}[https://github.com/grrrrnt[github]] [<>] Role: Developer + -Responsibilities: +Responsibilities: ''' === Zeke Soh image::zsoh97.png[width="200", align="left"] -{empty}[https://github.com/zsoh97[github]] [<>] +{empty}[https://github.com/zsoh97[github]] [<>] Role: Developer + -Responsibilities: +Responsibilities: ''' === Vu Hieu Nguyen image::vuhieunguyen.png[width="200", align="left"] -{empty}[https://github.com/vuhieunguyen[github]] [<>] +{empty}[https://github.com/vuhieunguyen[github]] [<>] Role: Developer + -Responsibilities: +Responsibilities: ''' === Mikhail Faiz image::mikhailfaiz.png[width="200", align="left"] -{empty}[https://github.com/mikhailfaiz[github]] [<>] +{empty}[https://github.com/mikhailfaiz[github]] [<>] Role: Developer + -Responsibilities: +Responsibilities: ''' diff --git a/docs/ContactUs.adoc b/docs/ContactUs.adoc index fae55cc86d8..5d62623e9f4 100644 --- a/docs/ContactUs.adoc +++ b/docs/ContactUs.adoc @@ -1,7 +1,6 @@ = Contact Us :site-section: ContactUs :stylesDir: stylesheets - + * *Bug reports, Suggestions* : Post in our https://github.com/AY1920S2-CS2103T-F09-4/main/issues[issue tracker] if you noticed bugs or have suggestions on how to improve. * *Contributing* : We welcome pull requests. Follow the process described https://github.com/oss-generic/process[here] -* *Email us* : You can also reach us at `volant@gmail.com` diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 212eec569c3..a7c45e0b473 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -1,4 +1,4 @@ -= AddressBook Level 3 - Developer Guide += Volant - Developer Guide :site-section: DeveloperGuide :toc: :toc-title: @@ -14,7 +14,7 @@ ifdef::env-github[] endif::[] :repoURL: https://github.com/se-edu/addressbook-level3/tree/master -By: `Team SE-EDU`      Since: `Jun 2016`      Licence: `MIT` +By: `AY1920S2-CS2103T-F09-4`      Since: `Jan 2020`      Licence: `???` == Setting up diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index cc4d4a37b0e..8ed9757f87c 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -18,14 +18,14 @@ By: `AY1920S2-2103T-F09-4` Since: `Jan 2020` Licence: `???` == Introduction -Volant is for those who *prefer to use a desktop app for managing people they meet during their solo travels*. More importantly, Volant is *optimized for those who prefer to work with 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. Interested? Jump to the <> to get started. Enjoy! +Volant is a travel assistant application for solo travellers for who *prefer to use a desktop app for managing people they meet during their solo travels*. More importantly, Volant is *optimized for those who prefer to work with 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. Interested? Jump to the <> to get started. Enjoy! == Quick Start . Ensure you have Java `11` or above installed in your Computer. . Download the latest `volant.jar` link:{https://github.com/AY1920S2-CS2103T-F09-4/main}/releases[v1.1]. . Copy the file to the folder you want to use as the home folder for your Volant. -. Double-click the JAR file to start the app. +. Double-click the JAR file to start the app. . The GUI should appear in a few seconds. + image::Ui.png[width="790"] @@ -58,7 +58,7 @@ Returns to the homepage. If already at the homepage, does nothing. Format: `home` ==== Navigating to a trip page: `gotoTrip` -Navigates to the context of a trip in the trip list. +Navigates to the context of a trip in the trip list. Format: `gotoTrip INDEX` @@ -66,7 +66,7 @@ Format: `gotoTrip INDEX` Example: -* `gotoTrip 12` + +* `gotoTrip 12` + Navigates to the 12th trip on the list of trips. @@ -81,7 +81,7 @@ Format: `add n/TRIP_NAME from/TRIP_START_DATE to/TRIP_END_DATE l/LOCATION` * Please write the date range in the format `from/DD-MM-YYYY` `to/DD-MM-YYYY`. -Examples: +Examples: * `add n/Graduation Trip from/01-02-2020 to/05-02-2020 l/Bangkok` + Adds a trip titled “Graduation Trip” to the list with the specified metadata. @@ -89,7 +89,7 @@ Adds a trip titled “Graduation Trip” to the list with the specified metadata Adds a trip titled “Family Trip” to the list with the specified metadata. ==== Deleting a trip: `delete` -Deletes a trip from the trip list. +Deletes a trip from the trip list. Format: `delete INDEX` @@ -108,14 +108,14 @@ Format: `edit INDEX [n/TRIP_NAME] [from/TRIP_START_DATE] [to/TRIP_END_DATE] [l/L * `INDEX` must be a positive integer within range of the list size. * Please write the date range in the format `from/DD-MM-YYYY` `to/DD-MM-YYYY`. -Example: +Example: * `edit 2 n/School Trip l/France` + Edits the second trip on the list with “School Trip” as name and “France” as location. * `edit 1 from/01-02-2020 to/ 01-03-2020` + Edits the first trip on the list with date range of 1 February to 1 March 2020. -==== Navigating to a feature in the trip page: `goto` +==== Navigating to a feature in the trip page: `goto` Navigates to a specific feature within each trip. Format: `goto FEATURE` @@ -128,7 +128,7 @@ Format: `goto FEATURE` ** `CONTACTS` -Example: +Example: * `goto ITINERARY` + Navigates to the itinerary feature of the current trip. @@ -141,7 +141,7 @@ Adds an activity to the itinerary. Format: `add a/ACTIVITY d/DATE t/TIME l/LOCATION` * Date must be specified in the following format: `DD-MM-YYYY` -* Time must be specified in the following format: `HH:MM` +* Time must be specified in the following format: `HH:MM` Example: @@ -194,7 +194,7 @@ Returns all activities related to climbing. === Journal `[coming in v2.0]` ==== Adding a journal entry: `add` -Adds a journal entry to the entry list. +Adds a journal entry to the entry list. Format: `add [c/CONTENT] [img/FILE_DIRECTORY] d/DATE t/TIME [l/LOCATION] [f/FEELING] [w/WEATHER]` @@ -206,9 +206,9 @@ Format: `add [c/CONTENT] [img/FILE_DIRECTORY] d/DATE t/TIME [l/LOCATION] [f/FEEL ** sad ** excited ** worried -** scared +** scared ** surprised -** confused +** confused Example: @@ -229,18 +229,18 @@ Format: `sort [SORT_TYPE]` * Default sorting of journal entries is in order of old to new -Example: +Example: -* `sort location` + +* `sort location` + Sorts the list of journal entries sorted by locations. ==== Deleting a journal entry: `delete` -Deletes an entire journal entry or a specific metadata within a journal entry based on the chosen index number. +Deletes an entire journal entry or a specific metadata within a journal entry based on the chosen index number. Format: `delete INDEX` ==== Editing a journal entry: `edit` -Edits specific metadata within a chosen journal entry using index number. +Edits specific metadata within a chosen journal entry using index number. Format: `edit INDEX [c/NEW_CONTENT] [img/NEW_FILE_DIRECTORY] [d/NEW_DATE] [t/NEW_TIME] [l/NEW_LOCATION] [f/NEW_FEELING] [w/NEW_WEATHER]` diff --git a/docs/team/grrrrnt.adoc b/docs/team/grrrrnt.adoc new file mode 100644 index 00000000000..0d5cd3d8c10 --- /dev/null +++ b/docs/team/grrrrnt.adoc @@ -0,0 +1,10 @@ += Grant Lee - Project Portfolio +:site-section: AboutUs +:imagesDir: ../images +:stylesDir: ../stylesheets + +== PROJECT: Volant + +--- + +_{To be updated in the future}_ diff --git a/docs/team/johndoe.adoc b/docs/team/johndoe.adoc deleted file mode 100644 index f39e76e49b2..00000000000 --- a/docs/team/johndoe.adoc +++ /dev/null @@ -1,72 +0,0 @@ -= John Doe - Project Portfolio -:site-section: AboutUs -:imagesDir: ../images -:stylesDir: ../stylesheets - -== PROJECT: AddressBook - Level 3 - ---- - -== Overview - -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. - -== Summary of contributions - -* *Major enhancement*: added *the ability to undo/redo previous commands* -** 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. -** 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. -** 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. -** 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}_ - -* *Minor enhancement*: added a history command that allows the user to navigate to previous commands using up/down keys. - -* *Code contributed*: [https://github.com[Functional code]] [https://github.com[Test code]] _{give links to collated code files}_ - -* *Other contributions*: - -** Project management: -*** Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub -** Enhancements to existing features: -*** Updated the GUI color scheme (Pull requests https://github.com[#33], https://github.com[#34]) -*** Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests https://github.com[#36], https://github.com[#38]) -** Documentation: -*** Did cosmetic tweaks to existing contents of the User Guide: https://github.com[#14] -** Community: -*** PRs reviewed (with non-trivial review comments): https://github.com[#12], https://github.com[#32], https://github.com[#19], https://github.com[#42] -*** Contributed to forum discussions (examples: https://github.com[1], https://github.com[2], https://github.com[3], https://github.com[4]) -*** Reported bugs and suggestions for other teams in the class (examples: https://github.com[1], https://github.com[2], https://github.com[3]) -*** Some parts of the history feature I added was adopted by several other class mates (https://github.com[1], https://github.com[2]) -** Tools: -*** Integrated a third party library (Natty) to the project (https://github.com[#42]) -*** Integrated a new Github plugin (CircleCI) to the team repo - -_{you can add/remove categories in the list above}_ - -== Contributions to the User Guide - - -|=== -|_Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users._ -|=== - -include::../UserGuide.adoc[tag=delete] - -include::../UserGuide.adoc[tag=dataencryption] - -== Contributions to the Developer Guide - -|=== -|_Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project._ -|=== - -include::../DeveloperGuide.adoc[tag=undoredo] - -include::../DeveloperGuide.adoc[tag=dataencryption] - - -== PROJECT: PowerPointLabs - ---- - -_{Optionally, you may include other projects in your portfolio.}_ diff --git a/docs/team/mikhailfaiz.adoc b/docs/team/mikhailfaiz.adoc new file mode 100644 index 00000000000..2ab33da43a5 --- /dev/null +++ b/docs/team/mikhailfaiz.adoc @@ -0,0 +1,10 @@ += Mikhail Faiz - Project Portfolio +:site-section: AboutUs +:imagesDir: ../images +:stylesDir: ../stylesheets + +== PROJECT: Volant + +--- + +_{To be updated in the future}_ diff --git a/docs/team/raniceyue.adoc b/docs/team/raniceyue.adoc new file mode 100644 index 00000000000..ab25729b15f --- /dev/null +++ b/docs/team/raniceyue.adoc @@ -0,0 +1,10 @@ += Ranice Tan - Project Portfolio +:site-section: AboutUs +:imagesDir: ../images +:stylesDir: ../stylesheets + +== PROJECT: Volant + +--- + +_{To be updated in the future}_ diff --git a/docs/team/vuhieunguyen.adoc b/docs/team/vuhieunguyen.adoc new file mode 100644 index 00000000000..7fa8cfa087e --- /dev/null +++ b/docs/team/vuhieunguyen.adoc @@ -0,0 +1,10 @@ += Nguyen - Project Portfolio +:site-section: AboutUs +:imagesDir: ../images +:stylesDir: ../stylesheets + +== PROJECT: Volant + +--- + +_{To be updated in the future}_ diff --git a/docs/team/zsoh97.adoc b/docs/team/zsoh97.adoc new file mode 100644 index 00000000000..5e8b9121932 --- /dev/null +++ b/docs/team/zsoh97.adoc @@ -0,0 +1,10 @@ += Zeke Soh - Project Portfolio +:site-section: AboutUs +:imagesDir: ../images +:stylesDir: ../stylesheets + +== PROJECT: Volant + +--- + +_{To be updated in the future}_ From ac0f75d16502ca3a682a13c85a8e5d1e57fe990c Mon Sep 17 00:00:00 2001 From: ranicelin Date: Fri, 13 Mar 2020 06:47:35 +0800 Subject: [PATCH 011/252] Update AddressBook Refactor and remove all references to address book Implement `goto` command to access trips Add JavaFX files for trip page panel --- LICENSE | 4 +- docs/DevOps.adoc | 2 +- docs/DeveloperGuide.adoc | 74 +- docs/LearningOutcomes.adoc | 4 +- docs/SettingUp.adoc | 2 +- docs/Testing.adoc | 6 +- docs/UserGuide.adoc | 44 +- docs/stylesheets/asciidoctor.css | 2067 +++++++++++++---- docs/team/johndoe.adoc | 2 +- docs/templates/LICENSE | 4 +- docs/tutorials/AddRemark.adoc | 38 +- docs/tutorials/RemovingFields.adoc | 26 +- docs/tutorials/TracingCode.adoc | 6 +- .../seedu/address/commons/core/Messages.java | 13 - src/main/java/seedu/address/logic/Logic.java | 50 - .../address/logic/commands/AddCommand.java | 67 - .../address/logic/commands/ClearCommand.java | 23 - .../address/logic/commands/EditCommand.java | 226 -- .../address/logic/commands/ListCommand.java | 24 - .../logic/parser/AddCommandParser.java | 60 - .../seedu/address/logic/parser/CliSyntax.java | 15 - .../java/seedu/address/model/AddressBook.java | 120 - src/main/java/seedu/address/model/Model.java | 87 - .../seedu/address/model/ModelManager.java | 151 -- .../seedu/address/model/person/Email.java | 67 - .../seedu/address/model/person/Person.java | 120 - .../seedu/address/model/person/Phone.java | 53 - .../model/person/UniquePersonList.java | 137 -- .../exceptions/PersonNotFoundException.java | 6 - .../address/model/util/SampleDataUtil.java | 60 - .../address/storage/AddressBookStorage.java | 45 - .../address/storage/JsonAdaptedPerson.java | 109 - .../storage/JsonAddressBookStorage.java | 80 - .../storage/JsonSerializableAddressBook.java | 60 - .../java/seedu/address/storage/Storage.java | 32 - .../seedu/address/storage/StorageManager.java | 77 - .../java/seedu/address/ui/PersonCard.java | 74 - .../seedu/address/ui/PersonListPanel.java | 46 - .../{address => volant}/AppParameters.java | 6 +- .../java/seedu/{address => volant}/Main.java | 2 +- .../seedu/{address => volant}/MainApp.java | 78 +- .../commons/core/Config.java | 2 +- .../commons/core/GuiSettings.java | 2 +- .../commons/core/LogsCenter.java | 2 +- .../seedu/volant/commons/core/Messages.java | 14 + .../commons/core/Version.java | 2 +- .../commons/core/index/Index.java | 2 +- .../exceptions/DataConversionException.java | 2 +- .../exceptions/IllegalValueException.java | 2 +- .../seedu/volant/commons/logic/Logic.java | 37 + .../commons}/logic/LogicManager.java | 47 +- .../java/seedu/volant/commons/logic/Page.java | 8 + .../commons}/logic/commands/Command.java | 6 +- .../logic/commands/CommandResult.java | 53 +- .../commons}/logic/commands/ExitCommand.java | 8 +- .../commons/logic/commands/GotoCommand.java | 8 + .../commons}/logic/commands/HelpCommand.java | 6 +- .../logic/parser/ArgumentMultimap.java | 2 +- .../logic/parser/ArgumentTokenizer.java | 2 +- .../commons/logic/parser/CliSyntax.java | 13 + .../logic/parser/GotoCommandParser.java | 25 + .../commons/logic/parser/InputParser.java} | 36 +- .../commons}/logic/parser/Parser.java | 6 +- .../commons}/logic/parser/ParserUtil.java | 67 +- .../commons}/logic/parser/Prefix.java | 2 +- .../commons/util/AppUtil.java | 4 +- .../commons/util/CollectionUtil.java | 2 +- .../commons/util/ConfigUtil.java | 6 +- .../commons/util/FileUtil.java | 2 +- .../commons/util/JsonUtil.java | 6 +- .../commons/util/StringUtil.java | 4 +- .../homepage/logic/commands/AddCommand.java | 63 + .../homepage/logic/commands/ClearCommand.java | 25 + .../logic/commands/DeleteCommand.java | 30 +- .../homepage/logic/commands/EditCommand.java | 187 ++ .../homepage}/logic/commands/FindCommand.java | 20 +- .../logic/commands/GotoTripCommand.java | 40 + .../homepage/logic/commands/ListCommand.java | 26 + .../commands/exceptions/CommandException.java | 2 +- .../logic/parser/AddCommandParser.java | 56 + .../logic/parser/DeleteCommandParser.java | 12 +- .../logic/parser/EditCommandParser.java | 38 +- .../logic/parser/FindCommandParser.java | 11 +- .../parser/exceptions/ParseException.java | 4 +- .../seedu/volant/homepage/model/Model.java | 95 + .../volant/homepage/model/ModelManager.java | 158 ++ .../homepage/model/ReadOnlyTripList.java} | 9 +- .../homepage}/model/ReadOnlyUserPrefs.java | 6 +- .../seedu/volant/homepage/model/TripList.java | 125 + .../homepage}/model/UserPrefs.java | 10 +- .../homepage}/model/tag/Tag.java | 4 +- .../volant/homepage/model/trip/DateRange.java | 53 + .../homepage/model/trip/Location.java} | 28 +- .../homepage/model/trip}/Name.java | 18 +- .../trip}/NameContainsKeywordsPredicate.java | 12 +- .../volant/homepage/model/trip/Trip.java | 107 + .../homepage/model/trip/TripFeatureList.java | 42 + .../homepage/model/trip/UniqueTripList.java | 142 ++ .../exceptions/DuplicateTripException.java} | 6 +- .../exceptions/PersonNotFoundException.java | 6 + .../homepage/model/util/SampleDataUtil.java | 44 + .../storage/JsonAdaptedTag.java | 6 +- .../seedu/volant/storage/JsonAdaptedTrip.java | 80 + .../storage/JsonSerializableTripList.java | 60 + .../storage/JsonUserPrefsStorage.java | 10 +- .../volant/storage/JsonVolantStorage.java | 80 + .../java/seedu/volant/storage/Storage.java | 32 + .../seedu/volant/storage/StorageManager.java | 77 + .../storage/UserPrefsStorage.java | 12 +- .../seedu/volant/storage/VolantStorage.java | 46 + .../trippage/logic/TrippageLogicManager.java | 34 + .../logic/commands/GotoItineraryCommand.java | 14 + .../parser/GotoItineraryCommandParser.java | 4 + .../seedu/volant/trippage/model/Feature.java | 8 + .../volant/trippage/model/Itinerary.java | 21 + .../seedu/volant/trippage/model/Journal.java | 21 + .../volant/trippage/model/TripFeature.java | 8 + .../{address => volant}/ui/CommandBox.java | 13 +- .../{address => volant}/ui/HelpWindow.java | 4 +- .../{address => volant}/ui/MainWindow.java | 102 +- .../{address => volant}/ui/ResultDisplay.java | 2 +- .../ui/StatusBarFooter.java | 2 +- .../java/seedu/{address => volant}/ui/Ui.java | 2 +- .../{address => volant}/ui/UiManager.java | 14 +- .../seedu/{address => volant}/ui/UiPart.java | 13 +- .../ui/pages/homepage/TripListCard.java | 64 + .../ui/pages/homepage/TripListPanel.java | 47 + .../ui/pages/trippage/ItineraryCard.java | 27 + .../volant/ui/pages/trippage/JournalCard.java | 28 + .../volant/ui/pages/trippage/TripPage.java | 70 + src/main/resources/view/DarkTheme.css | 1 + src/main/resources/view/ItineraryCard.fxml | 24 + src/main/resources/view/JournalCard.fxml | 26 + src/main/resources/view/MainWindow.fxml | 7 +- ...{PersonListCard.fxml => TripListCard.fxml} | 6 +- ...ersonListPanel.fxml => TripListPanel.fxml} | 2 +- src/main/resources/view/TripPage.fxml | 19 + .../commands/AddCommandIntegrationTest.java | 45 - .../address/model/person/AddressTest.java | 36 - .../model/person/UniquePersonListTest.java | 170 -- .../address/testutil/AddressBookBuilder.java | 34 - .../address/testutil/TypicalPersons.java | 76 - .../AppParametersTest.java | 2 +- .../commons/core/ConfigTest.java | 2 +- .../commons/core/VersionTest.java | 4 +- .../commons/core/index/IndexTest.java | 4 +- .../commons/util/AppUtilTest.java | 4 +- .../commons/util/CollectionUtilTest.java | 6 +- .../commons/util/ConfigUtilTest.java | 8 +- .../commons/util/FileUtilTest.java | 4 +- .../commons/util/JsonUtilTest.java | 6 +- .../commons/util/StringUtilTest.java | 4 +- .../homepage}/logic/LogicManagerTest.java | 74 +- .../commands/AddCommandIntegrationTest.java | 45 + .../logic/commands/AddCommandTest.java | 93 +- .../logic/commands/ClearCommandTest.java | 16 +- .../logic/commands/CommandResultTest.java | 3 +- .../logic/commands/CommandTestUtil.java | 44 +- .../logic/commands/DeleteCommandTest.java | 40 +- .../logic/commands/EditCommandTest.java | 92 +- .../commands/EditTripDescriptorTest.java} | 22 +- .../logic/commands/ExitCommandTest.java | 12 +- .../logic/commands/FindCommandTest.java | 24 +- .../logic/commands/HelpCommandTest.java | 12 +- .../logic/commands/ListCommandTest.java | 16 +- .../logic/parser/AddCommandParserTest.java | 95 +- .../logic/parser/ArgumentTokenizerTest.java | 5 +- .../logic/parser/CommandParserTestUtil.java | 7 +- .../logic/parser/DeleteCommandParserTest.java | 12 +- .../logic/parser/EditCommandParserTest.java | 84 +- .../logic/parser/FindCommandParserTest.java | 12 +- .../logic/parser/LocationBookParserTest.java} | 59 +- .../logic/parser/ParserUtilTest.java | 27 +- .../homepage/model/LocationBookTest.java} | 50 +- .../homepage}/model/ModelManagerTest.java | 22 +- .../homepage}/model/UserPrefsTest.java | 4 +- .../homepage}/model/tag/TagTest.java | 4 +- .../homepage/model/trip}/EmailTest.java | 4 +- .../homepage/model/trip/LocationTest.java | 36 + .../NameContainsKeywordsPredicateTest.java | 6 +- .../homepage/model/trip}/NameTest.java | 4 +- .../homepage/model/trip}/PhoneTest.java | 4 +- .../homepage/model/trip/TripTest.java} | 34 +- .../model/trip/UniqueTripListTest.java | 170 ++ .../storage/JsonAdaptedTripTest.java} | 54 +- .../storage/JsonLocationBookStorageTest.java} | 44 +- .../JsonSerializableLocationBookTest.java} | 34 +- .../storage/JsonUserPrefsStorageTest.java | 10 +- .../storage/StorageManagerTest.java | 24 +- .../volant/testutil/AddressBookBuilder.java | 34 + .../{address => volant}/testutil/Assert.java | 2 +- .../testutil/EditPersonDescriptorBuilder.java | 31 +- .../testutil/PersonBuilder.java | 49 +- .../testutil/PersonUtil.java | 42 +- .../testutil/SerializableTestClass.java | 2 +- .../testutil/TestUtil.java | 16 +- .../testutil/TypicalIndexes.java | 4 +- .../seedu/volant/testutil/TypicalPersons.java | 76 + .../ui/TestFxmlObject.java | 2 +- .../{address => volant}/ui/UiPartTest.java | 6 +- .../resources/view/UiPartTest/validFile.fxml | 2 +- .../view/UiPartTest/validFileWithFxRoot.fxml | 2 +- 202 files changed, 5256 insertions(+), 3625 deletions(-) delete mode 100644 src/main/java/seedu/address/commons/core/Messages.java delete mode 100644 src/main/java/seedu/address/logic/Logic.java delete mode 100644 src/main/java/seedu/address/logic/commands/AddCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/ClearCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/EditCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/ListCommand.java delete mode 100644 src/main/java/seedu/address/logic/parser/AddCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/CliSyntax.java delete mode 100644 src/main/java/seedu/address/model/AddressBook.java delete mode 100644 src/main/java/seedu/address/model/Model.java delete mode 100644 src/main/java/seedu/address/model/ModelManager.java delete mode 100644 src/main/java/seedu/address/model/person/Email.java delete mode 100644 src/main/java/seedu/address/model/person/Person.java delete mode 100644 src/main/java/seedu/address/model/person/Phone.java delete mode 100644 src/main/java/seedu/address/model/person/UniquePersonList.java delete mode 100644 src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java delete mode 100644 src/main/java/seedu/address/model/util/SampleDataUtil.java delete mode 100644 src/main/java/seedu/address/storage/AddressBookStorage.java delete mode 100644 src/main/java/seedu/address/storage/JsonAdaptedPerson.java delete mode 100644 src/main/java/seedu/address/storage/JsonAddressBookStorage.java delete mode 100644 src/main/java/seedu/address/storage/JsonSerializableAddressBook.java delete mode 100644 src/main/java/seedu/address/storage/Storage.java delete mode 100644 src/main/java/seedu/address/storage/StorageManager.java delete mode 100644 src/main/java/seedu/address/ui/PersonCard.java delete mode 100644 src/main/java/seedu/address/ui/PersonListPanel.java rename src/main/java/seedu/{address => volant}/AppParameters.java (93%) rename src/main/java/seedu/{address => volant}/Main.java (97%) rename src/main/java/seedu/{address => volant}/MainApp.java (74%) rename src/main/java/seedu/{address => volant}/commons/core/Config.java (97%) rename src/main/java/seedu/{address => volant}/commons/core/GuiSettings.java (98%) rename src/main/java/seedu/{address => volant}/commons/core/LogsCenter.java (99%) create mode 100644 src/main/java/seedu/volant/commons/core/Messages.java rename src/main/java/seedu/{address => volant}/commons/core/Version.java (98%) rename src/main/java/seedu/{address => volant}/commons/core/index/Index.java (97%) rename src/main/java/seedu/{address => volant}/commons/exceptions/DataConversionException.java (84%) rename src/main/java/seedu/{address => volant}/commons/exceptions/IllegalValueException.java (93%) create mode 100644 src/main/java/seedu/volant/commons/logic/Logic.java rename src/main/java/seedu/{address => volant/commons}/logic/LogicManager.java (53%) create mode 100644 src/main/java/seedu/volant/commons/logic/Page.java rename src/main/java/seedu/{address => volant/commons}/logic/commands/Command.java (76%) rename src/main/java/seedu/{address => volant/commons}/logic/commands/CommandResult.java (56%) rename src/main/java/seedu/{address => volant/commons}/logic/commands/ExitCommand.java (70%) create mode 100644 src/main/java/seedu/volant/commons/logic/commands/GotoCommand.java rename src/main/java/seedu/{address => volant/commons}/logic/commands/HelpCommand.java (84%) rename src/main/java/seedu/{address => volant/commons}/logic/parser/ArgumentMultimap.java (98%) rename src/main/java/seedu/{address => volant/commons}/logic/parser/ArgumentTokenizer.java (99%) create mode 100644 src/main/java/seedu/volant/commons/logic/parser/CliSyntax.java create mode 100644 src/main/java/seedu/volant/commons/logic/parser/GotoCommandParser.java rename src/main/java/seedu/{address/logic/parser/AddressBookParser.java => volant/commons/logic/parser/InputParser.java} (60%) rename src/main/java/seedu/{address => volant/commons}/logic/parser/Parser.java (69%) rename src/main/java/seedu/{address => volant/commons}/logic/parser/ParserUtil.java (58%) rename src/main/java/seedu/{address => volant/commons}/logic/parser/Prefix.java (94%) rename src/main/java/seedu/{address => volant}/commons/util/AppUtil.java (94%) rename src/main/java/seedu/{address => volant}/commons/util/CollectionUtil.java (96%) rename src/main/java/seedu/{address => volant}/commons/util/ConfigUtil.java (77%) rename src/main/java/seedu/{address => volant}/commons/util/FileUtil.java (98%) rename src/main/java/seedu/{address => volant}/commons/util/JsonUtil.java (97%) rename src/main/java/seedu/{address => volant}/commons/util/StringUtil.java (95%) create mode 100644 src/main/java/seedu/volant/homepage/logic/commands/AddCommand.java create mode 100644 src/main/java/seedu/volant/homepage/logic/commands/ClearCommand.java rename src/main/java/seedu/{address => volant/homepage}/logic/commands/DeleteCommand.java (58%) create mode 100644 src/main/java/seedu/volant/homepage/logic/commands/EditCommand.java rename src/main/java/seedu/{address => volant/homepage}/logic/commands/FindCommand.java (60%) create mode 100644 src/main/java/seedu/volant/homepage/logic/commands/GotoTripCommand.java create mode 100644 src/main/java/seedu/volant/homepage/logic/commands/ListCommand.java rename src/main/java/seedu/{address => volant/homepage}/logic/commands/exceptions/CommandException.java (88%) create mode 100644 src/main/java/seedu/volant/homepage/logic/parser/AddCommandParser.java rename src/main/java/seedu/{address => volant/homepage}/logic/parser/DeleteCommandParser.java (65%) rename src/main/java/seedu/{address => volant/homepage}/logic/parser/EditCommandParser.java (60%) rename src/main/java/seedu/{address => volant/homepage}/logic/parser/FindCommandParser.java (69%) rename src/main/java/seedu/{address => volant/homepage}/logic/parser/exceptions/ParseException.java (71%) create mode 100644 src/main/java/seedu/volant/homepage/model/Model.java create mode 100644 src/main/java/seedu/volant/homepage/model/ModelManager.java rename src/main/java/seedu/{address/model/ReadOnlyAddressBook.java => volant/homepage/model/ReadOnlyTripList.java} (58%) rename src/main/java/seedu/{address => volant/homepage}/model/ReadOnlyUserPrefs.java (57%) create mode 100644 src/main/java/seedu/volant/homepage/model/TripList.java rename src/main/java/seedu/{address => volant/homepage}/model/UserPrefs.java (88%) rename src/main/java/seedu/{address => volant/homepage}/model/tag/Tag.java (92%) create mode 100644 src/main/java/seedu/volant/homepage/model/trip/DateRange.java rename src/main/java/seedu/{address/model/person/Address.java => volant/homepage/model/trip/Location.java} (58%) rename src/main/java/seedu/{address/model/person => volant/homepage/model/trip}/Name.java (71%) rename src/main/java/seedu/{address/model/person => volant/homepage/model/trip}/NameContainsKeywordsPredicate.java (73%) create mode 100644 src/main/java/seedu/volant/homepage/model/trip/Trip.java create mode 100644 src/main/java/seedu/volant/homepage/model/trip/TripFeatureList.java create mode 100644 src/main/java/seedu/volant/homepage/model/trip/UniqueTripList.java rename src/main/java/seedu/{address/model/person/exceptions/DuplicatePersonException.java => volant/homepage/model/trip/exceptions/DuplicateTripException.java} (58%) create mode 100644 src/main/java/seedu/volant/homepage/model/trip/exceptions/PersonNotFoundException.java create mode 100644 src/main/java/seedu/volant/homepage/model/util/SampleDataUtil.java rename src/main/java/seedu/{address => volant}/storage/JsonAdaptedTag.java (88%) create mode 100644 src/main/java/seedu/volant/storage/JsonAdaptedTrip.java create mode 100644 src/main/java/seedu/volant/storage/JsonSerializableTripList.java rename src/main/java/seedu/{address => volant}/storage/JsonUserPrefsStorage.java (82%) create mode 100644 src/main/java/seedu/volant/storage/JsonVolantStorage.java create mode 100644 src/main/java/seedu/volant/storage/Storage.java create mode 100644 src/main/java/seedu/volant/storage/StorageManager.java rename src/main/java/seedu/{address => volant}/storage/UserPrefsStorage.java (69%) create mode 100644 src/main/java/seedu/volant/storage/VolantStorage.java create mode 100644 src/main/java/seedu/volant/trippage/logic/TrippageLogicManager.java create mode 100644 src/main/java/seedu/volant/trippage/logic/commands/GotoItineraryCommand.java create mode 100644 src/main/java/seedu/volant/trippage/logic/parser/GotoItineraryCommandParser.java create mode 100644 src/main/java/seedu/volant/trippage/model/Feature.java create mode 100644 src/main/java/seedu/volant/trippage/model/Itinerary.java create mode 100644 src/main/java/seedu/volant/trippage/model/Journal.java create mode 100644 src/main/java/seedu/volant/trippage/model/TripFeature.java rename src/main/java/seedu/{address => volant}/ui/CommandBox.java (87%) rename src/main/java/seedu/{address => volant}/ui/HelpWindow.java (97%) rename src/main/java/seedu/{address => volant}/ui/MainWindow.java (67%) rename src/main/java/seedu/{address => volant}/ui/ResultDisplay.java (95%) rename src/main/java/seedu/{address => volant}/ui/StatusBarFooter.java (95%) rename src/main/java/seedu/{address => volant}/ui/Ui.java (86%) rename src/main/java/seedu/{address => volant}/ui/UiManager.java (90%) rename src/main/java/seedu/{address => volant}/ui/UiPart.java (90%) create mode 100644 src/main/java/seedu/volant/ui/pages/homepage/TripListCard.java create mode 100644 src/main/java/seedu/volant/ui/pages/homepage/TripListPanel.java create mode 100644 src/main/java/seedu/volant/ui/pages/trippage/ItineraryCard.java create mode 100644 src/main/java/seedu/volant/ui/pages/trippage/JournalCard.java create mode 100644 src/main/java/seedu/volant/ui/pages/trippage/TripPage.java create mode 100644 src/main/resources/view/ItineraryCard.fxml create mode 100644 src/main/resources/view/JournalCard.fxml rename src/main/resources/view/{PersonListCard.fxml => TripListCard.fxml} (82%) rename src/main/resources/view/{PersonListPanel.fxml => TripListPanel.fxml} (77%) create mode 100644 src/main/resources/view/TripPage.fxml delete mode 100644 src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java delete mode 100644 src/test/java/seedu/address/model/person/AddressTest.java delete mode 100644 src/test/java/seedu/address/model/person/UniquePersonListTest.java delete mode 100644 src/test/java/seedu/address/testutil/AddressBookBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/TypicalPersons.java rename src/test/java/seedu/{address => volant}/AppParametersTest.java (98%) rename src/test/java/seedu/{address => volant}/commons/core/ConfigTest.java (95%) rename src/test/java/seedu/{address => volant}/commons/core/VersionTest.java (98%) rename src/test/java/seedu/{address => volant}/commons/core/index/IndexTest.java (95%) rename src/test/java/seedu/{address => volant}/commons/util/AppUtilTest.java (91%) rename src/test/java/seedu/{address => volant}/commons/util/CollectionUtilTest.java (96%) rename src/test/java/seedu/{address => volant}/commons/util/ConfigUtilTest.java (94%) rename src/test/java/seedu/{address => volant}/commons/util/FileUtilTest.java (84%) rename src/test/java/seedu/{address => volant}/commons/util/JsonUtilTest.java (92%) rename src/test/java/seedu/{address => volant}/commons/util/StringUtilTest.java (98%) rename src/test/java/seedu/{address => volant/homepage}/logic/LogicManagerTest.java (67%) create mode 100644 src/test/java/seedu/volant/homepage/logic/commands/AddCommandIntegrationTest.java rename src/test/java/seedu/{address => volant/homepage}/logic/commands/AddCommandTest.java (62%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/ClearCommandTest.java (60%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/CommandResultTest.java (95%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/CommandTestUtil.java (77%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/DeleteCommandTest.java (72%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/EditCommandTest.java (62%) rename src/test/java/seedu/{address/logic/commands/EditPersonDescriptorTest.java => volant/homepage/logic/commands/EditTripDescriptorTest.java} (68%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/ExitCommandTest.java (50%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/FindCommandTest.java (80%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/HelpCommandTest.java (50%) rename src/test/java/seedu/{address => volant/homepage}/logic/commands/ListCommandTest.java (63%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/AddCommandParserTest.java (57%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/ArgumentTokenizerTest.java (96%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/CommandParserTestUtil.java (84%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/DeleteCommandParserTest.java (66%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/EditCommandParserTest.java (72%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/FindCommandParserTest.java (65%) rename src/test/java/seedu/{address/logic/parser/AddressBookParserTest.java => volant/homepage/logic/parser/LocationBookParserTest.java} (65%) rename src/test/java/seedu/{address => volant/homepage}/logic/parser/ParserUtilTest.java (89%) rename src/test/java/seedu/{address/model/AddressBookTest.java => volant/homepage/model/LocationBookTest.java} (54%) rename src/test/java/seedu/{address => volant/homepage}/model/ModelManagerTest.java (86%) rename src/test/java/seedu/{address => volant/homepage}/model/UserPrefsTest.java (85%) rename src/test/java/seedu/{address => volant/homepage}/model/tag/TagTest.java (85%) rename src/test/java/seedu/{address/model/person => volant/homepage/model/trip}/EmailTest.java (96%) create mode 100644 src/test/java/seedu/volant/homepage/model/trip/LocationTest.java rename src/test/java/seedu/{address/model/person => volant/homepage/model/trip}/NameContainsKeywordsPredicateTest.java (96%) rename src/test/java/seedu/{address/model/person => volant/homepage/model/trip}/NameTest.java (93%) rename src/test/java/seedu/{address/model/person => volant/homepage/model/trip}/PhoneTest.java (93%) rename src/test/java/seedu/{address/model/person/PersonTest.java => volant/homepage/model/trip/TripTest.java} (72%) create mode 100644 src/test/java/seedu/volant/homepage/model/trip/UniqueTripListTest.java rename src/test/java/seedu/{address/storage/JsonAdaptedPersonTest.java => volant/storage/JsonAdaptedTripTest.java} (63%) rename src/test/java/seedu/{address/storage/JsonAddressBookStorageTest.java => volant/storage/JsonLocationBookStorageTest.java} (68%) rename src/test/java/seedu/{address/storage/JsonSerializableAddressBookTest.java => volant/storage/JsonSerializableLocationBookTest.java} (52%) rename src/test/java/seedu/{address => volant}/storage/JsonUserPrefsStorageTest.java (94%) rename src/test/java/seedu/{address => volant}/storage/StorageManagerTest.java (72%) create mode 100644 src/test/java/seedu/volant/testutil/AddressBookBuilder.java rename src/test/java/seedu/{address => volant}/testutil/Assert.java (97%) rename src/test/java/seedu/{address => volant}/testutil/EditPersonDescriptorBuilder.java (70%) rename src/test/java/seedu/{address => volant}/testutil/PersonBuilder.java (52%) rename src/test/java/seedu/{address => volant}/testutil/PersonUtil.java (52%) rename src/test/java/seedu/{address => volant}/testutil/SerializableTestClass.java (98%) rename src/test/java/seedu/{address => volant}/testutil/TestUtil.java (72%) rename src/test/java/seedu/{address => volant}/testutil/TypicalIndexes.java (81%) create mode 100644 src/test/java/seedu/volant/testutil/TypicalPersons.java rename src/test/java/seedu/{address => volant}/ui/TestFxmlObject.java (96%) rename src/test/java/seedu/{address => volant}/ui/UiPartTest.java (97%) diff --git a/LICENSE b/LICENSE index 39b3478982c..d15a283f72d 100644 --- a/LICENSE +++ b/LICENSE @@ -2,11 +2,11 @@ MIT License Copyright (c) 2016 Software Engineering Education - FOSS Resources -Permission is hereby granted, free of charge, to any person obtaining a copy +Permission is hereby granted, free of charge, to any trip obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is +copies of the Software, and to permit trips to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all diff --git a/docs/DevOps.adoc b/docs/DevOps.adoc index 2aa5a6bc0c1..d0a766897a9 100644 --- a/docs/DevOps.adoc +++ b/docs/DevOps.adoc @@ -34,7 +34,7 @@ When a pull request has changes to asciidoc files, you can use https://www.netli Here are the steps to create a new release. -. Update the version number in link:{repoURL}/src/main/java/seedu/address/MainApp.java[`MainApp.java`]. +. Update the version number in link:{repoURL}/src/main/java/seedu/location/MainApp.java[`MainApp.java`]. . Generate a JAR file <>. . Tag the repo with the version number. e.g. `v0.1` . https://help.github.com/articles/creating-releases/[Create a new release using GitHub] and upload the JAR file you created. diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 3d65905a853..62ac5e99998 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -34,7 +34,7 @@ The *_Architecture Diagram_* given above explains the high-level design of the A The `.puml` files used to create diagrams in this document can be found in the link:{repoURL}/docs/diagrams/[diagrams] folder. Refer to the <> to learn how to create and edit diagrams. -`Main` has two classes called link:{repoURL}/src/main/java/seedu/address/Main.java[`Main`] and link:{repoURL}/src/main/java/seedu/address/MainApp.java[`MainApp`]. It is responsible for, +`Main` has two classes called link:{repoURL}/src/main/java/seedu/location/Main.java[`Main`] and link:{repoURL}/src/main/java/seedu/location/MainApp.java[`MainApp`]. It is responsible for, * At app launch: Initializes the components in the correct sequence, and connects them up with each other. * At shut down: Shuts down the components and invokes cleanup method where necessary. @@ -77,11 +77,11 @@ The sections below give more details of each component. .Structure of the UI Component image::UiClassDiagram.png[] -*API* : link:{repoURL}/src/main/java/seedu/address/ui/Ui.java[`Ui.java`] +*API* : link:{repoURL}/src/main/java/seedu/location/ui/Ui.java[`Ui.java`] 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. -The `UI` component uses 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 link:{repoURL}/src/main/java/seedu/address/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`] +The `UI` component uses 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 link:{repoURL}/src/main/java/seedu/location/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`] The `UI` component, @@ -96,11 +96,11 @@ The `UI` component, image::LogicClassDiagram.png[] *API* : -link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`] +link:{repoURL}/src/main/java/seedu/location/logic/Logic.java[`Logic.java`] . `Logic` uses the `AddressBookParser` class to parse the user command. . This results in a `Command` object which is executed by the `LogicManager`. -. The command execution can affect the `Model` (e.g. adding a person). +. The command execution can affect the `Model` (e.g. adding a trip). . The result of the command execution is encapsulated as a `CommandResult` object which is passed back to the `Ui`. . In addition, the `CommandResult` object can also instruct the `Ui` to perform certain actions, such as displaying help to the user. @@ -117,7 +117,7 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X .Structure of the Model Component image::ModelClassDiagram.png[] -*API* : link:{repoURL}/src/main/java/seedu/address/model/Model.java[`Model.java`] +*API* : link:{repoURL}/src/main/java/seedu/location/model/Model.java[`Model.java`] The `Model`, @@ -137,7 +137,7 @@ image:BetterModelClassDiagram.png[] .Structure of the Storage Component image::StorageClassDiagram.png[] -*API* : link:{repoURL}/src/main/java/seedu/address/storage/Storage.java[`Storage.java`] +*API* : link:{repoURL}/src/main/java/seedu/location/storage/Storage.java[`Storage.java`] The `Storage` component, @@ -161,35 +161,35 @@ The undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations: -* `VersionedAddressBook#commit()` -- Saves the current address book state in its history. -* `VersionedAddressBook#undo()` -- Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` -- Restores a previously undone address book state from its history. +* `VersionedAddressBook#commit()` -- Saves the current location book state in its history. +* `VersionedAddressBook#undo()` -- Restores the previous location book state from its history. +* `VersionedAddressBook#redo()` -- Restores a previously undone location book state from its history. These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. -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. +Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial location book state, and the `currentStatePointer` pointing to that single location book state. image::UndoRedoState0.png[] -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. +Step 2. The user executes `delete 5` command to delete the 5th trip in the location book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the location book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted location book state. image::UndoRedoState1.png[] -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`. +Step 3. The user executes `add n/David ...` to add a new trip. The `add` command also calls `Model#commitAddressBook()`, causing another modified location book state to be saved into the `addressBookStateList`. image::UndoRedoState2.png[] [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`. +If a command fails its execution, it will not call `Model#commitAddressBook()`, so the location book state will not be saved into the `addressBookStateList`. -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. +Step 4. The user now decides that adding the trip 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 location book state, and restores the location book to that state. image::UndoRedoState3.png[] [NOTE] -If the `currentStatePointer` is at index 0, pointing to the initial address book state, then there are no previous address book 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 than attempting to perform the undo. +If the `currentStatePointer` is at index 0, pointing to the initial location book state, then there are no previous location book 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 than attempting to perform the undo. The following sequence diagram shows how the undo operation works: @@ -197,16 +197,16 @@ image::UndoSequenceDiagram.png[] 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. -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. +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 location book to that state. [NOTE] -If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone address book 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. +If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest location book state, then there are no undone location book 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. -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. +Step 5. The user then decides to execute the command `list`. Commands that do not modify the location book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. image::UndoRedoState4.png[] -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. We designed it this way because it no longer makes sense to redo the `add n/David ...` command. This is the behavior that most modern desktop applications follow. +Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all location book states after the `currentStatePointer` will be purged. We designed it this way because it no longer makes sense to redo the `add n/David ...` command. This is the behavior that most modern desktop applications follow. image::UndoRedoState5.png[] @@ -218,16 +218,16 @@ image::CommitActivityDiagram.png[] ===== Aspect: How undo & redo executes -* **Alternative 1 (current choice):** Saves the entire address book. +* **Alternative 1 (current choice):** Saves the entire location book. ** Pros: Easy to implement. ** Cons: May have performance issues in terms of memory usage. * **Alternative 2:** Individual command knows how to undo/redo by itself. -** Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). +** Pros: Will use less memory (e.g. for `delete`, just save the trip being deleted). ** Cons: We must ensure that the implementation of each individual command are correct. ===== Aspect: Data structure to support the undo/redo commands -* **Alternative 1 (current choice):** Use a list to store the history of address book states. +* **Alternative 1 (current choice):** Use a list to store the history of location book states. ** Pros: Easy for new Computer Science student undergraduates to understand, who are likely to be the new incoming developers of our project. ** Cons: Logic is duplicated twice. For example, when a new command is executed, we must remember to update both `HistoryManager` and `VersionedAddressBook`. * **Alternative 2:** Use `HistoryManager` for undo/redo @@ -297,15 +297,15 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un |Priority |As a ... |I want to ... |So that I can... |`* * *` |new user |see usage instructions |refer to instructions when I forget how to use the App -|`* * *` |user |add a new person | +|`* * *` |user |add a new trip | -|`* * *` |user |delete a person |remove entries that I no longer need +|`* * *` |user |delete a trip |remove entries that I no longer need -|`* * *` |user |find a person by name |locate details of persons without having to go through the entire list +|`* * *` |user |find a trip by name |locate details of trips without having to go through the entire list |`* *` |user |hide <> by default |minimize chance of someone else seeing them by accident -|`*` |user with many persons in the address book |sort persons by name |locate a person easily +|`*` |user with many trips in the location book |sort trips by name |locate a trip easily |======================================================================= _{More to be added}_ @@ -316,14 +316,14 @@ _{More to be added}_ (For all use cases below, the *System* is the `AddressBook` and the *Actor* is the `user`, unless specified otherwise) [discrete] -=== Use case: Delete person +=== Use case: Delete trip *MSS* -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person +1. User requests to list trips +2. AddressBook shows a list of trips +3. User requests to delete a specific trip in the list +4. AddressBook deletes the trip + Use case ends. @@ -347,7 +347,7 @@ _{More to be added}_ == Non Functional Requirements . Should work on any <> as long as it has Java `11` or above installed. -. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. +. Should be able to hold up to 1000 trips without a noticeable sluggishness in performance for typical usage. . 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. _{More to be added}_ @@ -402,15 +402,15 @@ These instructions only provide a starting point for testers to work on; testers _{ more test cases ... }_ -=== Deleting a person +=== Deleting a trip -. Deleting a person while all persons are listed +. Deleting a trip while all trips are listed -.. Prerequisites: List all persons using the `list` command. Multiple persons in the list. +.. Prerequisites: List all trips using the `list` command. Multiple trips in the list. .. Test case: `delete 1` + 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. .. Test case: `delete 0` + - Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. + Expected: No trip is deleted. Error details shown in the status message. Status bar remains the same. .. Other incorrect delete commands to try: `delete`, `delete x` (where x is larger than the list size) _{give more}_ + Expected: Similar to previous. diff --git a/docs/LearningOutcomes.adoc b/docs/LearningOutcomes.adoc index 436c1777617..ac43424b924 100644 --- a/docs/LearningOutcomes.adoc +++ b/docs/LearningOutcomes.adoc @@ -33,7 +33,7 @@ What other user stories do you think AddressBook should support? Add those user === Exercise: Add a 'Rename tag' use case * Add a use case to the `DeveloperGuide.adoc` to cover the case of _renaming of an existing tag_. -e.g. rename the tag `friends` to `buddies` (i.e. all persons who had the `friends` tag will now have +e.g. rename the tag `friends` to `buddies` (i.e. all trips who had the `friends` tag will now have a `buddies` tag instead) Assume that AddressBook confirms the change with the user before carrying out the operation. @@ -108,7 +108,7 @@ image::PrintableInterface.png[width=400] String getPrintableString(Printable... printables) { ---- + -The above method can be used to get a printable string representing a bunch of person details. +The above method can be used to get a printable string representing a bunch of trip details. For example, you should be able to call that method like this: + [source,java] diff --git a/docs/SettingUp.adoc b/docs/SettingUp.adoc index c0659782fab..59a147481d9 100644 --- a/docs/SettingUp.adoc +++ b/docs/SettingUp.adoc @@ -37,7 +37,7 @@ Do not disable them. If you have disabled them, go to `File` > `Settings` > `Plu == Verifying the setup -. Run the `seedu.address.Main` and try a few commands +. Run the `seedu.location.Main` and try a few commands . <> to ensure they all pass. == Configurations to do before writing code diff --git a/docs/Testing.adoc b/docs/Testing.adoc index 5767b92912c..0a94f55cbf2 100644 --- a/docs/Testing.adoc +++ b/docs/Testing.adoc @@ -35,11 +35,11 @@ See <> for more info on how to run tests using G We have three types of tests: . _Unit tests_ targeting the lowest level methods/classes. + -e.g. `seedu.address.commons.StringUtilTest` +e.g. `seedu.location.commons.StringUtilTest` . _Integration tests_ that are checking the integration of multiple code units (those code units are assumed to be working). + -e.g. `seedu.address.storage.StorageManagerTest` +e.g. `seedu.location.storage.StorageManagerTest` . Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together. + -e.g. `seedu.address.logic.LogicManagerTest` +e.g. `seedu.location.logic.LogicManagerTest` == Troubleshooting Testing diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 4e5d297a19f..a7d4596c396 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -56,47 +56,47 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. Format: `help` -=== Adding a person: `add` +=== Adding a trip: `add` -Adds a person to the address book + +Adds a trip to the location book + Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...` [TIP] -A person can have any number of tags (including 0) +A trip can have any number of tags (including 0) Examples: * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` * `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` -=== Listing all persons : `list` +=== Listing all trips : `list` -Shows a list of all persons in the address book. + +Shows a list of all trips in the location book. + Format: `list` -=== Editing a person : `edit` +=== Editing a trip : `edit` -Edits an existing person in the address book. + +Edits an existing trip in the location book. + Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...` **** -* 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, ... +* Edits the trip at the specified `INDEX`. The index refers to the index number shown in the displayed trip list. The index *must be a positive integer* 1, 2, 3, ... * At least one of the optional fields must be provided. * Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person's tags by typing `t/` without specifying any tags after it. +* When editing tags, the existing tags of the trip will be removed i.e adding of tags is not cumulative. +* You can remove all the trip's tags by typing `t/` without specifying any tags after it. **** Examples: * `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. +Edits the phone number and email location of the 1st trip to be `91234567` and `johndoe@example.com` respectively. * `edit 2 n/Betsy Crower t/` + -Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +Edits the name of the 2nd trip to be `Betsy Crower` and clears all existing tags. -=== Locating persons by name: `find` +=== Locating trips by name: `find` -Finds persons whose names contain any of the given keywords. + +Finds trips whose names contain any of the given keywords. + Format: `find KEYWORD [MORE_KEYWORDS]` **** @@ -112,17 +112,17 @@ Examples: * `find John` + Returns `john` and `John Doe` * `find Betsy Tim John` + -Returns any person having names `Betsy`, `Tim`, or `John` +Returns any trip having names `Betsy`, `Tim`, or `John` // tag::delete[] -=== Deleting a person : `delete` +=== Deleting a trip : `delete` -Deletes the specified person from the address book. + +Deletes the specified trip from the location book. + Format: `delete INDEX` **** -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. +* Deletes the trip at the specified `INDEX`. +* The index refers to the index number shown in the displayed trip list. * The index *must be a positive integer* 1, 2, 3, ... **** @@ -130,15 +130,15 @@ Examples: * `list` + `delete 2` + -Deletes the 2nd person in the address book. +Deletes the 2nd trip in the location book. * `find Betsy` + `delete 1` + -Deletes the 1st person in the results of the `find` command. +Deletes the 1st trip in the results of the `find` command. // end::delete[] === Clearing all entries : `clear` -Clears all entries from the address book. + +Clears all entries from the location book. + Format: `clear` === Exiting the program : `exit` diff --git a/docs/stylesheets/asciidoctor.css b/docs/stylesheets/asciidoctor.css index 36590bf346c..c909ea18574 100644 --- a/docs/stylesheets/asciidoctor.css +++ b/docs/stylesheets/asciidoctor.css @@ -1,407 +1,1664 @@ /* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ /* Remove comment around @import statement below when using as a custom stylesheet */ -/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/ -article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} -audio,canvas,video{display:inline-block} -audio:not([controls]){display:none;height:0} -[hidden],template{display:none} -script{display:none!important} -html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} -body{margin:0} -a{background:transparent} -a:focus{outline:thin dotted} -a:active,a:hover{outline:0} -h1{font-size:2em;margin:.67em 0} -abbr[title]{border-bottom:1px dotted} -b,strong{font-weight:bold} -dfn{font-style:italic} -hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} -mark{background:#ff0;color:#000} -code,kbd,pre,samp{font-family:monospace;font-size:1em} -pre{white-space:pre-wrap} -q{quotes:"\201C" "\201D" "\2018" "\2019"} -small{font-size:80%} -sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} -sup{top:-.5em} -sub{bottom:-.25em} -img{border:0} -svg:not(:root){overflow:hidden} -figure{margin:0} -fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} -legend{border:0;padding:0} -button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} -button,input{line-height:normal} -button,select{text-transform:none} -button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} -button[disabled],html input[disabled]{cursor:default} -input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} -input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} -input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} -button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} -textarea{overflow:auto;vertical-align:top} -table{border-collapse:collapse;border-spacing:0} -*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} -html,body{font-size:100%} -body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto} -a:hover{cursor:pointer} -img,object,embed{max-width:100%;height:auto} -object,embed{height:100%} -img{-ms-interpolation-mode:bicubic} -.left{float:left!important} -.right{float:right!important} -.text-left{text-align:left!important} -.text-right{text-align:right!important} -.text-center{text-align:center!important} -.text-justify{text-align:justify!important} -.hide{display:none} -body{-webkit-font-smoothing:antialiased} -img,object,svg{display:inline-block;vertical-align:middle} -textarea{height:auto;min-height:50px} -select{width:100%} -.center{margin-left:auto;margin-right:auto} -.spread{width:100%} -p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6} -.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} -div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} -a{color:#2156a5;text-decoration:underline;line-height:inherit} -a:hover,a:focus{color:#1d4b8f} -a img{border:none} -p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} -p aside{font-size:.875em;line-height:1.35;font-style:italic} -h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} -h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} -h1{font-size:2.125em} -h2{font-size:1.6875em} -h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} -h4,h5{font-size:1.125em} -h6{font-size:1em} -hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} -em,i{font-style:italic;line-height:inherit} -strong,b{font-weight:bold;line-height:inherit} -small{font-size:60%;line-height:inherit} -code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} -ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} -ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em} -ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} -ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} -ul.square{list-style-type:square} -ul.circle{list-style-type:circle} -ul.disc{list-style-type:disc} -ul.no-bullet{list-style:none} -ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} -dl dt{margin-bottom:.3125em;font-weight:bold} -dl dd{margin-bottom:1.25em} -abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} -abbr{text-transform:none} -blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} -blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} -blockquote cite:before{content:"\2014 \0020"} -blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} -blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} -@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} -h1{font-size:2.75em} -h2{font-size:2.3125em} -h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} -h4{font-size:1.4375em}} -table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} -table thead,table tfoot{background:#f7f8f7;font-weight:bold} -table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} -table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} -table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} -table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} -body{tab-size:4} -h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} -h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} -.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table} -.clearfix:after,.float-group:after{clear:both} -*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed} -pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} -.keyseq{color:rgba(51,51,51,.8)} -kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} -.keyseq kbd:first-child{margin-left:0} -.keyseq kbd:last-child{margin-right:0} -.menuseq,.menu{color:rgba(0,0,0,.8)} -b.button:before,b.button:after{position:relative;top:-1px;font-weight:400} -b.button:before{content:"[";padding:0 3px 0 2px} -b.button:after{content:"]";padding:0 2px 0 3px} -p a>code:hover{color:rgba(0,0,0,.9)} -#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} -#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table} -#header:after,#content:after,#footnotes:after,#footer:after{clear:both} -#content{margin-top:1.25em} -#content:before{content:none} -#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} -#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} -#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} -#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} -#header .details span:first-child{margin-left:-.125em} -#header .details span.email a{color:rgba(0,0,0,.85)} -#header .details br{display:none} -#header .details br+span:before{content:"\00a0\2013\00a0"} -#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} -#header .details br+span#revremark:before{content:"\00a0|\00a0"} -#header #revnumber{text-transform:capitalize} -#header #revnumber:after{content:"\00a0"} -#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} -#toc{border-bottom:1px solid #efefed;padding-bottom:.5em} -#toc>ul{margin-left:.125em} -#toc ul.sectlevel0>li>a{font-style:italic} -#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} -#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} -#toc li{line-height:1.3334;margin-top:.3334em} -#toc a{text-decoration:none} -#toc a:active{text-decoration:underline} -#toctitle{color:#7a2518;font-size:1.2em} -@media only screen and (min-width:768px){#toctitle{font-size:1.375em} -body.toc2{padding-left:15em;padding-right:0} -#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} -#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} -#toc.toc2>ul{font-size:.9em;margin-bottom:0} -#toc.toc2 ul ul{margin-left:0;padding-left:1em} -#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} -body.toc2.toc-right{padding-left:0;padding-right:15em} -body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} -@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} -#toc.toc2{width:20em} -#toc.toc2 #toctitle{font-size:1.375em} -#toc.toc2>ul{font-size:.95em} -#toc.toc2 ul ul{padding-left:1.25em} -body.toc2.toc-right{padding-left:0;padding-right:20em}} -#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} -#content #toc>:first-child{margin-top:0} -#content #toc>:last-child{margin-bottom:0} -#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} -#footer-text{color:rgba(255,255,255,.8);line-height:1.44} -.sect1{padding-bottom:.625em} -@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}} -.sect1+.sect1{border-top:1px solid #efefed} -#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} -#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} -#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} -#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} -#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} -.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} -.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} -table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0} -.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)} -table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit} -.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} -.admonitionblock>table td.icon{text-align:center;width:80px} -.admonitionblock>table td.icon img{max-width:none} -.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} -.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} -.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} -.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} -.exampleblock>.content>:first-child{margin-top:0} -.exampleblock>.content>:last-child{margin-bottom:0} -.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} -.sidebarblock>:first-child{margin-top:0} -.sidebarblock>:last-child{margin-bottom:0} -.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} -.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} -.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} -.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} -.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} -.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} -@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} -@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} -.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} -.listingblock pre.highlightjs{padding:0} -.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} -.listingblock pre.prettyprint{border-width:0} -.listingblock>.content{position:relative} -.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} -.listingblock:hover code[data-lang]:before{display:block} -.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999} -.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"} -table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} -table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} -table.pyhltable td.code{padding-left:.75em;padding-right:0} -pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} -pre.pygments .lineno{display:inline-block;margin-right:.25em} -table.pyhltable .linenodiv{background:none!important;padding-right:0!important} -.quoteblock{margin:0 1em 1.25em 1.5em;display:table} -.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} -.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} -.quoteblock blockquote{margin:0;padding:0;border:0} -.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} -.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} -.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} -.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} -.quoteblock .quoteblock blockquote{padding:0 0 0 .75em} -.quoteblock .quoteblock blockquote:before{display:none} -.verseblock{margin:0 1em 1.25em 1em} -.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} -.verseblock pre strong{font-weight:400} -.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} -.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} -.quoteblock .attribution br,.verseblock .attribution br{display:none} -.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} -.quoteblock.abstract{margin:0 0 1.25em 0;display:block} -.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0} -.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none} -table.tableblock{max-width:100%;border-collapse:separate} -table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0} -table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} -table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0} -table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0} -table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0} -table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0} -table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0} -table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0} -table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0} -table.frame-all{border-width:1px} -table.frame-sides{border-width:0 1px} -table.frame-topbot{border-width:1px 0} -th.halign-left,td.halign-left{text-align:left} -th.halign-right,td.halign-right{text-align:right} -th.halign-center,td.halign-center{text-align:center} -th.valign-top,td.valign-top{vertical-align:top} -th.valign-bottom,td.valign-bottom{vertical-align:bottom} -th.valign-middle,td.valign-middle{vertical-align:middle} -table thead th,table tfoot th{font-weight:bold} -tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} -tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} -p.tableblock>code:only-child{background:none;padding:0} -p.tableblock{font-size:1em} -td>div.verse{white-space:pre} -ol{margin-left:1.75em} -ul li ol{margin-left:1.5em} -dl dd{margin-left:1.125em} -dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} -ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} -ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none} -ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em} -ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em} -ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px} -ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden} -ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block} -ul.inline>li>*{display:block} -.unstyled dl dt{font-weight:400;font-style:normal} -ol.arabic{list-style-type:decimal} -ol.decimal{list-style-type:decimal-leading-zero} -ol.loweralpha{list-style-type:lower-alpha} -ol.upperalpha{list-style-type:upper-alpha} -ol.lowerroman{list-style-type:lower-roman} -ol.upperroman{list-style-type:upper-roman} -ol.lowergreek{list-style-type:lower-greek} -.hdlist>table,.colist>table{border:0;background:none} -.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} -td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} -td.hdlist1{font-weight:bold;padding-bottom:1.25em} -.literalblock+.colist,.listingblock+.colist{margin-top:-.5em} -.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1} -.colist>table tr>td:last-of-type{padding:.25em 0} -.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} -.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} -.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} -.imageblock>.title{margin-bottom:0} -.imageblock.thumb,.imageblock.th{border-width:6px} -.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} -.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} -.image.left{margin-right:.625em} -.image.right{margin-left:.625em} -a.image{text-decoration:none;display:inline-block} -a.image object{pointer-events:none} -sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} -sup.footnote a,sup.footnoteref a{text-decoration:none} -sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} -#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} -#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0} -#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em} -#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none} -#footnotes .footnote:last-of-type{margin-bottom:0} -#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} -.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} -.gist .file-data>table td.line-data{width:99%} -div.unbreakable{page-break-inside:avoid} -.big{font-size:larger} -.small{font-size:smaller} -.underline{text-decoration:underline} -.overline{text-decoration:overline} -.line-through{text-decoration:line-through} -.aqua{color:#00bfbf} -.aqua-background{background-color:#00fafa} -.black{color:#000} -.black-background{background-color:#000} -.blue{color:#0000bf} -.blue-background{background-color:#0000fa} -.fuchsia{color:#bf00bf} -.fuchsia-background{background-color:#fa00fa} -.gray{color:#606060} -.gray-background{background-color:#7d7d7d} -.green{color:#006000} -.green-background{background-color:#007d00} -.lime{color:#00bf00} -.lime-background{background-color:#00fa00} -.maroon{color:#600000} -.maroon-background{background-color:#7d0000} -.navy{color:#000060} -.navy-background{background-color:#00007d} -.olive{color:#606000} -.olive-background{background-color:#7d7d00} -.purple{color:#600060} -.purple-background{background-color:#7d007d} -.red{color:#bf0000} -.red-background{background-color:#fa0000} -.silver{color:#909090} -.silver-background{background-color:#bcbcbc} -.teal{color:#006060} -.teal-background{background-color:#007d7d} -.white{color:#bfbfbf} -.white-background{background-color:#fafafa} -.yellow{color:#bfbf00} -.yellow-background{background-color:#fafa00} -span.icon>.fa{cursor:default} -.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} -.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c} -.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} -.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900} -.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400} -.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000} -.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} -.conum[data-value] *{color:#fff!important} -.conum[data-value]+b{display:none} -.conum[data-value]:after{content:attr(data-value)} -pre .conum[data-value]{position:relative;top:-.125em} -b.conum *{color:inherit!important} -.conum:not([data-value]):empty{display:none} -dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} -h1,h2,p,td.content,span.alt{letter-spacing:-.01em} -p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} -p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} -p{margin-bottom:1.25rem} -.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} -.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} -.print-only{display:none!important} -@media print{@page{margin:1.25cm .75cm} -*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} -a{color:inherit!important;text-decoration:underline!important} -a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} -a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} -abbr[title]:after{content:" (" attr(title) ")"} -pre,blockquote,tr,img,object,svg{page-break-inside:avoid} -thead{display:table-header-group} -svg{max-width:100%} -p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} -h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} -#toc,.sidebarblock,.exampleblock>.content{background:none!important} -#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} -.sect1{padding-bottom:0!important} -.sect1+.sect1{border:0!important} -#header>h1:first-child{margin-top:1.25rem} -body.book #header{text-align:center} -body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0} -body.book #header .details{border:0!important;display:block;padding:0!important} -body.book #header .details span:first-child{margin-left:0!important} -body.book #header .details br{display:block} -body.book #header .details br+span:before{content:none!important} -body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} -body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} -.listingblock code[data-lang]:before{display:block} -#footer{background:none!important;padding:0 .9375em} -#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em} -.hide-on-print{display:none!important} -.print-only{display:block!important} -.hide-for-print{display:none!important} -.show-for-print{display:inherit!important}} +/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; +*/ + +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{ + display:block +} + +audio,canvas,video { + display:inline-block +} + +audio:not([controls]) { + display:none; + height:0 +} + +[hidden],template{ + display:none +} + +script { + display:none!important +} + +html { + font-family:sans-serif; + -ms-text-size-adjust:100%; + -webkit-text-size-adjust:100% +} + +body{ + margin:0 +} + +a { + background:transparent +} + +a:focus { + outline:thin dotted +} + +a:active,a:hover { + outline:0 +} + +h1 { + font-size:2em; + margin:.67em 0 +} + +abbr[title] { + border-bottom:1px dotted +} + +b,strong { + font-weight:bold +} + +dfn { + font-style:italic +} + +hr { + -moz-box-sizing:content-box; + box-sizing:content-box; + height:0 +} + +mark { + background:#ff0; + color:#000 +} + +code,kbd,pre,samp { + font-family:monospace; + font-size:1em +} + +pre { + white-space:pre-wrap +} + +q { + quotes:"\201C" "\201D" "\2018" "\2019" +} + +small { + font-size:80% +} + +sub,sup { + font-size:75%; + line-height:0; + position:relative; + vertical-align:baseline +} + +sup{ + top:-.5em +} +sub{ + bottom:-.25em +} +img{ + border:0 +} +svg:not(:root){ + overflow:hidden +} + +figure{ + margin:0 +} + +fieldset{ + border:1px solid silver; + margin:0 2px; + padding:.35em .625em .75em +} + +legend{ + border:0; + padding:0 +} + +button,input,select,textarea{ + font-family:inherit; + font-size:100%; + margin:0 +} + +button,input{ + line-height:normal +} + +button,select{ + text-transform:none +} +button,html input[type="button"],input[type="reset"],input[type="submit"]{ + -webkit-appearance:button; + cursor:pointer +} + +button[disabled],html input[disabled]{ + cursor:default +} + +input[type="checkbox"],input[type="radio"]{ + box-sizing:border-box; + padding:0 +} + +input[type="search"]{ + -webkit-appearance:textfield; + -moz-box-sizing:content-box; + -webkit-box-sizing:content-box; + box-sizing:content-box +} + +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{ + -webkit-appearance:none +} + +button::-moz-focus-inner,input::-moz-focus-inner{ + border:0; + padding:0 +} + +textarea { + overflow:auto; + vertical-align:top +} + +table{ + border-collapse:collapse; + border-spacing:0 +} +*,*:before,*:after{ + -moz-box-sizing:border-box; + -webkit-box-sizing:border-box; + box-sizing:border-box +} +html,body{ + font-size:100% +} +body{ + background:#fff; + color:rgba(0,0,0,.8); + padding:0; + margin:0; + font-family:"Noto Serif","DejaVu Serif",serif; + font-weight:400; + font-style:normal; + line-height:1; + position:relative; + cursor:auto +} +a:hover{ + cursor:pointer +} +img,object,embed{ + max-width:100%; + height:auto +} +object,embed{ + height:100% +} +img{ + -ms-interpolation-mode:bicubic +} +.left{ + float:left!important +} +.right{ + float:right!important +} +.text-left{ + text-align:left!important +} +.text-right{ + text-align:right!important +} +.text-center{ + text-align:center!important +} +.text-justify{ + text-align:justify!important +} +.hide{ + display:none +} +body{ + -webkit-font-smoothing:antialiased +} +img,object,svg{ + display:inline-block; + vertical-align:middle +} +textarea{ + height:auto; + min-height:50px +} +select{ + width:100% +} +.center{ + margin-left:auto; + margin-right:auto +} +.spread{ + width:100% +} +p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{ + font-size:1.21875em; + line-height:1.6 +} +.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{ + line-height:1.45; + color:#7a2518; + font-weight:400; + margin-top:0; + margin-bottom:.25em +} +div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{ + margin:0; + padding:0; + direction:ltr +} +a{ + color:#2156a5; + text-decoration:underline; + line-height:inherit +} +a:hover,a:focus{ + color:#1d4b8f +} +a img{ + border:none +} +p{ + font-family:inherit; + font-weight:400; + font-size:1em; + line-height:1.6; + margin-bottom:1.25em; + text-rendering:optimizeLegibility +} +p aside{ + font-size:.875em; + line-height:1.35; + font-style:italic +} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{ + font-family:"Open Sans","DejaVu Sans",sans-serif; + font-weight:300; + font-style:normal; + color:#ba3925; + text-rendering:optimizeLegibility; + margin-top:1em; + margin-bottom:.5em; + line-height:1.0125em +} +h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{ + font-size:60%; + color:#e99b8f; + line-height:0 +} +h1{ + font-size:2.125em +} +h2{ + font-size:1.6875em +} +h3,#toctitle,.sidebarblock>.content>.title{ + font-size:1.375em +} +h4,h5{ + font-size:1.125em +} +h6{ + font-size:1em +} +hr{ + border:solid #ddddd8; + border-width:1px 0 0; + clear:both; + margin:1.25em 0 1.1875em; + height:0 +} +em,i{ + font-style:italic; + line-height:inherit +} +strong,b{ + font-weight:bold; + line-height:inherit +} +small{ + font-size:60%; + line-height:inherit +} +code{ + font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace; + font-weight:400; + color:rgba(0,0,0,.9) +} +ul,ol,dl{ + font-size:1em; + line-height:1.6; + margin-bottom:1.25em; + list-style-position:outside; + font-family:inherit +} +ul,ol,ul.no-bullet,ol.no-bullet{ + margin-left:1.5em +} +ul li ul,ul li ol{ + margin-left:1.25em; + margin-bottom:0; + font-size:1em +} +ul.square li ul,ul.circle li ul,ul.disc li ul{ + list-style:inherit +} +ul.square{ + list-style-type:square +} +ul.circle{ + list-style-type:circle +} +ul.disc{ + list-style-type:disc +} +ul.no-bullet{ + list-style:none +} +ol li ul,ol li ol{ + margin-left:1.25em; + margin-bottom:0 +} +dl dt{ + margin-bottom:.3125em; + font-weight:bold +} +dl dd{ + margin-bottom:1.25em +} +abbr,acronym{ + text-transform:uppercase; + font-size:90%; + color:rgba(0,0,0,.8); + border-bottom:1px dotted #ddd; + cursor:help +} +abbr{ + text-transform:none +} +blockquote{ + margin:0 0 1.25em; + padding:.5625em 1.25em 0 1.1875em; + border-left:1px solid #ddd +} +blockquote cite{ + display:block; + font-size:.9375em; + color:rgba(0,0,0,.6) +} +blockquote cite:before{ + content:"\2014 \0020" +} +blockquote cite a,blockquote cite a:visited{ + color:rgba(0,0,0,.6) +} +blockquote,blockquote p{ + line-height:1.6; + color:rgba(0,0,0,.85) +} +@media only screen and (min-width:768px){ + h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{ + line-height:1.2 + } + h1{ + font-size:2.75em + } + h2{ + font-size:2.3125em + } + h3,#toctitle,.sidebarblock>.content>.title{ + font-size:1.6875em + } + h4{ + font-size:1.4375em + } +} +table{ + background:#fff; + margin-bottom:1.25em; + border:solid 1px #dedede +} +table thead,table tfoot{ + background:#f7f8f7; + font-weight:bold +} +table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{ + padding:.5em .625em .625em; + font-size:inherit; + color:rgba(0,0,0,.8); + text-align:left +} +table tr th,table tr td{ + padding:.5625em .625em; + font-size:inherit; + color:rgba(0,0,0,.8) +} +table tr.even,table tr.alt,table tr:nth-of-type(even){ + background:#f8f8f7 +} +table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{ + display:table-cell; + line-height:1.6 +} +body{ + tab-size:4 +} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{ + line-height:1.2; + word-spacing:-.05em +} +h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{ + font-weight:400 +} +.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{ + content:" "; + display:table +} +.clearfix:after,.float-group:after{ + clear:both +} +*:not(pre)>code{ + font-size:.9375em; + font-style:normal!important; + letter-spacing:0; + padding:.1em .5ex; + word-spacing:-.15em; + background-color:#f7f7f8; + -webkit-border-radius:4px; + border-radius:4px; + line-height:1.45; + text-rendering:optimizeSpeed +} +pre,pre>code{ + line-height:1.45; + color:rgba(0,0,0,.9); + font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace; + font-weight:400; + text-rendering:optimizeSpeed +} +.keyseq{ + color:rgba(51,51,51,.8) +} +kbd{ + font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace; + display:inline-block; + color:rgba(0,0,0,.8); + font-size:.65em; + line-height:1.45; + background-color:#f7f7f7; + border:1px solid #ccc; + -webkit-border-radius:3px; + border-radius:3px; + -webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset; + box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset; + margin:0 .15em; + padding:.2em .5em; + vertical-align:middle; + position:relative; + top:-.1em; + white-space:nowrap +} +.keyseq kbd:first-child{ + margin-left:0 +} +.keyseq kbd:last-child{ + margin-right:0 +} +.menuseq,.menu{ + color:rgba(0,0,0,.8) +} +b.button:before,b.button:after{ + position:relative; + top:-1px; + font-weight:400 +} +b.button:before{ + content:"["; + padding:0 3px 0 2px +} +b.button:after{ + content:"]"; + padding:0 2px 0 3px +} +p a>code:hover{ + color:rgba(0,0,0,.9) +} +#header,#content,#footnotes,#footer{ + width:100%; + margin-left:auto; + margin-right:auto; + margin-top:0; + margin-bottom:0; + max-width:62.5em; + *zoom:1; + position:relative; + padding-left:.9375em; + padding-right:.9375em +} +#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{ + content:" "; + display:table +} +#header:after,#content:after,#footnotes:after,#footer:after{ + clear:both +} +#content{ + margin-top:1.25em +} +#content:before{ + content:none +} +#header>h1:first-child{ + color:rgba(0,0,0,.85); + margin-top:2.25rem; + margin-bottom:0 +} +#header>h1:first-child+#toc{ + margin-top:8px; + border-top:1px solid #ddddd8 +} +#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){ + border-bottom:1px solid #ddddd8; + padding-bottom:8px +} +#header .details{ + border-bottom:1px solid #ddddd8; + line-height:1.45; + padding-top:.25em; + padding-bottom:.25em; + padding-left:.25em; + color:rgba(0,0,0,.6); + display:-ms-flexbox; + display:-webkit-flex; + display:flex; + -ms-flex-flow:row wrap; + -webkit-flex-flow:row wrap; + flex-flow:row wrap +} +#header .details span:first-child{ + margin-left:-.125em +} +#header .details span.email a{ + color:rgba(0,0,0,.85) +} +#header .details br{ + display:none +} +#header .details br+span:before{ + content:"\00a0\2013\00a0" +} +#header .details br+span.author:before{ + content:"\00a0\22c5\00a0"; + color:rgba(0,0,0,.85) +} +#header .details br+span#revremark:before{ + content:"\00a0|\00a0" +} +#header #revnumber{ + text-transform:capitalize +} +#header #revnumber:after{ + content:"\00a0" +} +#content>h1:first-child:not([class]){ + color:rgba(0,0,0,.85); + border-bottom:1px solid #ddddd8; + padding-bottom:8px; + margin-top:0; + padding-top:1rem; + margin-bottom:1.25rem +} +#toc{ + border-bottom:1px solid #efefed; + padding-bottom:.5em +} +#toc>ul{ + margin-left:.125em +} +#toc ul.sectlevel0>li>a{ + font-style:italic +} +#toc ul.sectlevel0 ul.sectlevel1{ + margin:.5em 0 +} +#toc ul{ + font-family:"Open Sans","DejaVu Sans",sans-serif; + list-style-type:none +} +#toc li{ + line-height:1.3334; + margin-top:.3334em +} +#toc a{ + text-decoration:none +} +#toc a:active{ + text-decoration:underline +} +#toctitle{ + color:#7a2518; + font-size:1.2em +} +@media only screen and (min-width:768px){ + #toctitle{ + font-size:1.375em + } + body.toc2{ + padding-left:15em; + padding-right:0 + } + #toc.toc2{ + margin-top:0!important; + background-color:#f8f8f7; + position:fixed; + width:15em; + left:0; + top:0; + border-right:1px solid #efefed; + border-top-width:0!important; + border-bottom-width:0!important; + z-index:1000; + padding:1.25em 1em; + height:100%; + overflow:auto + } + #toc.toc2 #toctitle{ + margin-top:0; + margin-bottom:.8rem; + font-size:1.2em + } + #toc.toc2>ul{ + font-size:.9em; + margin-bottom:0 + } + #toc.toc2 ul ul{ + margin-left:0; + padding-left:1em + } + #toc.toc2 ul.sectlevel0 ul.sectlevel1{ + padding-left:0; + margin-top:.5em; + margin-bottom:.5em + } + body.toc2.toc-right{ + padding-left:0; + padding-right:15em + } + body.toc2.toc-right #toc.toc2{ + border-right-width:0; + border-left:1px solid #efefed; + left:auto; + right:0 + } +} +@media only screen and (min-width:1280px){ + body.toc2{ + padding-left:20em; + padding-right:0 + } + #toc.toc2{ + width:20em + } + #toc.toc2 #toctitle{ + font-size:1.375em + } + #toc.toc2>ul{ + font-size:.95em + } + #toc.toc2 ul ul{ + padding-left:1.25em + } + body.toc2.toc-right{ + padding-left:0; + padding-right:20em + } +} +#content #toc{ + border-style:solid; + border-width:1px; + border-color:#e0e0dc; + margin-bottom:1.25em; + padding:1.25em; + background:#f8f8f7; + -webkit-border-radius:4px; + border-radius:4px +} +#content #toc>:first-child{ + margin-top:0 +} +#content #toc>:last-child{ + margin-bottom:0 +} +#footer{ + max-width:100%; + background-color:rgba(0,0,0,.8); + padding:1.25em +} +#footer-text{ + color:rgba(255,255,255,.8); + line-height:1.44 +} +.sect1{ + padding-bottom:.625em +} +@media only screen and (min-width:768px){ + .sect1{ + padding-bottom:1.25em + } +} +.sect1+.sect1{ + border-top:1px solid #efefed +} +#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{ + position:absolute; + z-index:1001; + width:1.5ex; + margin-left:-1.5ex; + display:block; + text-decoration:none!important; + visibility:hidden; + text-align:center; + font-weight:400 +} +#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{ + content:"\00A7"; + font-size:.85em; + display:block; + padding-top:.1em +} +#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{ + visibility:visible +} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{ + color:#ba3925; + text-decoration:none +} +#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{ + color:#a53221 +} +.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{ + margin-bottom:1.25em +} +.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{ + text-rendering:optimizeLegibility; + text-align:left; + font-family:"Noto Serif","DejaVu Serif",serif; + font-size:1rem; + font-style:italic +} +table.tableblock>caption.title{ + white-space:nowrap; + overflow:visible; + max-width:0 +} +.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{ + color:rgba(0,0,0,.85) +} +table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{ + font-size:inherit +} +.admonitionblock>table{ + border-collapse:separate; + border:0; + background:none; + width:100% +} +.admonitionblock>table td.icon{ + text-align:center; + width:80px +} +.admonitionblock>table td.icon img{ + max-width:none +} +.admonitionblock>table td.icon .title{ + font-weight:bold; + font-family:"Open Sans","DejaVu Sans",sans-serif; + text-transform:uppercase +} +.admonitionblock>table td.content{ + padding-left:1.125em; + padding-right:1.25em; + border-left:1px solid #ddddd8; + color:rgba(0,0,0,.6) +} +.admonitionblock>table td.content>:last-child>:last-child{ + margin-bottom:0 +} +.exampleblock>.content{ + border-style:solid; + border-width:1px; + border-color:#e6e6e6; + margin-bottom:1.25em; + padding:1.25em; + background:#fff; + -webkit-border-radius:4px; + border-radius:4px +} +.exampleblock>.content>:first-child{ + margin-top:0 +} +.exampleblock>.content>:last-child{ + margin-bottom:0 +} +.sidebarblock{ + border-style:solid; + border-width:1px; + border-color:#e0e0dc; + margin-bottom:1.25em; + padding:1.25em; + background:#f8f8f7; + -webkit-border-radius:4px; + border-radius:4px +} +.sidebarblock>:first-child{ + margin-top:0 +} +.sidebarblock>:last-child{ + margin-bottom:0 +} +.sidebarblock>.content>.title{ + color:#7a2518; + margin-top:0; + text-align:center +} +.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{ + margin-bottom:0 +} +.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{ + background:#f7f7f8 +} +.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{ + background:#f2f1f1 +} +.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{ + -webkit-border-radius:4px; + border-radius:4px; + word-wrap:break-word; + padding:1em; + font-size:.8125em +} +.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{ + overflow-x:auto; + white-space:pre; + word-wrap:normal +} +@media only screen and (min-width:768px){ + .literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{ + font-size:.90625em + } +} +@media only screen and (min-width:1280px){ + .literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{ + font-size:1em + } +} +.literalblock.output pre{ + color:#f7f7f8; + background-color:rgba(0,0,0,.9) +} +.listingblock pre.highlightjs{ + padding:0 +} +.listingblock pre.highlightjs>code{ + padding:1em; + -webkit-border-radius:4px; + border-radius:4px +} +.listingblock pre.prettyprint{ + border-width:0 +} +.listingblock>.content{ + position:relative +} +.listingblock code[data-lang]:before{ + display:none; + content:attr(data-lang); + position:absolute; + font-size:.75em; + top:.425rem; + right:.5rem; + line-height:1; + text-transform:uppercase; + color:#999 +} +.listingblock:hover code[data-lang]:before{ + display:block +} +.listingblock.terminal pre .command:before{ + content:attr(data-prompt); + padding-right:.5em; + color:#999 +} +.listingblock.terminal pre .command:not([data-prompt]):before{ + content:"$" +} +table.pyhltable{ + border-collapse:separate; + border:0; + margin-bottom:0; + background:none +} +table.pyhltable td{ + vertical-align:top; + padding-top:0; + padding-bottom:0; + line-height:1.45 +} +table.pyhltable td.code{ + padding-left:.75em; + padding-right:0 +} +pre.pygments .lineno,table.pyhltable td:not(.code){ + color:#999; + padding-left:0; + padding-right:.5em; + border-right:1px solid #ddddd8 +} +pre.pygments .lineno{ + display:inline-block; + margin-right:.25em +} +table.pyhltable .linenodiv{ + background:none!important; + padding-right:0!important +} +.quoteblock{ + margin:0 1em 1.25em 1.5em; + display:table +} +.quoteblock>.title{ + margin-left:-1.5em; + margin-bottom:.75em +} +.quoteblock blockquote,.quoteblock blockquote p{ + color:rgba(0,0,0,.85); + font-size:1.15rem; + line-height:1.75; + word-spacing:.1em; + letter-spacing:0; + font-style:italic; + text-align:justify +} +.quoteblock blockquote{ + margin:0; + padding:0; + border:0 +} +.quoteblock blockquote:before{ + content:"\201c"; + float:left; + font-size:2.75em; + font-weight:bold; + line-height:.6em; + margin-left:-.6em; + color:#7a2518; + text-shadow:0 1px 2px rgba(0,0,0,.1) +} +.quoteblock blockquote>.paragraph:last-child p{ + margin-bottom:0 +} +.quoteblock .attribution{ + margin-top:.5em; + margin-right:.5ex; + text-align:right +} +.quoteblock .quoteblock{ + margin-left:0; + margin-right:0; + padding:.5em 0; + border-left:3px solid rgba(0,0,0,.6) +} +.quoteblock .quoteblock blockquote{ + padding:0 0 0 .75em +} +.quoteblock .quoteblock blockquote:before{ + display:none +} +.verseblock{ + margin:0 1em 1.25em 1em +} +.verseblock pre{ + font-family:"Open Sans","DejaVu Sans",sans; + font-size:1.15rem; + color:rgba(0,0,0,.85); + font-weight:300; + text-rendering:optimizeLegibility +} +.verseblock pre strong{ + font-weight:400 +} +.verseblock .attribution{ + margin-top:1.25rem; + margin-left:.5ex +} +.quoteblock .attribution,.verseblock .attribution{ + font-size:.9375em; + line-height:1.45; + font-style:italic +} +.quoteblock .attribution br,.verseblock .attribution br{ + display:none +} +.quoteblock .attribution cite,.verseblock .attribution cite{ + display:block; + letter-spacing:-.025em; + color:rgba(0,0,0,.6) +} +.quoteblock.abstract{ + margin:0 0 1.25em 0; + display:block +} +.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{ + text-align:left; + word-spacing:0 +} +.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{ + display:none +} +table.tableblock{ + max-width:100%; + border-collapse:separate +} +table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{ + margin-bottom:0 +} +table.tableblock,th.tableblock,td.tableblock{ + border:0 solid #dedede +} +table.grid-all th.tableblock,table.grid-all td.tableblock{ + border-width:0 1px 1px 0 +} +table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{ + border-width:1px 1px 0 0 +} +table.grid-cols th.tableblock,table.grid-cols td.tableblock{ + border-width:0 1px 0 0 +} +table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{ + border-right-width:0 +} +table.grid-rows th.tableblock,table.grid-rows td.tableblock{ + border-width:0 0 1px 0 +} +table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{ + border-bottom-width:0 +} +table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{ + border-width:1px 0 0 0 +} +table.frame-all{ + border-width:1px +} +table.frame-sides{ + border-width:0 1px +} +table.frame-topbot{ + border-width:1px 0 +} +th.halign-left,td.halign-left{ + text-align:left +} +th.halign-right,td.halign-right{ + text-align:right +} +th.halign-center,td.halign-center{ + text-align:center +} +th.valign-top,td.valign-top{ + vertical-align:top +} +th.valign-bottom,td.valign-bottom{ + vertical-align:bottom +} +th.valign-middle,td.valign-middle{ + vertical-align:middle +} +table thead th,table tfoot th{ + font-weight:bold +} +tbody tr th{ + display:table-cell; + line-height:1.6; + background:#f7f8f7 +} +tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{ + color:rgba(0,0,0,.8); + font-weight:bold +} +p.tableblock>code:only-child{ + background:none; + padding:0 +} +p.tableblock{ + font-size:1em +} +td>div.verse{ + white-space:pre +} +ol{ + margin-left:1.75em +} +ul li ol{ + margin-left:1.5em +} +dl dd{ + margin-left:1.125em +} +dl dd:last-child,dl dd:last-child>:last-child{ + margin-bottom:0 +} +ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{ + margin-bottom:.625em +} +ul.unstyled,ol.unnumbered,ul.checklist,ul.none{ + list-style-type:none +} +ul.unstyled,ol.unnumbered,ul.checklist{ + margin-left:.625em +} +ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{ + width:1em; + font-size:.85em +} +ul.checklist li>p:first-child>input[type="checkbox"]:first-child{ + width:1em; + position:relative; + top:1px +} +ul.inline{ + margin:0 auto .625em auto; + margin-left:-1.375em; + margin-right:0; + padding:0; + list-style:none; + overflow:hidden +} +ul.inline>li{ + list-style:none; + float:left; + margin-left:1.375em; + display:block +} +ul.inline>li>*{ + display:block +} +.unstyled dl dt{ + font-weight:400; + font-style:normal +} +ol.arabic{ + list-style-type:decimal +} +ol.decimal{ + list-style-type:decimal-leading-zero +} +ol.loweralpha{ + list-style-type:lower-alpha +} +ol.upperalpha{ + list-style-type:upper-alpha +} +ol.lowerroman{ + list-style-type:lower-roman +} +ol.upperroman{ + list-style-type:upper-roman +} +ol.lowergreek{ + list-style-type:lower-greek +} +.hdlist>table,.colist>table{ + border:0; + background:none +} +.hdlist>table>tbody>tr,.colist>table>tbody>tr{ + background:none +} +td.hdlist1,td.hdlist2{ + vertical-align:top; + padding:0 .625em +} +td.hdlist1{ + font-weight:bold; + padding-bottom:1.25em +} +.literalblock+.colist,.listingblock+.colist{ + margin-top:-.5em +} +.colist>table tr>td:first-of-type{ + padding:0 .75em; + line-height:1 +} +.colist>table tr>td:last-of-type{ + padding:.25em 0 +} +.thumb,.th{ + line-height:0; + display:inline-block; + border:solid 4px #fff; + -webkit-box-shadow:0 0 0 1px #ddd; + box-shadow:0 0 0 1px #ddd +} +.imageblock.left,.imageblock[style*="float: left"]{ + margin:.25em .625em 1.25em 0 +} +.imageblock.right,.imageblock[style*="float: right"]{ + margin:.25em 0 1.25em .625em +} +.imageblock>.title{ + margin-bottom:0 +} +.imageblock.thumb,.imageblock.th{ + border-width:6px +} +.imageblock.thumb>.title,.imageblock.th>.title{ + padding:0 .125em +} +.image.left,.image.right{ + margin-top:.25em; + margin-bottom:.25em; + display:inline-block; + line-height:0 +} +.image.left{ + margin-right:.625em +} +.image.right{ + margin-left:.625em +} +a.image{ + text-decoration:none; + display:inline-block +} +a.image object{ + pointer-events:none +} +sup.footnote,sup.footnoteref{ + font-size:.875em; + position:static; + vertical-align:super +} +sup.footnote a,sup.footnoteref a{ + text-decoration:none +} +sup.footnote a:active,sup.footnoteref a:active{ + text-decoration:underline +} +#footnotes{ + padding-top:.75em; + padding-bottom:.75em; + margin-bottom:.625em +} +#footnotes hr{ + width:20%; + min-width:6.25em; + margin:-.25em 0 .75em 0; + border-width:1px 0 0 0 +} +#footnotes .footnote{ + padding:0 .375em 0 .225em; + line-height:1.3334; + font-size:.875em; + margin-left:1.2em; + text-indent:-1.05em; + margin-bottom:.2em +} +#footnotes .footnote a:first-of-type{ + font-weight:bold; + text-decoration:none +} +#footnotes .footnote:last-of-type{ + margin-bottom:0 +} +#content #footnotes{ + margin-top:-.625em; + margin-bottom:0; + padding:.75em 0 +} +.gist .file-data>table{ + border:0; + background:#fff; + width:100%; + margin-bottom:0 +} +.gist .file-data>table td.line-data{ + width:99% +} +div.unbreakable{ + page-break-inside:avoid +} +.big{ + font-size:larger +} +.small{ + font-size:smaller +} +.underline{ + text-decoration:underline +} +.overline{ + text-decoration:overline +} +.line-through{ + text-decoration:line-through +} +.aqua{ + color:#00bfbf +} +.aqua-background{ + background-color:#00fafa +} +.black{ + color:#000 +} +.black-background{ + background-color:#000 +} +.blue{ + color:#0000bf +} +.blue-background{ + background-color:#0000fa +} +.fuchsia{ + color:#bf00bf +} +.fuchsia-background{ + background-color:#fa00fa +} +.gray{ + color:#606060 +} +.gray-background{ + background-color:#7d7d7d +} +.green{ + color:#006000 +} +.green-background{ + background-color:#007d00 +} +.lime{ + color:#00bf00 +} +.lime-background{ + background-color:#00fa00 +} +.maroon{ + color:#600000 +} +.maroon-background{ + background-color:#7d0000 +} +.navy{ + color:#000060 +} +.navy-background{ + background-color:#00007d +} +.olive{ + color:#606000 +} +.olive-background{ + background-color:#7d7d00 +} +.purple{ + color:#600060 +} +.purple-background{ + background-color:#7d007d +} +.red{ + color:#bf0000 +} +.red-background{ + background-color:#fa0000 +} +.silver{ + color:#909090 +} +.silver-background{ + background-color:#bcbcbc +} +.teal{ + color:#006060 +} +.teal-background{ + background-color:#007d7d +} +.white{ + color:#bfbfbf +} +.white-background{ + background-color:#fafafa +} +.yellow{ + color:#bfbf00 +} +.yellow-background{ + background-color:#fafa00 +} +span.icon>.fa{ + cursor:default +} +.admonitionblock td.icon [class^="fa icon-"]{ + font-size:2.5em; + text-shadow:1px 1px 2px rgba(0,0,0,.5); + cursor:default +} +.admonitionblock td.icon .icon-note:before{ + content:"\f05a"; + color:#19407c +} +.admonitionblock td.icon .icon-tip:before{ + content:"\f0eb"; + text-shadow:1px 1px 2px rgba(155,155,0,.8); + color:#111 +} +.admonitionblock td.icon .icon-warning:before{ + content:"\f071"; + color:#bf6900 +} +.admonitionblock td.icon .icon-caution:before{ + content:"\f06d"; + color:#bf3400 +} +.admonitionblock td.icon .icon-important:before{ + content:"\f06a"; + color:#bf0000 +} +.conum[data-value]{ + display:inline-block; + color:#fff!important; + background-color:rgba(0,0,0,.8); + -webkit-border-radius:100px; + border-radius:100px; + text-align:center; + font-size:.75em; + width:1.67em; + height:1.67em; + line-height:1.67em; + font-family:"Open Sans","DejaVu Sans",sans-serif; + font-style:normal; + font-weight:bold +} +.conum[data-value] *{ + color:#fff!important +} +.conum[data-value]+b{ + display:none +} +.conum[data-value]:after{ + content:attr(data-value) +} +pre .conum[data-value]{ + position:relative; + top:-.125em +} +b.conum *{ + color:inherit!important +} +.conum:not([data-value]):empty{ + display:none +} +dt,th.tableblock,td.content,div.footnote{ + text-rendering:optimizeLegibility +} +h1,h2,p,td.content,span.alt{ + letter-spacing:-.01em +} +p strong,td.content strong,div.footnote strong{ + letter-spacing:-.005em +} +p,blockquote,dt,td.content,span.alt{ + font-size:1.0625rem +} +p{ + margin-bottom:1.25rem +} +.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{ + font-size:1em +} +.exampleblock>.content{ + background-color:#fffef7; + border-color:#e0e0dc; + -webkit-box-shadow:0 1px 4px #e0e0dc; + box-shadow:0 1px 4px #e0e0dc +} +.print-only{ + display:none!important +} +@media print{ + @page{ + margin:1.25cm .75cm + } + *{ + -webkit-box-shadow:none!important; + box-shadow:none!important; + text-shadow:none!important + } + a{ + color:inherit!important; + text-decoration:underline!important + } + a.bare,a[href^="#"],a[href^="mailto:"]{ + text-decoration:none!important + } + a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{ + content:"(" attr(href) ")"; + display:inline-block; + font-size:.875em; + padding-left:.25em + } + abbr[title]:after{ + content:" (" attr(title) ")" + } + pre,blockquote,tr,img,object,svg{ + page-break-inside:avoid + } + thead{ + display:table-header-group + } + svg{ + max-width:100% + } + p,blockquote,dt,td.content{ + font-size:1em; + orphans:3; + widows:3 + } + h2,h3,#toctitle,.sidebarblock>.content>.title{ + page-break-after:avoid + } + #toc,.sidebarblock,.exampleblock>.content{ + background:none!important + } + #toc{ + border-bottom:1px solid #ddddd8!important; + padding-bottom:0!important + } + .sect1{ + padding-bottom:0!important + } + .sect1+.sect1{ + border:0!important + } + #header>h1:first-child{ + margin-top:1.25rem + } + body.book #header{ + text-align:center + } + body.book #header>h1:first-child{ + border:0!important; + margin:2.5em 0 1em 0 + } + body.book #header .details{ + border:0!important; + display:block; + padding:0!important + } + body.book #header .details span:first-child{ + margin-left:0!important + } + body.book #header .details br{ + display:block + } + body.book #header .details br+span:before{ + content:none!important + } + body.book #toc{ + border:0!important; + text-align:left!important; + padding:0!important; + margin:0!important + } + body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{ + page-break-before:always + } + .listingblock code[data-lang]:before{ + display:block + } + #footer{ + background:none!important; + padding:0 .9375em + } + #footer-text{ + color:rgba(0,0,0,.6)!important; + font-size:.9em + } + .hide-on-print{ + display:none!important + } + .print-only{ + display:block!important + } + .hide-for-print{ + display:none!important + } + .show-for-print{ + display:inherit!important + } +} diff --git a/docs/team/johndoe.adoc b/docs/team/johndoe.adoc index f39e76e49b2..c3e333bf583 100644 --- a/docs/team/johndoe.adoc +++ b/docs/team/johndoe.adoc @@ -9,7 +9,7 @@ == Overview -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. +AddressBook - Level 3 is a desktop location 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. == Summary of contributions diff --git a/docs/templates/LICENSE b/docs/templates/LICENSE index 2073b44dee6..4fcc8b29136 100644 --- a/docs/templates/LICENSE +++ b/docs/templates/LICENSE @@ -5,11 +5,11 @@ MIT License Copyright (C) 2012-2018 Dan Allen, Ryan Waldron and the Asciidoctor Project -Permission is hereby granted, free of charge, to any person obtaining a copy +Permission is hereby granted, free of charge, to any trip obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is +copies of the Software, and to permit trips to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in diff --git a/docs/tutorials/AddRemark.adoc b/docs/tutorials/AddRemark.adoc index 51044c36494..04c5131369b 100644 --- a/docs/tutorials/AddRemark.adoc +++ b/docs/tutorials/AddRemark.adoc @@ -16,7 +16,7 @@ toc::[] In this tutorial, we'll walk you through the implementation of a new command -- `remark`. -This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. +This command allows users of the AddressBook application to add optional remarks to people in their location book and edit it if required. The command should have the format of `remark INDEX r/REMARK`. An example of the command is `remark 2 r/Likes baseball`. @@ -28,7 +28,7 @@ Looking in the `logic.command` package, you will notice that each existing comma 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`. -Let's start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory. +Let's start by creating a new `RemarkCommand` class in the `src/main/java/seedu/location/logic/command` directory. 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. @@ -36,12 +36,12 @@ We accomplish that by returning a `CommandResult` with an accompanying message. .RemarkCommand.java [source, java] ---- -package seedu.address.logic.commands; +package seedu.location.logic.commands; -import seedu.address.model.Model; +import seedu.location.model.Model; /** - * Changes the remark of an existing person in the address book. + * Changes the remark of an existing trip in the location book. */ public class RemarkCommand extends Command { @@ -82,8 +82,8 @@ Following the convention in other commands, we add relevant messages as constant .RemarkCommand.java [source, java] ---- - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the remark of the person identified " - + "by the index number used in the last person listing. " + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the remark of the trip identified " + + "by the index number used in the last trip listing. " + "Existing remark will be overwritten by the input.\n" + "Parameters: INDEX (must be a positive integer) " + "r/ [REMARK]\n" @@ -110,7 +110,7 @@ While this is not a replacement for tests, it is an obvious way to tell if our c [source, java] ---- -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import static seedu.location.commons.util.CollectionUtil.requireAllNonNull; //... public class RemarkCommand extends Command { //... @@ -120,8 +120,8 @@ public class RemarkCommand extends Command { private final String remark; /** - * @param index of the person in the filtered person list to edit the remark - * @param remark of the person to be updated to + * @param index of the trip in the filtered trip list to edit the remark + * @param remark of the trip to be updated to */ public RemarkCommand(Index index, String remark) { requireAllNonNull(index, remark); @@ -160,7 +160,7 @@ Your code should look something like link:https://github.com/nus-cs2103-AY1920S1 Now let's move on to writing a parser that will extract the index and remark from the input provided by the user. -Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. +Create a `RemarkCommandParser` class in the `seedu.location.logic.parser` package. The class must extend the `Parser` interface. .The relationship between Parser and RemarkCommandParser @@ -246,12 +246,12 @@ If you are stuck, check out the sample link:https://github.com/nus-cs2103-AY1920 Now that we have all the information that we need, let's lay the groundwork for some _persistent_ changes. 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. +Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the trip'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 trip. === Add a new `Remark` class -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. +Create a new `Remark` in `trip`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code. A copy-paste and search-replace later, you should have something like link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/b7a47c50c8e5f0430d343a23d2863446b6ce9298#diff-af2f075d24dfcd333876f0fbce321f25[this]. Note how `Remark` has no constrains and thus does not require input validation. @@ -263,7 +263,7 @@ These should be relatively simple changes. == Add a placeholder element for remark to the UI -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. +Without getting too deep into `fxml`, let's go on a 5 minute adventure to get some placeholder text to show up for each trip. Simply add [source, java] @@ -273,7 +273,7 @@ Simply add private Label remark; ``` -to link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/2758455583f0101ed918a318fc75679270843a0d#diff-0c6b6abcfac8c205e075294f25e851fe[`seedu.address.ui.PersonCard`]. +to link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/2758455583f0101ed918a318fc75679270843a0d#diff-0c6b6abcfac8c205e075294f25e851fe[`seedu.location.ui.TripCard`]. `@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. @@ -314,7 +314,7 @@ Let's update `JsonAdaptedPerson` to work with our new `Person`! While the changes to code may be minimal, the test data will have to be updated as well. WARNING: 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! +Not doing so will cause AddressBook to default to an empty location book! Check out link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/ce4f9b70f524d2395948861d80d57fda9ae6e82e#diff-07708562699e2436c717f3330bafae1e[this commit] to see what the changes entail. @@ -326,9 +326,9 @@ Just add link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/5 [source, java] .PersonCard.java ---- -public PersonCard(Person person, int displayedIndex) { +public PersonCard(Person trip, int displayedIndex) { //... - remark.setText(person.getRemark().value); + remark.setText(trip.getRemark().value); } ---- diff --git a/docs/tutorials/RemovingFields.adoc b/docs/tutorials/RemovingFields.adoc index 5a50b6965a6..1ea26a8ebff 100644 --- a/docs/tutorials/RemovingFields.adoc +++ b/docs/tutorials/RemovingFields.adoc @@ -16,7 +16,7 @@ Perfection is achieved, not when there is nothing more to add, but when there is When working on Address Book, you will most likely find that some features and fields that are no longer necessary. In scenarios like this, you can consider refactoring the existing `Person` model to suit your use case. -In this tutorial, we'll do exactly just that and remove the `address` field from `Person`. +In this tutorial, we'll do exactly just that and remove the `location` field from `Person`. == Safely deleting `Address` @@ -24,7 +24,7 @@ Fortunately, the IntelliJ IDEA provides a robust refactoring tool that can ident Let's try to use it as much as we can. === Assisted refactoring -The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. +The `location` field in `Person` is actually an instance of the `seedu.address.homepage.model.trip.Locations` class. Since removing the `Address` class will break the application, we start by identifying ``Address``'s 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` > `Safe Delete` through the menu. @@ -45,14 +45,14 @@ Other usages like in `EditPersonDescriptor` may require more careful inspection. Let's try removing references to `Address` in `EditPersonDescriptor`. -. Safe delete the field `address` in `EditPersonDescriptor` +. Safe delete the field `location` in `EditPersonDescriptor` . Select `Yes` when prompted to remove getters and setters . Select `View Usages` again image:UnsafeDeleteOnField.png[width=1145px, height=583px] -. Remove the usages of `address` and select `Do refactor` when you are done. +. Remove the usages of `location` and select `Do refactor` when you are done. + 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. +For example, removing the `location` field from the `Person` class will require you to modify its constructor. . Repeat the steps for the remaining usages of `Address` @@ -61,13 +61,13 @@ After you are done, verify that the application still works by compiling and run === Manual refactoring 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` > `Find` > `Find in path`). +You can find them by searching for instances of the word `location` in your code (`Edit` > `Find` > `Find in path`). 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. +For example, there is a `$location` in each `PersonCard` that has not been removed nor identified. -image::$address.png[width=1090px, height=890px] +image::$location.png[width=1090px, height=890px] A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring. @@ -76,7 +76,7 @@ A quick look at the `PersonCard` class and its `fxml` file quickly reveals why i ---- ... @FXML -private Label address; +private Label location; ... ---- @@ -85,7 +85,7 @@ private Label address; ---- ...

    getAddress() { - return Optional.ofNullable(address); - } - - /** - * Sets {@code tags} to this object's {@code tags}. - * A defensive copy of {@code tags} is used internally. - */ - public void setTags(Set tags) { - this.tags = (tags != null) ? new HashSet<>(tags) : null; - } - - /** - * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException} - * if modification is attempted. - * Returns {@code Optional#empty()} if {@code tags} is null. - */ - public Optional> getTags() { - return (tags != null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty(); - } - - @Override - public boolean equals(Object other) { - // short circuit if same object - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof EditPersonDescriptor)) { - return false; - } - - // state check - EditPersonDescriptor e = (EditPersonDescriptor) other; - - return getName().equals(e.getName()) - && getPhone().equals(e.getPhone()) - && getEmail().equals(e.getEmail()) - && getAddress().equals(e.getAddress()) - && getTags().equals(e.getTags()); - } - } -} diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java deleted file mode 100644 index 84be6ad2596..00000000000 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ /dev/null @@ -1,24 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; - -import seedu.address.model.Model; - -/** - * Lists all persons in the address book to the user. - */ -public class ListCommand extends Command { - - public static final String COMMAND_WORD = "list"; - - public static final String MESSAGE_SUCCESS = "Listed all persons"; - - - @Override - public CommandResult execute(Model model) { - requireNonNull(model); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - return new CommandResult(MESSAGE_SUCCESS); - } -} diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java deleted file mode 100644 index 3b8bfa035e8..00000000000 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ /dev/null @@ -1,60 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Set; -import java.util.stream.Stream; - -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Parses input arguments and creates a new AddCommand object - */ -public class AddCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the AddCommand - * and returns an AddCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public AddCommand parse(String args) throws ParseException { - ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); - - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) - || !argMultimap.getPreamble().isEmpty()) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); - } - - Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); - Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); - Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); - Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); - Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - - Person person = new Person(name, phone, email, address, tagList); - - return new AddCommand(person); - } - - /** - * Returns true if none of the prefixes contains empty {@code Optional} values in the given - * {@code ArgumentMultimap}. - */ - private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { - return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); - } - -} diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java deleted file mode 100644 index 75b1a9bf119..00000000000 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ /dev/null @@ -1,15 +0,0 @@ -package seedu.address.logic.parser; - -/** - * Contains Command Line Interface (CLI) syntax definitions common to multiple commands - */ -public class CliSyntax { - - /* Prefix definitions */ - public static final Prefix PREFIX_NAME = new Prefix("n/"); - public static final Prefix PREFIX_PHONE = new Prefix("p/"); - public static final Prefix PREFIX_EMAIL = new Prefix("e/"); - public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); - public static final Prefix PREFIX_TAG = new Prefix("t/"); - -} diff --git a/src/main/java/seedu/address/model/AddressBook.java b/src/main/java/seedu/address/model/AddressBook.java deleted file mode 100644 index 1a943a0781a..00000000000 --- a/src/main/java/seedu/address/model/AddressBook.java +++ /dev/null @@ -1,120 +0,0 @@ -package seedu.address.model; - -import static java.util.Objects.requireNonNull; - -import java.util.List; - -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; -import seedu.address.model.person.UniquePersonList; - -/** - * Wraps all data at the address-book level - * Duplicates are not allowed (by .isSamePerson comparison) - */ -public class AddressBook implements ReadOnlyAddressBook { - - private final UniquePersonList persons; - - /* - * The 'unusual' code block below is a non-static initialization block, sometimes used to avoid duplication - * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html - * - * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication - * among constructors. - */ - { - persons = new UniquePersonList(); - } - - public AddressBook() {} - - /** - * Creates an AddressBook using the Persons in the {@code toBeCopied} - */ - public AddressBook(ReadOnlyAddressBook toBeCopied) { - this(); - resetData(toBeCopied); - } - - //// list overwrite operations - - /** - * Replaces the contents of the person list with {@code persons}. - * {@code persons} must not contain duplicate persons. - */ - public void setPersons(List persons) { - this.persons.setPersons(persons); - } - - /** - * Resets the existing data of this {@code AddressBook} with {@code newData}. - */ - public void resetData(ReadOnlyAddressBook newData) { - requireNonNull(newData); - - setPersons(newData.getPersonList()); - } - - //// person-level operations - - /** - * Returns true if a person with the same identity as {@code person} exists in the address book. - */ - public boolean hasPerson(Person person) { - requireNonNull(person); - return persons.contains(person); - } - - /** - * Adds a person to the address book. - * The person must not already exist in the address book. - */ - public void addPerson(Person p) { - persons.add(p); - } - - /** - * Replaces the given person {@code target} in the list with {@code editedPerson}. - * {@code target} must exist in the address book. - * The person identity of {@code editedPerson} must not be the same as another existing person in the address book. - */ - public void setPerson(Person target, Person editedPerson) { - requireNonNull(editedPerson); - - persons.setPerson(target, editedPerson); - } - - /** - * Removes {@code key} from this {@code AddressBook}. - * {@code key} must exist in the address book. - */ - public void removePerson(Person key) { - persons.remove(key); - } - - //// util methods - - @Override - public String toString() { - return persons.asUnmodifiableObservableList().size() + " persons"; - // TODO: refine later - } - - @Override - public ObservableList getPersonList() { - return persons.asUnmodifiableObservableList(); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof AddressBook // instanceof handles nulls - && persons.equals(((AddressBook) other).persons)); - } - - @Override - public int hashCode() { - return persons.hashCode(); - } -} diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java deleted file mode 100644 index d54df471c1f..00000000000 --- a/src/main/java/seedu/address/model/Model.java +++ /dev/null @@ -1,87 +0,0 @@ -package seedu.address.model; - -import java.nio.file.Path; -import java.util.function.Predicate; - -import javafx.collections.ObservableList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.model.person.Person; - -/** - * The API of the Model component. - */ -public interface Model { - /** {@code Predicate} that always evaluate to true */ - Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; - - /** - * Replaces user prefs data with the data in {@code userPrefs}. - */ - void setUserPrefs(ReadOnlyUserPrefs userPrefs); - - /** - * Returns the user prefs. - */ - ReadOnlyUserPrefs getUserPrefs(); - - /** - * Returns the user prefs' GUI settings. - */ - GuiSettings getGuiSettings(); - - /** - * Sets the user prefs' GUI settings. - */ - void setGuiSettings(GuiSettings guiSettings); - - /** - * Returns the user prefs' address book file path. - */ - Path getAddressBookFilePath(); - - /** - * Sets the user prefs' address book file path. - */ - void setAddressBookFilePath(Path addressBookFilePath); - - /** - * Replaces address book data with the data in {@code addressBook}. - */ - void setAddressBook(ReadOnlyAddressBook addressBook); - - /** Returns the AddressBook */ - ReadOnlyAddressBook getAddressBook(); - - /** - * Returns true if a person with the same identity as {@code person} exists in the address book. - */ - boolean hasPerson(Person person); - - /** - * Deletes the given person. - * The person must exist in the address book. - */ - void deletePerson(Person target); - - /** - * Adds the given person. - * {@code person} must not already exist in the address book. - */ - void addPerson(Person person); - - /** - * Replaces the given person {@code target} with {@code editedPerson}. - * {@code target} must exist in the address book. - * The person identity of {@code editedPerson} must not be the same as another existing person in the address book. - */ - void setPerson(Person target, Person editedPerson); - - /** Returns an unmodifiable view of the filtered person list */ - ObservableList getFilteredPersonList(); - - /** - * Updates the filter of the filtered person list to filter by the given {@code predicate}. - * @throws NullPointerException if {@code predicate} is null. - */ - void updateFilteredPersonList(Predicate predicate); -} diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java deleted file mode 100644 index 0650c954f5c..00000000000 --- a/src/main/java/seedu/address/model/ModelManager.java +++ /dev/null @@ -1,151 +0,0 @@ -package seedu.address.model; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.nio.file.Path; -import java.util.function.Predicate; -import java.util.logging.Logger; - -import javafx.collections.ObservableList; -import javafx.collections.transformation.FilteredList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.core.LogsCenter; -import seedu.address.model.person.Person; - -/** - * Represents the in-memory model of the address book data. - */ -public class ModelManager implements Model { - private static final Logger logger = LogsCenter.getLogger(ModelManager.class); - - private final AddressBook addressBook; - private final UserPrefs userPrefs; - private final FilteredList filteredPersons; - - /** - * Initializes a ModelManager with the given addressBook and userPrefs. - */ - public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) { - super(); - requireAllNonNull(addressBook, userPrefs); - - logger.fine("Initializing with address book: " + addressBook + " and user prefs " + userPrefs); - - this.addressBook = new AddressBook(addressBook); - this.userPrefs = new UserPrefs(userPrefs); - filteredPersons = new FilteredList<>(this.addressBook.getPersonList()); - } - - public ModelManager() { - this(new AddressBook(), new UserPrefs()); - } - - //=========== UserPrefs ================================================================================== - - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - requireNonNull(userPrefs); - this.userPrefs.resetData(userPrefs); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - return userPrefs; - } - - @Override - public GuiSettings getGuiSettings() { - return userPrefs.getGuiSettings(); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - requireNonNull(guiSettings); - userPrefs.setGuiSettings(guiSettings); - } - - @Override - public Path getAddressBookFilePath() { - return userPrefs.getAddressBookFilePath(); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - requireNonNull(addressBookFilePath); - userPrefs.setAddressBookFilePath(addressBookFilePath); - } - - //=========== AddressBook ================================================================================ - - @Override - public void setAddressBook(ReadOnlyAddressBook addressBook) { - this.addressBook.resetData(addressBook); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - return addressBook; - } - - @Override - public boolean hasPerson(Person person) { - requireNonNull(person); - return addressBook.hasPerson(person); - } - - @Override - public void deletePerson(Person target) { - addressBook.removePerson(target); - } - - @Override - public void addPerson(Person person) { - addressBook.addPerson(person); - updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - } - - @Override - public void setPerson(Person target, Person editedPerson) { - requireAllNonNull(target, editedPerson); - - addressBook.setPerson(target, editedPerson); - } - - //=========== Filtered Person List Accessors ============================================================= - - /** - * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of - * {@code versionedAddressBook} - */ - @Override - public ObservableList getFilteredPersonList() { - return filteredPersons; - } - - @Override - public void updateFilteredPersonList(Predicate predicate) { - requireNonNull(predicate); - filteredPersons.setPredicate(predicate); - } - - @Override - public boolean equals(Object obj) { - // short circuit if same object - if (obj == this) { - return true; - } - - // instanceof handles nulls - if (!(obj instanceof ModelManager)) { - return false; - } - - // state check - ModelManager other = (ModelManager) obj; - return addressBook.equals(other.addressBook) - && userPrefs.equals(other.userPrefs) - && filteredPersons.equals(other.filteredPersons); - } - -} diff --git a/src/main/java/seedu/address/model/person/Email.java b/src/main/java/seedu/address/model/person/Email.java deleted file mode 100644 index a5bbe0b6a5f..00000000000 --- a/src/main/java/seedu/address/model/person/Email.java +++ /dev/null @@ -1,67 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's email in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)} - */ -public class Email { - - private static final String SPECIAL_CHARACTERS = "!#$%&'*+/=?`{|}~^.-"; - public static final String MESSAGE_CONSTRAINTS = "Emails should be of the format local-part@domain " - + "and adhere to the following constraints:\n" - + "1. The local-part should only contain alphanumeric characters and these special characters, excluding " - + "the parentheses, (" + SPECIAL_CHARACTERS + ") .\n" - + "2. This is followed by a '@' and then a domain name. " - + "The domain name must:\n" - + " - be at least 2 characters long\n" - + " - start and end with alphanumeric characters\n" - + " - consist of alphanumeric characters, a period or a hyphen for the characters in between, if any."; - // alphanumeric and special characters - private static final String LOCAL_PART_REGEX = "^[\\w" + SPECIAL_CHARACTERS + "]+"; - private static final String DOMAIN_FIRST_CHARACTER_REGEX = "[^\\W_]"; // alphanumeric characters except underscore - private static final String DOMAIN_MIDDLE_REGEX = "[a-zA-Z0-9.-]*"; // alphanumeric, period and hyphen - private static final String DOMAIN_LAST_CHARACTER_REGEX = "[^\\W_]$"; - public static final String VALIDATION_REGEX = LOCAL_PART_REGEX + "@" - + DOMAIN_FIRST_CHARACTER_REGEX + DOMAIN_MIDDLE_REGEX + DOMAIN_LAST_CHARACTER_REGEX; - - public final String value; - - /** - * Constructs an {@code Email}. - * - * @param email A valid email address. - */ - public Email(String email) { - requireNonNull(email); - checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS); - value = email; - } - - /** - * Returns if a given string is a valid email. - */ - public static boolean isValidEmail(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof Email // instanceof handles nulls - && value.equals(((Email) other).value)); // state check - } - - @Override - public int hashCode() { - return value.hashCode(); - } - -} diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java deleted file mode 100644 index 557a7a60cd5..00000000000 --- a/src/main/java/seedu/address/model/person/Person.java +++ /dev/null @@ -1,120 +0,0 @@ -package seedu.address.model.person; - -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import seedu.address.model.tag.Tag; - -/** - * Represents a Person in the address book. - * Guarantees: details are present and not null, field values are validated, immutable. - */ -public class Person { - - // Identity fields - private final Name name; - private final Phone phone; - private final Email email; - - // Data fields - private final Address address; - private final Set tags = new HashSet<>(); - - /** - * Every field must be present and not null. - */ - public Person(Name name, Phone phone, Email email, Address address, Set tags) { - requireAllNonNull(name, phone, email, address, tags); - this.name = name; - this.phone = phone; - this.email = email; - this.address = address; - this.tags.addAll(tags); - } - - public Name getName() { - return name; - } - - public Phone getPhone() { - return phone; - } - - public Email getEmail() { - return email; - } - - public Address getAddress() { - return address; - } - - /** - * Returns an immutable tag set, which throws {@code UnsupportedOperationException} - * if modification is attempted. - */ - public Set getTags() { - return Collections.unmodifiableSet(tags); - } - - /** - * Returns true if both persons of the same name have at least one other identity field that is the same. - * This defines a weaker notion of equality between two persons. - */ - public boolean isSamePerson(Person otherPerson) { - if (otherPerson == this) { - return true; - } - - return otherPerson != null - && otherPerson.getName().equals(getName()) - && (otherPerson.getPhone().equals(getPhone()) || otherPerson.getEmail().equals(getEmail())); - } - - /** - * Returns true if both persons have the same identity and data fields. - * This defines a stronger notion of equality between two persons. - */ - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - if (!(other instanceof Person)) { - return false; - } - - Person otherPerson = (Person) other; - return otherPerson.getName().equals(getName()) - && otherPerson.getPhone().equals(getPhone()) - && otherPerson.getEmail().equals(getEmail()) - && otherPerson.getAddress().equals(getAddress()) - && otherPerson.getTags().equals(getTags()); - } - - @Override - public int hashCode() { - // use this method for custom fields hashing instead of implementing your own - return Objects.hash(name, phone, email, address, tags); - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append(getName()) - .append(" Phone: ") - .append(getPhone()) - .append(" Email: ") - .append(getEmail()) - .append(" Address: ") - .append(getAddress()) - .append(" Tags: "); - getTags().forEach(builder::append); - return builder.toString(); - } - -} diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java deleted file mode 100644 index 872c76b382f..00000000000 --- a/src/main/java/seedu/address/model/person/Phone.java +++ /dev/null @@ -1,53 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's phone number in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} - */ -public class Phone { - - - public static final String MESSAGE_CONSTRAINTS = - "Phone numbers should only contain numbers, and it should be at least 3 digits long"; - public static final String VALIDATION_REGEX = "\\d{3,}"; - public final String value; - - /** - * Constructs a {@code Phone}. - * - * @param phone A valid phone number. - */ - public Phone(String phone) { - requireNonNull(phone); - checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS); - value = phone; - } - - /** - * Returns true if a given string is a valid phone number. - */ - public static boolean isValidPhone(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof Phone // instanceof handles nulls - && value.equals(((Phone) other).value)); // state check - } - - @Override - public int hashCode() { - return value.hashCode(); - } - -} diff --git a/src/main/java/seedu/address/model/person/UniquePersonList.java b/src/main/java/seedu/address/model/person/UniquePersonList.java deleted file mode 100644 index 0fee4fe57e6..00000000000 --- a/src/main/java/seedu/address/model/person/UniquePersonList.java +++ /dev/null @@ -1,137 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.Iterator; -import java.util.List; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.model.person.exceptions.PersonNotFoundException; - -/** - * A list of persons that enforces uniqueness between its elements and does not allow nulls. - * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of - * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is - * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so - * as to ensure that the person with exactly the same fields will be removed. - * - * Supports a minimal set of list operations. - * - * @see Person#isSamePerson(Person) - */ -public class UniquePersonList implements Iterable { - - private final ObservableList internalList = FXCollections.observableArrayList(); - private final ObservableList internalUnmodifiableList = - FXCollections.unmodifiableObservableList(internalList); - - /** - * Returns true if the list contains an equivalent person as the given argument. - */ - public boolean contains(Person toCheck) { - requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSamePerson); - } - - /** - * Adds a person to the list. - * The person must not already exist in the list. - */ - public void add(Person toAdd) { - requireNonNull(toAdd); - if (contains(toAdd)) { - throw new DuplicatePersonException(); - } - internalList.add(toAdd); - } - - /** - * Replaces the person {@code target} in the list with {@code editedPerson}. - * {@code target} must exist in the list. - * The person identity of {@code editedPerson} must not be the same as another existing person in the list. - */ - public void setPerson(Person target, Person editedPerson) { - requireAllNonNull(target, editedPerson); - - int index = internalList.indexOf(target); - if (index == -1) { - throw new PersonNotFoundException(); - } - - if (!target.isSamePerson(editedPerson) && contains(editedPerson)) { - throw new DuplicatePersonException(); - } - - internalList.set(index, editedPerson); - } - - /** - * Removes the equivalent person from the list. - * The person must exist in the list. - */ - public void remove(Person toRemove) { - requireNonNull(toRemove); - if (!internalList.remove(toRemove)) { - throw new PersonNotFoundException(); - } - } - - public void setPersons(UniquePersonList replacement) { - requireNonNull(replacement); - internalList.setAll(replacement.internalList); - } - - /** - * Replaces the contents of this list with {@code persons}. - * {@code persons} must not contain duplicate persons. - */ - public void setPersons(List persons) { - requireAllNonNull(persons); - if (!personsAreUnique(persons)) { - throw new DuplicatePersonException(); - } - - internalList.setAll(persons); - } - - /** - * Returns the backing list as an unmodifiable {@code ObservableList}. - */ - public ObservableList asUnmodifiableObservableList() { - return internalUnmodifiableList; - } - - @Override - public Iterator iterator() { - return internalList.iterator(); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof UniquePersonList // instanceof handles nulls - && internalList.equals(((UniquePersonList) other).internalList)); - } - - @Override - public int hashCode() { - return internalList.hashCode(); - } - - /** - * Returns true if {@code persons} contains only unique persons. - */ - private boolean personsAreUnique(List persons) { - for (int i = 0; i < persons.size() - 1; i++) { - for (int j = i + 1; j < persons.size(); j++) { - if (persons.get(i).isSamePerson(persons.get(j))) { - return false; - } - } - } - return true; - } -} diff --git a/src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java b/src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java deleted file mode 100644 index fa764426ca7..00000000000 --- a/src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java +++ /dev/null @@ -1,6 +0,0 @@ -package seedu.address.model.person.exceptions; - -/** - * Signals that the operation is unable to find the specified person. - */ -public class PersonNotFoundException extends RuntimeException {} diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java deleted file mode 100644 index 1806da4facf..00000000000 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ /dev/null @@ -1,60 +0,0 @@ -package seedu.address.model.util; - -import java.util.Arrays; -import java.util.Set; -import java.util.stream.Collectors; - -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Contains utility methods for populating {@code AddressBook} with sample data. - */ -public class SampleDataUtil { - public static Person[] getSamplePersons() { - return new Person[] { - new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), - new Address("Blk 30 Geylang Street 29, #06-40"), - getTagSet("friends")), - new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), - new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), - getTagSet("colleagues", "friends")), - new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), - new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), - getTagSet("neighbours")), - new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), - new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), - getTagSet("family")), - new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), - new Address("Blk 47 Tampines Street 20, #17-35"), - getTagSet("classmates")), - new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), - new Address("Blk 45 Aljunied Street 85, #11-31"), - getTagSet("colleagues")) - }; - } - - public static ReadOnlyAddressBook getSampleAddressBook() { - AddressBook sampleAb = new AddressBook(); - for (Person samplePerson : getSamplePersons()) { - sampleAb.addPerson(samplePerson); - } - return sampleAb; - } - - /** - * Returns a tag set containing the list of strings given. - */ - public static Set getTagSet(String... strings) { - return Arrays.stream(strings) - .map(Tag::new) - .collect(Collectors.toSet()); - } - -} diff --git a/src/main/java/seedu/address/storage/AddressBookStorage.java b/src/main/java/seedu/address/storage/AddressBookStorage.java deleted file mode 100644 index 4599182b3f9..00000000000 --- a/src/main/java/seedu/address/storage/AddressBookStorage.java +++ /dev/null @@ -1,45 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyAddressBook; - -/** - * Represents a storage for {@link seedu.address.model.AddressBook}. - */ -public interface AddressBookStorage { - - /** - * Returns the file path of the data file. - */ - Path getAddressBookFilePath(); - - /** - * Returns AddressBook data as a {@link ReadOnlyAddressBook}. - * Returns {@code Optional.empty()} if storage file is not found. - * @throws DataConversionException if the data in storage is not in the expected format. - * @throws IOException if there was any problem when reading from the storage. - */ - Optional readAddressBook() throws DataConversionException, IOException; - - /** - * @see #getAddressBookFilePath() - */ - Optional readAddressBook(Path filePath) throws DataConversionException, IOException; - - /** - * Saves the given {@link ReadOnlyAddressBook} to the storage. - * @param addressBook cannot be null. - * @throws IOException if there was any problem writing to the file. - */ - void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException; - - /** - * @see #saveAddressBook(ReadOnlyAddressBook) - */ - void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException; - -} diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java deleted file mode 100644 index a6321cec2ea..00000000000 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ /dev/null @@ -1,109 +0,0 @@ -package seedu.address.storage; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Jackson-friendly version of {@link Person}. - */ -class JsonAdaptedPerson { - - public static final String MISSING_FIELD_MESSAGE_FORMAT = "Person's %s field is missing!"; - - private final String name; - private final String phone; - private final String email; - private final String address; - private final List tagged = new ArrayList<>(); - - /** - * Constructs a {@code JsonAdaptedPerson} with the given person details. - */ - @JsonCreator - public JsonAdaptedPerson(@JsonProperty("name") String name, @JsonProperty("phone") String phone, - @JsonProperty("email") String email, @JsonProperty("address") String address, - @JsonProperty("tagged") List tagged) { - this.name = name; - this.phone = phone; - this.email = email; - this.address = address; - if (tagged != null) { - this.tagged.addAll(tagged); - } - } - - /** - * Converts a given {@code Person} into this class for Jackson use. - */ - public JsonAdaptedPerson(Person source) { - name = source.getName().fullName; - phone = source.getPhone().value; - email = source.getEmail().value; - address = source.getAddress().value; - tagged.addAll(source.getTags().stream() - .map(JsonAdaptedTag::new) - .collect(Collectors.toList())); - } - - /** - * Converts this Jackson-friendly adapted person object into the model's {@code Person} object. - * - * @throws IllegalValueException if there were any data constraints violated in the adapted person. - */ - public Person toModelType() throws IllegalValueException { - final List personTags = new ArrayList<>(); - for (JsonAdaptedTag tag : tagged) { - personTags.add(tag.toModelType()); - } - - if (name == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName())); - } - if (!Name.isValidName(name)) { - throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS); - } - final Name modelName = new Name(name); - - if (phone == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName())); - } - if (!Phone.isValidPhone(phone)) { - throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS); - } - final Phone modelPhone = new Phone(phone); - - if (email == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName())); - } - if (!Email.isValidEmail(email)) { - throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS); - } - final Email modelEmail = new Email(email); - - if (address == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName())); - } - if (!Address.isValidAddress(address)) { - throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS); - } - final Address modelAddress = new Address(address); - - final Set modelTags = new HashSet<>(personTags); - return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags); - } - -} diff --git a/src/main/java/seedu/address/storage/JsonAddressBookStorage.java b/src/main/java/seedu/address/storage/JsonAddressBookStorage.java deleted file mode 100644 index dfab9daaa0d..00000000000 --- a/src/main/java/seedu/address/storage/JsonAddressBookStorage.java +++ /dev/null @@ -1,80 +0,0 @@ -package seedu.address.storage; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; -import java.util.logging.Logger; - -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.commons.util.FileUtil; -import seedu.address.commons.util.JsonUtil; -import seedu.address.model.ReadOnlyAddressBook; - -/** - * A class to access AddressBook data stored as a json file on the hard disk. - */ -public class JsonAddressBookStorage implements AddressBookStorage { - - private static final Logger logger = LogsCenter.getLogger(JsonAddressBookStorage.class); - - private Path filePath; - - public JsonAddressBookStorage(Path filePath) { - this.filePath = filePath; - } - - public Path getAddressBookFilePath() { - return filePath; - } - - @Override - public Optional readAddressBook() throws DataConversionException { - return readAddressBook(filePath); - } - - /** - * Similar to {@link #readAddressBook()}. - * - * @param filePath location of the data. Cannot be null. - * @throws DataConversionException if the file is not in the correct format. - */ - public Optional readAddressBook(Path filePath) throws DataConversionException { - requireNonNull(filePath); - - Optional jsonAddressBook = JsonUtil.readJsonFile( - filePath, JsonSerializableAddressBook.class); - if (!jsonAddressBook.isPresent()) { - return Optional.empty(); - } - - try { - return Optional.of(jsonAddressBook.get().toModelType()); - } catch (IllegalValueException ive) { - logger.info("Illegal values found in " + filePath + ": " + ive.getMessage()); - throw new DataConversionException(ive); - } - } - - @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException { - saveAddressBook(addressBook, filePath); - } - - /** - * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}. - * - * @param filePath location of the data. Cannot be null. - */ - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { - requireNonNull(addressBook); - requireNonNull(filePath); - - FileUtil.createIfMissing(filePath); - JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath); - } - -} diff --git a/src/main/java/seedu/address/storage/JsonSerializableAddressBook.java b/src/main/java/seedu/address/storage/JsonSerializableAddressBook.java deleted file mode 100644 index 5efd834091d..00000000000 --- a/src/main/java/seedu/address/storage/JsonSerializableAddressBook.java +++ /dev/null @@ -1,60 +0,0 @@ -package seedu.address.storage; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonRootName; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; - -/** - * An Immutable AddressBook that is serializable to JSON format. - */ -@JsonRootName(value = "addressbook") -class JsonSerializableAddressBook { - - public static final String MESSAGE_DUPLICATE_PERSON = "Persons list contains duplicate person(s)."; - - private final List persons = new ArrayList<>(); - - /** - * Constructs a {@code JsonSerializableAddressBook} with the given persons. - */ - @JsonCreator - public JsonSerializableAddressBook(@JsonProperty("persons") List persons) { - this.persons.addAll(persons); - } - - /** - * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use. - * - * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}. - */ - public JsonSerializableAddressBook(ReadOnlyAddressBook source) { - persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList())); - } - - /** - * Converts this address book into the model's {@code AddressBook} object. - * - * @throws IllegalValueException if there were any data constraints violated. - */ - public AddressBook toModelType() throws IllegalValueException { - AddressBook addressBook = new AddressBook(); - for (JsonAdaptedPerson jsonAdaptedPerson : persons) { - Person person = jsonAdaptedPerson.toModelType(); - if (addressBook.hasPerson(person)) { - throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON); - } - addressBook.addPerson(person); - } - return addressBook; - } - -} diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java deleted file mode 100644 index beda8bd9f11..00000000000 --- a/src/main/java/seedu/address/storage/Storage.java +++ /dev/null @@ -1,32 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; - -/** - * API of the Storage component - */ -public interface Storage extends AddressBookStorage, UserPrefsStorage { - - @Override - Optional readUserPrefs() throws DataConversionException, IOException; - - @Override - void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException; - - @Override - Path getAddressBookFilePath(); - - @Override - Optional readAddressBook() throws DataConversionException, IOException; - - @Override - void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException; - -} diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java deleted file mode 100644 index e4f452b6cbf..00000000000 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ /dev/null @@ -1,77 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; -import java.util.logging.Logger; - -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; - -/** - * Manages storage of AddressBook data in local storage. - */ -public class StorageManager implements Storage { - - private static final Logger logger = LogsCenter.getLogger(StorageManager.class); - private AddressBookStorage addressBookStorage; - private UserPrefsStorage userPrefsStorage; - - - public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) { - super(); - this.addressBookStorage = addressBookStorage; - this.userPrefsStorage = userPrefsStorage; - } - - // ================ UserPrefs methods ============================== - - @Override - public Path getUserPrefsFilePath() { - return userPrefsStorage.getUserPrefsFilePath(); - } - - @Override - public Optional readUserPrefs() throws DataConversionException, IOException { - return userPrefsStorage.readUserPrefs(); - } - - @Override - public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException { - userPrefsStorage.saveUserPrefs(userPrefs); - } - - - // ================ AddressBook methods ============================== - - @Override - public Path getAddressBookFilePath() { - return addressBookStorage.getAddressBookFilePath(); - } - - @Override - public Optional readAddressBook() throws DataConversionException, IOException { - return readAddressBook(addressBookStorage.getAddressBookFilePath()); - } - - @Override - public Optional readAddressBook(Path filePath) throws DataConversionException, IOException { - logger.fine("Attempting to read data from file: " + filePath); - return addressBookStorage.readAddressBook(filePath); - } - - @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException { - saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath()); - } - - @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { - logger.fine("Attempting to write to data file: " + filePath); - addressBookStorage.saveAddressBook(addressBook, filePath); - } - -} diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java deleted file mode 100644 index 0684b088868..00000000000 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ /dev/null @@ -1,74 +0,0 @@ -package seedu.address.ui; - -import java.util.Comparator; - -import javafx.fxml.FXML; -import javafx.scene.control.Label; -import javafx.scene.layout.FlowPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Region; -import seedu.address.model.person.Person; - -/** - * An UI component that displays information of a {@code Person}. - */ -public class PersonCard extends UiPart { - - private static final String FXML = "PersonListCard.fxml"; - - /** - * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. - * As a consequence, UI elements' variable names cannot be set to such keywords - * or an exception will be thrown by JavaFX during runtime. - * - * @see The issue on AddressBook level 4 - */ - - public final Person person; - - @FXML - private HBox cardPane; - @FXML - private Label name; - @FXML - private Label id; - @FXML - private Label phone; - @FXML - private Label address; - @FXML - private Label email; - @FXML - private FlowPane tags; - - public PersonCard(Person person, int displayedIndex) { - super(FXML); - this.person = person; - id.setText(displayedIndex + ". "); - name.setText(person.getName().fullName); - phone.setText(person.getPhone().value); - address.setText(person.getAddress().value); - email.setText(person.getEmail().value); - person.getTags().stream() - .sorted(Comparator.comparing(tag -> tag.tagName)) - .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); - } - - @Override - public boolean equals(Object other) { - // short circuit if same object - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof PersonCard)) { - return false; - } - - // state check - PersonCard card = (PersonCard) other; - return id.getText().equals(card.id.getText()) - && person.equals(card.person); - } -} diff --git a/src/main/java/seedu/address/ui/PersonListPanel.java b/src/main/java/seedu/address/ui/PersonListPanel.java deleted file mode 100644 index 1328917096e..00000000000 --- a/src/main/java/seedu/address/ui/PersonListPanel.java +++ /dev/null @@ -1,46 +0,0 @@ -package seedu.address.ui; - -import java.util.logging.Logger; - -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.layout.Region; -import seedu.address.commons.core.LogsCenter; -import seedu.address.model.person.Person; - -/** - * Panel containing the list of persons. - */ -public class PersonListPanel extends UiPart { - private static final String FXML = "PersonListPanel.fxml"; - private final Logger logger = LogsCenter.getLogger(PersonListPanel.class); - - @FXML - private ListView personListView; - - public PersonListPanel(ObservableList personList) { - super(FXML); - personListView.setItems(personList); - personListView.setCellFactory(listView -> new PersonListViewCell()); - } - - /** - * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}. - */ - class PersonListViewCell extends ListCell { - @Override - protected void updateItem(Person person, boolean empty) { - super.updateItem(person, empty); - - if (empty || person == null) { - setGraphic(null); - setText(null); - } else { - setGraphic(new PersonCard(person, getIndex() + 1).getRoot()); - } - } - } - -} diff --git a/src/main/java/seedu/address/AppParameters.java b/src/main/java/seedu/volant/AppParameters.java similarity index 93% rename from src/main/java/seedu/address/AppParameters.java rename to src/main/java/seedu/volant/AppParameters.java index ab552c398f3..77e387021b2 100644 --- a/src/main/java/seedu/address/AppParameters.java +++ b/src/main/java/seedu/volant/AppParameters.java @@ -1,4 +1,4 @@ -package seedu.address; +package seedu.volant; import java.nio.file.Path; import java.nio.file.Paths; @@ -7,8 +7,8 @@ import java.util.logging.Logger; import javafx.application.Application; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.util.FileUtil; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.util.FileUtil; /** * Represents the parsed command-line parameters given to the application. diff --git a/src/main/java/seedu/address/Main.java b/src/main/java/seedu/volant/Main.java similarity index 97% rename from src/main/java/seedu/address/Main.java rename to src/main/java/seedu/volant/Main.java index 052a5068631..5dfa5dd08fc 100644 --- a/src/main/java/seedu/address/Main.java +++ b/src/main/java/seedu/volant/Main.java @@ -1,4 +1,4 @@ -package seedu.address; +package seedu.volant; import javafx.application.Application; diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/volant/MainApp.java similarity index 74% rename from src/main/java/seedu/address/MainApp.java rename to src/main/java/seedu/volant/MainApp.java index e5cfb161b73..3cae55f89e4 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/volant/MainApp.java @@ -1,4 +1,4 @@ -package seedu.address; +package seedu.volant; import java.io.IOException; import java.nio.file.Path; @@ -7,29 +7,31 @@ import javafx.application.Application; import javafx.stage.Stage; -import seedu.address.commons.core.Config; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.core.Version; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.commons.util.ConfigUtil; -import seedu.address.commons.util.StringUtil; -import seedu.address.logic.Logic; -import seedu.address.logic.LogicManager; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; -import seedu.address.model.util.SampleDataUtil; -import seedu.address.storage.AddressBookStorage; -import seedu.address.storage.JsonAddressBookStorage; -import seedu.address.storage.JsonUserPrefsStorage; -import seedu.address.storage.Storage; -import seedu.address.storage.StorageManager; -import seedu.address.storage.UserPrefsStorage; -import seedu.address.ui.Ui; -import seedu.address.ui.UiManager; + +import seedu.volant.commons.core.Config; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.core.Version; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.commons.logic.Logic; +import seedu.volant.commons.logic.LogicManager; +import seedu.volant.commons.util.ConfigUtil; +import seedu.volant.commons.util.StringUtil; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.ReadOnlyUserPrefs; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.UserPrefs; +import seedu.volant.homepage.model.util.SampleDataUtil; +import seedu.volant.storage.JsonUserPrefsStorage; +import seedu.volant.storage.JsonVolantStorage; +import seedu.volant.storage.Storage; +import seedu.volant.storage.StorageManager; +import seedu.volant.storage.UserPrefsStorage; +import seedu.volant.storage.VolantStorage; +import seedu.volant.ui.Ui; +import seedu.volant.ui.UiManager; + /** * Runs the application. @@ -48,7 +50,7 @@ public class MainApp extends Application { @Override public void init() throws Exception { - logger.info("=============================[ Initializing AddressBook ]==========================="); + logger.info("=============================[ Initializing TripList ]==========================="); super.init(); AppParameters appParameters = AppParameters.parse(getParameters()); @@ -56,8 +58,8 @@ public void init() throws Exception { UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); UserPrefs userPrefs = initPrefs(userPrefsStorage); - AddressBookStorage addressBookStorage = new JsonAddressBookStorage(userPrefs.getAddressBookFilePath()); - storage = new StorageManager(addressBookStorage, userPrefsStorage); + VolantStorage volantStorage = new JsonVolantStorage(userPrefs.getVolantFilePath()); + storage = new StorageManager(volantStorage, userPrefsStorage); initLogging(config); @@ -74,20 +76,20 @@ public void init() throws Exception { * or an empty address book will be used instead if errors occur when reading {@code storage}'s address book. */ private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) { - Optional addressBookOptional; - ReadOnlyAddressBook initialData; + Optional addressBookOptional; + ReadOnlyTripList initialData; try { - addressBookOptional = storage.readAddressBook(); + addressBookOptional = storage.readTripList(); if (!addressBookOptional.isPresent()) { - logger.info("Data file not found. Will be starting with a sample AddressBook"); + logger.info("Data file not found. Will be starting with a sample trip list."); } initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); } catch (DataConversionException e) { - logger.warning("Data file not in the correct format. Will be starting with an empty AddressBook"); - initialData = new AddressBook(); + logger.warning("Data file not in the correct format. Will be starting with an empty trip list."); + initialData = new TripList(); } catch (IOException e) { - logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); - initialData = new AddressBook(); + logger.warning("Problem while reading from the file. Will be starting with an empty trip list."); + initialData = new TripList(); } return new ModelManager(initialData, userPrefs); @@ -151,7 +153,7 @@ protected UserPrefs initPrefs(UserPrefsStorage storage) { + "Using default user prefs"); initializedPrefs = new UserPrefs(); } catch (IOException e) { - logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); + logger.warning("Problem while reading from the file. Will be starting with an empty TripList"); initializedPrefs = new UserPrefs(); } @@ -167,13 +169,13 @@ protected UserPrefs initPrefs(UserPrefsStorage storage) { @Override public void start(Stage primaryStage) { - logger.info("Starting AddressBook " + MainApp.VERSION); + logger.info("Starting Volant " + MainApp.VERSION); ui.start(primaryStage); } @Override public void stop() { - logger.info("============================ [ Stopping Address Book ] ============================="); + logger.info("============================ [ Stopping Location Book ] ============================="); try { storage.saveUserPrefs(model.getUserPrefs()); } catch (IOException e) { diff --git a/src/main/java/seedu/address/commons/core/Config.java b/src/main/java/seedu/volant/commons/core/Config.java similarity index 97% rename from src/main/java/seedu/address/commons/core/Config.java rename to src/main/java/seedu/volant/commons/core/Config.java index 91145745521..1defad05d06 100644 --- a/src/main/java/seedu/address/commons/core/Config.java +++ b/src/main/java/seedu/volant/commons/core/Config.java @@ -1,4 +1,4 @@ -package seedu.address.commons.core; +package seedu.volant.commons.core; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/src/main/java/seedu/address/commons/core/GuiSettings.java b/src/main/java/seedu/volant/commons/core/GuiSettings.java similarity index 98% rename from src/main/java/seedu/address/commons/core/GuiSettings.java rename to src/main/java/seedu/volant/commons/core/GuiSettings.java index 5ace559ad15..e5b3575cc14 100644 --- a/src/main/java/seedu/address/commons/core/GuiSettings.java +++ b/src/main/java/seedu/volant/commons/core/GuiSettings.java @@ -1,4 +1,4 @@ -package seedu.address.commons.core; +package seedu.volant.commons.core; import java.awt.Point; import java.io.Serializable; diff --git a/src/main/java/seedu/address/commons/core/LogsCenter.java b/src/main/java/seedu/volant/commons/core/LogsCenter.java similarity index 99% rename from src/main/java/seedu/address/commons/core/LogsCenter.java rename to src/main/java/seedu/volant/commons/core/LogsCenter.java index 431e7185e76..8a7ec137bc9 100644 --- a/src/main/java/seedu/address/commons/core/LogsCenter.java +++ b/src/main/java/seedu/volant/commons/core/LogsCenter.java @@ -1,4 +1,4 @@ -package seedu.address.commons.core; +package seedu.volant.commons.core; import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/seedu/volant/commons/core/Messages.java b/src/main/java/seedu/volant/commons/core/Messages.java new file mode 100644 index 00000000000..37c74257b09 --- /dev/null +++ b/src/main/java/seedu/volant/commons/core/Messages.java @@ -0,0 +1,14 @@ +package seedu.volant.commons.core; + +/** + * Container for user visible messages. + */ +public class Messages { + + public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command"; + public static final String MESSAGE_INVALID_COMMAND_FORMAT = "Invalid command format! \n%1$s"; + public static final String MESSAGE_INVALID_TRIP_DISPLAYED_INDEX = "The trip index provided is invalid"; + public static final String MESSAGE_TRIPS_LISTED_OVERVIEW = "%1$d trips listed!"; + public static final String MESSAGE_MOVED_TO_TRIP = "Moved to trip #%1$d"; + +} diff --git a/src/main/java/seedu/address/commons/core/Version.java b/src/main/java/seedu/volant/commons/core/Version.java similarity index 98% rename from src/main/java/seedu/address/commons/core/Version.java rename to src/main/java/seedu/volant/commons/core/Version.java index e117f91b3b2..e1ffa2e4860 100644 --- a/src/main/java/seedu/address/commons/core/Version.java +++ b/src/main/java/seedu/volant/commons/core/Version.java @@ -1,4 +1,4 @@ -package seedu.address.commons.core; +package seedu.volant.commons.core; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/main/java/seedu/address/commons/core/index/Index.java b/src/main/java/seedu/volant/commons/core/index/Index.java similarity index 97% rename from src/main/java/seedu/address/commons/core/index/Index.java rename to src/main/java/seedu/volant/commons/core/index/Index.java index 19536439c09..dfca399d6a3 100644 --- a/src/main/java/seedu/address/commons/core/index/Index.java +++ b/src/main/java/seedu/volant/commons/core/index/Index.java @@ -1,4 +1,4 @@ -package seedu.address.commons.core.index; +package seedu.volant.commons.core.index; /** * Represents a zero-based or one-based index. diff --git a/src/main/java/seedu/address/commons/exceptions/DataConversionException.java b/src/main/java/seedu/volant/commons/exceptions/DataConversionException.java similarity index 84% rename from src/main/java/seedu/address/commons/exceptions/DataConversionException.java rename to src/main/java/seedu/volant/commons/exceptions/DataConversionException.java index 1f689bd8e3f..2cc0c8e0781 100644 --- a/src/main/java/seedu/address/commons/exceptions/DataConversionException.java +++ b/src/main/java/seedu/volant/commons/exceptions/DataConversionException.java @@ -1,4 +1,4 @@ -package seedu.address.commons.exceptions; +package seedu.volant.commons.exceptions; /** * Represents an error during conversion of data from one format to another diff --git a/src/main/java/seedu/address/commons/exceptions/IllegalValueException.java b/src/main/java/seedu/volant/commons/exceptions/IllegalValueException.java similarity index 93% rename from src/main/java/seedu/address/commons/exceptions/IllegalValueException.java rename to src/main/java/seedu/volant/commons/exceptions/IllegalValueException.java index 19124db485c..3bb30519a1f 100644 --- a/src/main/java/seedu/address/commons/exceptions/IllegalValueException.java +++ b/src/main/java/seedu/volant/commons/exceptions/IllegalValueException.java @@ -1,4 +1,4 @@ -package seedu.address.commons.exceptions; +package seedu.volant.commons.exceptions; /** * Signals that some given data does not fulfill some constraints. diff --git a/src/main/java/seedu/volant/commons/logic/Logic.java b/src/main/java/seedu/volant/commons/logic/Logic.java new file mode 100644 index 00000000000..1e44f4cb1f4 --- /dev/null +++ b/src/main/java/seedu/volant/commons/logic/Logic.java @@ -0,0 +1,37 @@ +package seedu.volant.commons.logic; + +import java.nio.file.Path; + +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; + +/** + * API of the Logic component + */ +public interface Logic { + /** + * Executes the command and returns the result. + * @param commandText The command as entered by the user. + * @return the result of the command execution. + * @throws CommandException If an error occurs during command execution. + * @throws ParseException If an error occurs during parsing. + */ + CommandResult execute(String commandText) throws CommandException, ParseException; + + /** + * Returns the user prefs' volant file path. + */ + Path getVolantFilePath(); + + /** + * Returns the user prefs' GUI settings. + */ + GuiSettings getGuiSettings(); + + /** + * Set the user prefs' GUI settings. + */ + void setGuiSettings(GuiSettings guiSettings); +} diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/volant/commons/logic/LogicManager.java similarity index 53% rename from src/main/java/seedu/address/logic/LogicManager.java rename to src/main/java/seedu/volant/commons/logic/LogicManager.java index d47ce874b1a..3387a12fcdd 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/volant/commons/logic/LogicManager.java @@ -1,21 +1,22 @@ -package seedu.address.logic; +package seedu.volant.commons.logic; import java.io.IOException; import java.nio.file.Path; import java.util.logging.Logger; import javafx.collections.ObservableList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.commands.Command; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.AddressBookParser; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.Model; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; -import seedu.address.storage.Storage; + +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.parser.InputParser; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.storage.Storage; /** * The main LogicManager of the app. @@ -26,12 +27,12 @@ public class LogicManager implements Logic { private final Model model; private final Storage storage; - private final AddressBookParser addressBookParser; + private final InputParser inputParser; public LogicManager(Model model, Storage storage) { this.model = model; this.storage = storage; - addressBookParser = new AddressBookParser(); + inputParser = new InputParser(); } @Override @@ -39,11 +40,11 @@ public CommandResult execute(String commandText) throws CommandException, ParseE logger.info("----------------[USER COMMAND][" + commandText + "]"); CommandResult commandResult; - Command command = addressBookParser.parseCommand(commandText); + Command command = inputParser.parseCommand(commandText); commandResult = command.execute(model); try { - storage.saveAddressBook(model.getAddressBook()); + storage.saveTripList(model.getTripList()); } catch (IOException ioe) { throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe); } @@ -51,19 +52,17 @@ public CommandResult execute(String commandText) throws CommandException, ParseE return commandResult; } - @Override - public ReadOnlyAddressBook getAddressBook() { - return model.getAddressBook(); + public ReadOnlyTripList getTripList() { + return model.getTripList(); } - @Override - public ObservableList getFilteredPersonList() { - return model.getFilteredPersonList(); + public ObservableList getFilteredTripList() { + return model.getFilteredTripList(); } @Override - public Path getAddressBookFilePath() { - return model.getAddressBookFilePath(); + public Path getVolantFilePath() { + return model.getVolantFilePath(); } @Override diff --git a/src/main/java/seedu/volant/commons/logic/Page.java b/src/main/java/seedu/volant/commons/logic/Page.java new file mode 100644 index 00000000000..6abee10e4ff --- /dev/null +++ b/src/main/java/seedu/volant/commons/logic/Page.java @@ -0,0 +1,8 @@ +package seedu.volant.commons.logic; + +/** + * Represents different page contexts. + */ +public enum Page { + HOMEPAGE, TRIP, ITINERARY, JOURNAL, BACK; +} diff --git a/src/main/java/seedu/address/logic/commands/Command.java b/src/main/java/seedu/volant/commons/logic/commands/Command.java similarity index 76% rename from src/main/java/seedu/address/logic/commands/Command.java rename to src/main/java/seedu/volant/commons/logic/commands/Command.java index 64f18992160..ad4e26c05fb 100644 --- a/src/main/java/seedu/address/logic/commands/Command.java +++ b/src/main/java/seedu/volant/commons/logic/commands/Command.java @@ -1,7 +1,7 @@ -package seedu.address.logic.commands; +package seedu.volant.commons.logic.commands; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.Model; /** * Represents a command with hidden internal logic and the ability to be executed. diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/volant/commons/logic/commands/CommandResult.java similarity index 56% rename from src/main/java/seedu/address/logic/commands/CommandResult.java rename to src/main/java/seedu/volant/commons/logic/commands/CommandResult.java index 92f900b7916..09e4a6cb0e4 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/volant/commons/logic/commands/CommandResult.java @@ -1,29 +1,42 @@ -package seedu.address.logic.commands; +package seedu.volant.commons.logic.commands; +import java.util.Objects; + +import seedu.volant.commons.logic.Page; +import seedu.volant.homepage.model.trip.Trip; + +import static seedu.volant.commons.logic.Page.TRIP; import static java.util.Objects.requireNonNull; -import java.util.Objects; /** * Represents the result of a command execution. */ public class CommandResult { - private final String feedbackToUser; + protected final String feedbackToUser; /** Help information should be shown to the user. */ - private final boolean showHelp; + protected final boolean showHelp; /** The application should exit. */ - private final boolean exit; + protected final boolean exit; + + /** The application should switch pages. */ + protected boolean gotoPage; + + protected Trip trip; + + protected Page page; /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean gotoPage) { this.feedbackToUser = requireNonNull(feedbackToUser); this.showHelp = showHelp; this.exit = exit; + this.gotoPage = gotoPage; } /** @@ -31,7 +44,19 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false); + this(feedbackToUser, false, false, false); + } + + public CommandResult(String feedbackToUser, Trip trip) { + this(feedbackToUser, false, false, true); + this.trip = trip; + this.page = TRIP; + } + + public CommandResult(String feedbackToUser, Page page) { + this(feedbackToUser, false, false, true); + this.trip = null; + this.page = page; } public String getFeedbackToUser() { @@ -46,6 +71,18 @@ public boolean isExit() { return exit; } + public boolean isGoto() { + return gotoPage; + } + + public Trip getTrip() { + return trip; + } + + public Page getPage() { + return page; + } + @Override public boolean equals(Object other) { if (other == this) { @@ -65,7 +102,7 @@ public boolean equals(Object other) { @Override public int hashCode() { - return Objects.hash(feedbackToUser, showHelp, exit); + return Objects.hash(feedbackToUser, showHelp, exit, gotoPage); } } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/volant/commons/logic/commands/ExitCommand.java similarity index 70% rename from src/main/java/seedu/address/logic/commands/ExitCommand.java rename to src/main/java/seedu/volant/commons/logic/commands/ExitCommand.java index 3dd85a8ba90..666c608fa40 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/volant/commons/logic/commands/ExitCommand.java @@ -1,6 +1,6 @@ -package seedu.address.logic.commands; +package seedu.volant.commons.logic.commands; -import seedu.address.model.Model; +import seedu.volant.homepage.model.Model; /** * Terminates the program. @@ -9,11 +9,11 @@ public class ExitCommand extends Command { public static final String COMMAND_WORD = "exit"; - public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Exiting Address Book as requested ..."; + public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Exiting Volant as requested ..."; @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false); } } diff --git a/src/main/java/seedu/volant/commons/logic/commands/GotoCommand.java b/src/main/java/seedu/volant/commons/logic/commands/GotoCommand.java new file mode 100644 index 00000000000..688bc4ff831 --- /dev/null +++ b/src/main/java/seedu/volant/commons/logic/commands/GotoCommand.java @@ -0,0 +1,8 @@ +package seedu.volant.commons.logic.commands; + +/** + * Represents a group of command objects that help to navigate through application. + */ +public abstract class GotoCommand extends Command { + public static final String COMMAND_WORD = "goto"; +} diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/volant/commons/logic/commands/HelpCommand.java similarity index 84% rename from src/main/java/seedu/address/logic/commands/HelpCommand.java rename to src/main/java/seedu/volant/commons/logic/commands/HelpCommand.java index bf824f91bd0..65852335224 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/volant/commons/logic/commands/HelpCommand.java @@ -1,6 +1,6 @@ -package seedu.address.logic.commands; +package seedu.volant.commons.logic.commands; -import seedu.address.model.Model; +import seedu.volant.homepage.model.Model; /** * Format full help instructions for every command for display. @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false); + return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false); } } diff --git a/src/main/java/seedu/address/logic/parser/ArgumentMultimap.java b/src/main/java/seedu/volant/commons/logic/parser/ArgumentMultimap.java similarity index 98% rename from src/main/java/seedu/address/logic/parser/ArgumentMultimap.java rename to src/main/java/seedu/volant/commons/logic/parser/ArgumentMultimap.java index 954c8e18f8e..bbd1fe1227d 100644 --- a/src/main/java/seedu/address/logic/parser/ArgumentMultimap.java +++ b/src/main/java/seedu/volant/commons/logic/parser/ArgumentMultimap.java @@ -1,4 +1,4 @@ -package seedu.address.logic.parser; +package seedu.volant.commons.logic.parser; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java b/src/main/java/seedu/volant/commons/logic/parser/ArgumentTokenizer.java similarity index 99% rename from src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java rename to src/main/java/seedu/volant/commons/logic/parser/ArgumentTokenizer.java index 5c9aebfa488..2979fd13ef0 100644 --- a/src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java +++ b/src/main/java/seedu/volant/commons/logic/parser/ArgumentTokenizer.java @@ -1,4 +1,4 @@ -package seedu.address.logic.parser; +package seedu.volant.commons.logic.parser; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/seedu/volant/commons/logic/parser/CliSyntax.java b/src/main/java/seedu/volant/commons/logic/parser/CliSyntax.java new file mode 100644 index 00000000000..4c0f9143abb --- /dev/null +++ b/src/main/java/seedu/volant/commons/logic/parser/CliSyntax.java @@ -0,0 +1,13 @@ +package seedu.volant.commons.logic.parser; + + +/** + * Contains Command Line Interface (CLI) syntax definitions common to multiple commands + */ +public class CliSyntax { + + /* Prefix definitions */ + public static final Prefix PREFIX_NAME = new Prefix("n/"); + public static final Prefix PREFIX_LOCATION = new Prefix("l/"); + public static final Prefix PREFIX_DATERANGE = new Prefix("d/"); +} diff --git a/src/main/java/seedu/volant/commons/logic/parser/GotoCommandParser.java b/src/main/java/seedu/volant/commons/logic/parser/GotoCommandParser.java new file mode 100644 index 00000000000..62e57c05b94 --- /dev/null +++ b/src/main/java/seedu/volant/commons/logic/parser/GotoCommandParser.java @@ -0,0 +1,25 @@ +package seedu.volant.commons.logic.parser; + +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.logic.commands.GotoTripCommand; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; + +/** + * Parses input arguments and creates a new GotoCommand object + */ +public class GotoCommandParser implements Parser { + + @Override + public GotoTripCommand parse(String tripIndex) throws ParseException { + try { + Index index = ParserUtil.parseIndex(tripIndex); + return new GotoTripCommand(index); + } catch (ParseException pe) { + throw new ParseException( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, GotoTripCommand.MESSAGE_USAGE, pe) + ); + } + } +} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/volant/commons/logic/parser/InputParser.java similarity index 60% rename from src/main/java/seedu/address/logic/parser/AddressBookParser.java rename to src/main/java/seedu/volant/commons/logic/parser/InputParser.java index 1e466792b46..8faa090b2e9 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/volant/commons/logic/parser/InputParser.java @@ -1,26 +1,31 @@ -package seedu.address.logic.parser; +package seedu.volant.commons.logic.parser; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; import java.util.regex.Matcher; import java.util.regex.Pattern; -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.ClearCommand; -import seedu.address.logic.commands.Command; -import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.ExitCommand; -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.commands.HelpCommand; -import seedu.address.logic.commands.ListCommand; -import seedu.address.logic.parser.exceptions.ParseException; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.ExitCommand; +import seedu.volant.commons.logic.commands.GotoCommand; +import seedu.volant.commons.logic.commands.HelpCommand; +import seedu.volant.homepage.logic.commands.AddCommand; +import seedu.volant.homepage.logic.commands.ClearCommand; +import seedu.volant.homepage.logic.commands.DeleteCommand; +import seedu.volant.homepage.logic.commands.EditCommand; +import seedu.volant.homepage.logic.commands.FindCommand; +import seedu.volant.homepage.logic.commands.ListCommand; +import seedu.volant.homepage.logic.parser.AddCommandParser; +import seedu.volant.homepage.logic.parser.DeleteCommandParser; +import seedu.volant.homepage.logic.parser.EditCommandParser; +import seedu.volant.homepage.logic.parser.FindCommandParser; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; /** * Parses user input. */ -public class AddressBookParser { +public class InputParser { /** * Used for initial separation of command word and args. @@ -68,6 +73,9 @@ public Command parseCommand(String userInput) throws ParseException { case HelpCommand.COMMAND_WORD: return new HelpCommand(); + case GotoCommand.COMMAND_WORD: + return new GotoCommandParser().parse(arguments); + default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } diff --git a/src/main/java/seedu/address/logic/parser/Parser.java b/src/main/java/seedu/volant/commons/logic/parser/Parser.java similarity index 69% rename from src/main/java/seedu/address/logic/parser/Parser.java rename to src/main/java/seedu/volant/commons/logic/parser/Parser.java index d6551ad8e3f..6a7ff0f1156 100644 --- a/src/main/java/seedu/address/logic/parser/Parser.java +++ b/src/main/java/seedu/volant/commons/logic/parser/Parser.java @@ -1,7 +1,7 @@ -package seedu.address.logic.parser; +package seedu.volant.commons.logic.parser; -import seedu.address.logic.commands.Command; -import seedu.address.logic.parser.exceptions.ParseException; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; /** * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}. diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/volant/commons/logic/parser/ParserUtil.java similarity index 58% rename from src/main/java/seedu/address/logic/parser/ParserUtil.java rename to src/main/java/seedu/volant/commons/logic/parser/ParserUtil.java index b117acb9c55..3a45a89f587 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/volant/commons/logic/parser/ParserUtil.java @@ -1,19 +1,19 @@ -package seedu.address.logic.parser; +package seedu.volant.commons.logic.parser; import static java.util.Objects.requireNonNull; +import java.time.LocalDate; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import seedu.address.commons.core.index.Index; -import seedu.address.commons.util.StringUtil; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.util.StringUtil; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.tag.Tag; +import seedu.volant.homepage.model.trip.DateRange; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; /** * Contains utility methods used for parsing strings in the various *Parser classes. @@ -51,50 +51,37 @@ public static Name parseName(String name) throws ParseException { } /** - * Parses a {@code String phone} into a {@code Phone}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code phone} is invalid. - */ - public static Phone parsePhone(String phone) throws ParseException { - requireNonNull(phone); - String trimmedPhone = phone.trim(); - if (!Phone.isValidPhone(trimmedPhone)) { - throw new ParseException(Phone.MESSAGE_CONSTRAINTS); - } - return new Phone(trimmedPhone); - } - - /** - * Parses a {@code String address} into an {@code Address}. + * Parses a {@code String address} into an {@code Location}. * Leading and trailing whitespaces will be trimmed. * * @throws ParseException if the given {@code address} is invalid. */ - public static Address parseAddress(String address) throws ParseException { - requireNonNull(address); - String trimmedAddress = address.trim(); - if (!Address.isValidAddress(trimmedAddress)) { - throw new ParseException(Address.MESSAGE_CONSTRAINTS); + public static Location parseLocation(String location) throws ParseException { + requireNonNull(location); + String trimmedAddress = location.trim(); + if (!Location.isValidLocation(trimmedAddress)) { + throw new ParseException(Location.MESSAGE_CONSTRAINTS); } - return new Address(trimmedAddress); + return new Location(trimmedAddress); } /** - * Parses a {@code String email} into an {@code Email}. - * Leading and trailing whitespaces will be trimmed. + * Parses a {@code String dateRange} int a {@code DateRange}. + * Leading an trailing whitespaces will be trimmed. * - * @throws ParseException if the given {@code email} is invalid. + * @throws ParseException if the given {@code dateRange} is invalid. */ - public static Email parseEmail(String email) throws ParseException { - requireNonNull(email); - String trimmedEmail = email.trim(); - if (!Email.isValidEmail(trimmedEmail)) { - throw new ParseException(Email.MESSAGE_CONSTRAINTS); + public static DateRange parseDateRange(String dateRange) throws ParseException { + requireNonNull(dateRange); + String trimmedDateRange = dateRange.trim(); + if (!DateRange.isValidDateRange(trimmedDateRange)) { + throw new ParseException(DateRange.MESSAGE_CONSTRAINTS); } - return new Email(trimmedEmail); + String[] splitDate = trimmedDateRange.split(" to "); + return new DateRange(LocalDate.parse(splitDate[0]), LocalDate.parse(splitDate[1])); } + /** * Parses a {@code String tag} into a {@code Tag}. * Leading and trailing whitespaces will be trimmed. diff --git a/src/main/java/seedu/address/logic/parser/Prefix.java b/src/main/java/seedu/volant/commons/logic/parser/Prefix.java similarity index 94% rename from src/main/java/seedu/address/logic/parser/Prefix.java rename to src/main/java/seedu/volant/commons/logic/parser/Prefix.java index c859d5fa5db..5d5d038b525 100644 --- a/src/main/java/seedu/address/logic/parser/Prefix.java +++ b/src/main/java/seedu/volant/commons/logic/parser/Prefix.java @@ -1,4 +1,4 @@ -package seedu.address.logic.parser; +package seedu.volant.commons.logic.parser; /** * A prefix that marks the beginning of an argument in an arguments string. diff --git a/src/main/java/seedu/address/commons/util/AppUtil.java b/src/main/java/seedu/volant/commons/util/AppUtil.java similarity index 94% rename from src/main/java/seedu/address/commons/util/AppUtil.java rename to src/main/java/seedu/volant/commons/util/AppUtil.java index da90201dfd6..db050feef1c 100644 --- a/src/main/java/seedu/address/commons/util/AppUtil.java +++ b/src/main/java/seedu/volant/commons/util/AppUtil.java @@ -1,9 +1,9 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static java.util.Objects.requireNonNull; import javafx.scene.image.Image; -import seedu.address.MainApp; +import seedu.volant.MainApp; /** * A container for App specific utility functions diff --git a/src/main/java/seedu/address/commons/util/CollectionUtil.java b/src/main/java/seedu/volant/commons/util/CollectionUtil.java similarity index 96% rename from src/main/java/seedu/address/commons/util/CollectionUtil.java rename to src/main/java/seedu/volant/commons/util/CollectionUtil.java index eafe4dfd681..c3b7631fe0a 100644 --- a/src/main/java/seedu/address/commons/util/CollectionUtil.java +++ b/src/main/java/seedu/volant/commons/util/CollectionUtil.java @@ -1,4 +1,4 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static java.util.Objects.requireNonNull; diff --git a/src/main/java/seedu/address/commons/util/ConfigUtil.java b/src/main/java/seedu/volant/commons/util/ConfigUtil.java similarity index 77% rename from src/main/java/seedu/address/commons/util/ConfigUtil.java rename to src/main/java/seedu/volant/commons/util/ConfigUtil.java index f7f8a2bd44c..1d7f5bd791e 100644 --- a/src/main/java/seedu/address/commons/util/ConfigUtil.java +++ b/src/main/java/seedu/volant/commons/util/ConfigUtil.java @@ -1,11 +1,11 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import java.io.IOException; import java.nio.file.Path; import java.util.Optional; -import seedu.address.commons.core.Config; -import seedu.address.commons.exceptions.DataConversionException; +import seedu.volant.commons.core.Config; +import seedu.volant.commons.exceptions.DataConversionException; /** * A class for accessing the Config File. diff --git a/src/main/java/seedu/address/commons/util/FileUtil.java b/src/main/java/seedu/volant/commons/util/FileUtil.java similarity index 98% rename from src/main/java/seedu/address/commons/util/FileUtil.java rename to src/main/java/seedu/volant/commons/util/FileUtil.java index b1e2767cdd9..5eb833acd95 100644 --- a/src/main/java/seedu/address/commons/util/FileUtil.java +++ b/src/main/java/seedu/volant/commons/util/FileUtil.java @@ -1,4 +1,4 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/seedu/address/commons/util/JsonUtil.java b/src/main/java/seedu/volant/commons/util/JsonUtil.java similarity index 97% rename from src/main/java/seedu/address/commons/util/JsonUtil.java rename to src/main/java/seedu/volant/commons/util/JsonUtil.java index 8ef609f055d..99ca573c643 100644 --- a/src/main/java/seedu/address/commons/util/JsonUtil.java +++ b/src/main/java/seedu/volant/commons/util/JsonUtil.java @@ -1,4 +1,4 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static java.util.Objects.requireNonNull; @@ -20,8 +20,8 @@ import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataConversionException; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.exceptions.DataConversionException; /** * Converts a Java object instance to JSON and vice versa diff --git a/src/main/java/seedu/address/commons/util/StringUtil.java b/src/main/java/seedu/volant/commons/util/StringUtil.java similarity index 95% rename from src/main/java/seedu/address/commons/util/StringUtil.java rename to src/main/java/seedu/volant/commons/util/StringUtil.java index 61cc8c9a1cb..6bf40b0b743 100644 --- a/src/main/java/seedu/address/commons/util/StringUtil.java +++ b/src/main/java/seedu/volant/commons/util/StringUtil.java @@ -1,7 +1,7 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.volant.commons.util.AppUtil.checkArgument; import java.io.PrintWriter; import java.io.StringWriter; diff --git a/src/main/java/seedu/volant/homepage/logic/commands/AddCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/AddCommand.java new file mode 100644 index 00000000000..c1f01f7ef9a --- /dev/null +++ b/src/main/java/seedu/volant/homepage/logic/commands/AddCommand.java @@ -0,0 +1,63 @@ +package seedu.volant.homepage.logic.commands; + +import static java.util.Objects.requireNonNull; + +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_DATERANGE; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_LOCATION; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_NAME; + +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.Trip; + +/** + * Adds a trip to the address book. + */ +public class AddCommand extends Command { + + public static final String COMMAND_WORD = "add"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a trip to the trip list. " + + "Parameters: " + + PREFIX_NAME + "NAME " + + PREFIX_LOCATION + "LOCATION " + + PREFIX_DATERANGE + "DATE RANGE " + + "Example: " + COMMAND_WORD + " " + + PREFIX_NAME + "Bali 2020 " + + PREFIX_LOCATION + "Bali " + + PREFIX_DATERANGE + "2020-02-01 to 2020-02-05 "; + + public static final String MESSAGE_SUCCESS = "New trip added: %1$s"; + public static final String MESSAGE_DUPLICATE_PERSON = "This trip already exists in the trip list"; + + private final Trip toAdd; + + /** + * Creates an AddCommand to add the specified {@code Trip} + */ + public AddCommand(Trip trip) { + requireNonNull(trip); + toAdd = trip; + } + + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + + if (model.hasTrip(toAdd)) { + throw new CommandException(MESSAGE_DUPLICATE_PERSON); + } + + model.addTrip(toAdd); + return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd)); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof AddCommand // instanceof handles nulls + && toAdd.equals(((AddCommand) other).toAdd)); + } +} diff --git a/src/main/java/seedu/volant/homepage/logic/commands/ClearCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/ClearCommand.java new file mode 100644 index 00000000000..0b187de4eb0 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/logic/commands/ClearCommand.java @@ -0,0 +1,25 @@ +package seedu.volant.homepage.logic.commands; + +import static java.util.Objects.requireNonNull; + +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.TripList; + +/** + * Clears the trip list. + */ +public class ClearCommand extends Command { + + public static final String COMMAND_WORD = "clear"; + public static final String MESSAGE_SUCCESS = "Trip list has been cleared!"; + + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + model.setTripList(new TripList()); + return new CommandResult(MESSAGE_SUCCESS); + } +} diff --git a/src/main/java/seedu/address/logic/commands/DeleteCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/DeleteCommand.java similarity index 58% rename from src/main/java/seedu/address/logic/commands/DeleteCommand.java rename to src/main/java/seedu/volant/homepage/logic/commands/DeleteCommand.java index 02fd256acba..7edf9512f36 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteCommand.java +++ b/src/main/java/seedu/volant/homepage/logic/commands/DeleteCommand.java @@ -1,28 +1,30 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static java.util.Objects.requireNonNull; import java.util.List; -import seedu.address.commons.core.Messages; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Person; +import seedu.volant.commons.core.Messages; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.Trip; /** - * Deletes a person identified using it's displayed index from the address book. + * Deletes a trip identified using it's displayed index from the address book. */ public class DeleteCommand extends Command { public static final String COMMAND_WORD = "delete"; public static final String MESSAGE_USAGE = COMMAND_WORD - + ": Deletes the person identified by the index number used in the displayed person list.\n" + + ": Deletes the trip identified by the index number used in the displayed trip list.\n" + "Parameters: INDEX (must be a positive integer)\n" + "Example: " + COMMAND_WORD + " 1"; - public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted Person: %1$s"; + public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted Trip: %1$s"; private final Index targetIndex; @@ -33,15 +35,15 @@ public DeleteCommand(Index targetIndex) { @Override public CommandResult execute(Model model) throws CommandException { requireNonNull(model); - List lastShownList = model.getFilteredPersonList(); + List lastShownList = model.getFilteredTripList(); if (targetIndex.getZeroBased() >= lastShownList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + throw new CommandException(Messages.MESSAGE_INVALID_TRIP_DISPLAYED_INDEX); } - Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); - model.deletePerson(personToDelete); - return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, personToDelete)); + Trip tripToDelete = lastShownList.get(targetIndex.getZeroBased()); + model.deleteTrip(tripToDelete); + return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, tripToDelete)); } @Override diff --git a/src/main/java/seedu/volant/homepage/logic/commands/EditCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/EditCommand.java new file mode 100644 index 00000000000..308b5c019ea --- /dev/null +++ b/src/main/java/seedu/volant/homepage/logic/commands/EditCommand.java @@ -0,0 +1,187 @@ +package seedu.volant.homepage.logic.commands; + +import static java.util.Objects.requireNonNull; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_LOCATION; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_DATERANGE; +import static seedu.volant.homepage.model.Model.PREDICATE_SHOW_ALL_PERSONS; + +import java.util.List; +import java.util.Optional; + +import seedu.volant.commons.core.Messages; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.util.CollectionUtil; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.DateRange; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; +import seedu.volant.homepage.model.trip.Trip; + +/** + * Edits the details of an existing trip in the location book. + */ +public class EditCommand extends Command { + + public static final String COMMAND_WORD = "edit"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the trip identified " + + "by the index number used in the displayed trip list. " + + "Existing values will be overwritten by the input values.\n" + + "Parameters: INDEX (must be a positive integer) " + + "[" + PREFIX_NAME + "NAME] " + + "[" + PREFIX_LOCATION + "LOCATION] " + + "[" + PREFIX_DATERANGE + "DATE RANGE] " + + "Example: " + COMMAND_WORD + " 1 "; + + public static final String MESSAGE_EDIT_PERSON_SUCCESS = "Edited Trip: %1$s"; + public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided."; + public static final String MESSAGE_DUPLICATE_PERSON = "This trip already exists in the location book."; + + private final Index index; + private final EditPersonDescriptor editPersonDescriptor; + + /** + * @param index of the trip in the filtered trip list to edit + * @param editPersonDescriptor details to edit the trip with + */ + public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) { + requireNonNull(index); + requireNonNull(editPersonDescriptor); + + this.index = index; + this.editPersonDescriptor = new EditPersonDescriptor(editPersonDescriptor); + } + + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + List lastShownList = model.getFilteredTripList(); + + if (index.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_TRIP_DISPLAYED_INDEX); + } + + Trip tripToEdit = lastShownList.get(index.getZeroBased()); + Trip editedTrip = createEditedPerson(tripToEdit, editPersonDescriptor); + + if (!tripToEdit.isSameTrip(editedTrip) && model.hasTrip(editedTrip)) { + throw new CommandException(MESSAGE_DUPLICATE_PERSON); + } + + model.setTrip(tripToEdit, editedTrip); + model.updateFilteredTripList(PREDICATE_SHOW_ALL_PERSONS); + return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedTrip)); + } + + /** + * Creates and returns a {@code Trip} with the details of {@code tripToEdit} + * edited with {@code editPersonDescriptor}. + */ + private static Trip createEditedPerson(Trip tripToEdit, EditPersonDescriptor editPersonDescriptor) { + assert tripToEdit != null; + + Name updatedName = editPersonDescriptor.getName().orElse(tripToEdit.getName()); + Location updatedLocation = editPersonDescriptor.getLocation().orElse(tripToEdit.getLocation()); + DateRange updatedDateRange = editPersonDescriptor.getDateRange().orElse(tripToEdit.getDateRange()); + + + return new Trip(updatedName, updatedLocation, updatedDateRange); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof EditCommand)) { + return false; + } + + // state check + EditCommand e = (EditCommand) other; + return index.equals(e.index) + && editPersonDescriptor.equals(e.editPersonDescriptor); + } + + /** + * Stores the details to edit the trip with. Each non-empty field value will replace the + * corresponding field value of the trip. + */ + public static class EditPersonDescriptor { + private Name name; + private Location location; + private DateRange dateRange; + + public EditPersonDescriptor() {} + + /** + * Copy constructor. + * A defensive copy of {@code tags} is used internally. + */ + public EditPersonDescriptor(EditPersonDescriptor toCopy) { + setName(toCopy.name); + setLocation(toCopy.location); + setDateRange(toCopy.dateRange); + } + + /** + * Returns true if at least one field is edited. + */ + public boolean isAnyFieldEdited() { + return CollectionUtil.isAnyNonNull(name, location, dateRange); + } + + public void setName(Name name) { + this.name = name; + } + + public Optional getName() { + return Optional.ofNullable(name); + } + + public void setLocation(Location location) { + this.location = location; + } + + public Optional getLocation() { + return Optional.ofNullable(location); + } + + public void setDateRange(DateRange dateRange) { + this.dateRange = dateRange; + } + + public Optional getDateRange() { + return Optional.ofNullable(dateRange); + } + + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof EditPersonDescriptor)) { + return false; + } + + // state check + EditPersonDescriptor e = (EditPersonDescriptor) other; + + return getName().equals(e.getName()) + && getLocation().equals(e.getLocation()) + && getDateRange().equals(e.getDateRange()); + } + + } +} diff --git a/src/main/java/seedu/address/logic/commands/FindCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/FindCommand.java similarity index 60% rename from src/main/java/seedu/address/logic/commands/FindCommand.java rename to src/main/java/seedu/volant/homepage/logic/commands/FindCommand.java index d6b19b0a0de..f2d412c456d 100644 --- a/src/main/java/seedu/address/logic/commands/FindCommand.java +++ b/src/main/java/seedu/volant/homepage/logic/commands/FindCommand.java @@ -1,23 +1,25 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static java.util.Objects.requireNonNull; -import seedu.address.commons.core.Messages; -import seedu.address.model.Model; -import seedu.address.model.person.NameContainsKeywordsPredicate; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.core.Messages; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; /** - * Finds and lists all persons in address book whose name contains any of the argument keywords. + * Finds and lists all trips in trip list whose name contains any of the argument keywords. * Keyword matching is case insensitive. */ public class FindCommand extends Command { public static final String COMMAND_WORD = "find"; - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all persons whose names contain any of " + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all trips whose names contain any of " + "the specified keywords (case-insensitive) and displays them as a list with index numbers.\n" + "Parameters: KEYWORD [MORE_KEYWORDS]...\n" - + "Example: " + COMMAND_WORD + " alice bob charlie"; + + "Example: " + COMMAND_WORD + " bali singapore paris"; private final NameContainsKeywordsPredicate predicate; @@ -28,9 +30,9 @@ public FindCommand(NameContainsKeywordsPredicate predicate) { @Override public CommandResult execute(Model model) { requireNonNull(model); - model.updateFilteredPersonList(predicate); + model.updateFilteredTripList(predicate); return new CommandResult( - String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size())); + String.format(Messages.MESSAGE_TRIPS_LISTED_OVERVIEW, model.getFilteredTripList().size())); } @Override diff --git a/src/main/java/seedu/volant/homepage/logic/commands/GotoTripCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/GotoTripCommand.java new file mode 100644 index 00000000000..03bcbd1fd30 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/logic/commands/GotoTripCommand.java @@ -0,0 +1,40 @@ +package seedu.volant.homepage.logic.commands; + +import java.util.List; + +import seedu.volant.commons.core.Messages; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.commands.GotoCommand; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.Trip; + +import static java.util.Objects.requireNonNull; + +public class GotoTripCommand extends GotoCommand { + private final Index targetIndex; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Goes to a trip in the trip list. \n" + + "Parameters: INDEX (must be a positive integer)\n" + + "Example: " + COMMAND_WORD + " 1"; + + public GotoTripCommand(Index targetIndex) { + this.targetIndex = targetIndex; + } + + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + + List lastShownList = model.getFilteredTripList(); + if (targetIndex.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_TRIP_DISPLAYED_INDEX); + } + + model.gotoTrip(targetIndex); + return new CommandResult(String.format(Messages.MESSAGE_MOVED_TO_TRIP, targetIndex.getOneBased()), + lastShownList.get(targetIndex.getZeroBased())); + } +} diff --git a/src/main/java/seedu/volant/homepage/logic/commands/ListCommand.java b/src/main/java/seedu/volant/homepage/logic/commands/ListCommand.java new file mode 100644 index 00000000000..33668551352 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/logic/commands/ListCommand.java @@ -0,0 +1,26 @@ +package seedu.volant.homepage.logic.commands; + +import static java.util.Objects.requireNonNull; +import static seedu.volant.homepage.model.Model.PREDICATE_SHOW_ALL_PERSONS; + +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.model.Model; + +/** + * Lists all trips in the address book to the user. + */ +public class ListCommand extends Command { + + public static final String COMMAND_WORD = "list"; + + public static final String MESSAGE_SUCCESS = "Listed all trips"; + + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + model.updateFilteredTripList(PREDICATE_SHOW_ALL_PERSONS); + return new CommandResult(MESSAGE_SUCCESS); + } +} diff --git a/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java b/src/main/java/seedu/volant/homepage/logic/commands/exceptions/CommandException.java similarity index 88% rename from src/main/java/seedu/address/logic/commands/exceptions/CommandException.java rename to src/main/java/seedu/volant/homepage/logic/commands/exceptions/CommandException.java index a16bd14f2cd..88d901685f6 100644 --- a/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java +++ b/src/main/java/seedu/volant/homepage/logic/commands/exceptions/CommandException.java @@ -1,4 +1,4 @@ -package seedu.address.logic.commands.exceptions; +package seedu.volant.homepage.logic.commands.exceptions; /** * Represents an error which occurs during execution of a {@link Command}. diff --git a/src/main/java/seedu/volant/homepage/logic/parser/AddCommandParser.java b/src/main/java/seedu/volant/homepage/logic/parser/AddCommandParser.java new file mode 100644 index 00000000000..1a1c0d73012 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/logic/parser/AddCommandParser.java @@ -0,0 +1,56 @@ +package seedu.volant.homepage.logic.parser; + +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.commons.logic.parser.CliSyntax.*; + +import java.util.stream.Stream; + +import seedu.volant.commons.logic.parser.ArgumentMultimap; +import seedu.volant.commons.logic.parser.ArgumentTokenizer; +import seedu.volant.commons.logic.parser.Parser; +import seedu.volant.commons.logic.parser.ParserUtil; +import seedu.volant.commons.logic.parser.Prefix; +import seedu.volant.homepage.logic.commands.AddCommand; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.trip.DateRange; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; +import seedu.volant.homepage.model.trip.Trip; + +/** + * Parses input arguments and creates a new AddCommand object + */ +public class AddCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the AddCommand + * and returns an AddCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public AddCommand parse(String args) throws ParseException { + ArgumentMultimap argMultimap = + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_LOCATION, PREFIX_DATERANGE); + + if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_LOCATION, PREFIX_DATERANGE) + || !argMultimap.getPreamble().isEmpty()) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); + } + + Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); + Location location = ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get()); + DateRange dateRange = ParserUtil.parseDateRange(argMultimap.getAllValues(PREFIX_DATERANGE).get(0)); + + Trip trip = new Trip(name, location, dateRange); + + return new AddCommand(trip); + } + + /** + * Returns true if none of the prefixes contains empty {@code Optional} values in the given + * {@code ArgumentMultimap}. + */ + private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { + return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); + } + +} diff --git a/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java b/src/main/java/seedu/volant/homepage/logic/parser/DeleteCommandParser.java similarity index 65% rename from src/main/java/seedu/address/logic/parser/DeleteCommandParser.java rename to src/main/java/seedu/volant/homepage/logic/parser/DeleteCommandParser.java index 522b93081cc..4de9b275ab3 100644 --- a/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java +++ b/src/main/java/seedu/volant/homepage/logic/parser/DeleteCommandParser.java @@ -1,10 +1,12 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.parser.exceptions.ParseException; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.logic.parser.Parser; +import seedu.volant.commons.logic.parser.ParserUtil; +import seedu.volant.homepage.logic.commands.DeleteCommand; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; /** * Parses input arguments and creates a new DeleteCommand object diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/volant/homepage/logic/parser/EditCommandParser.java similarity index 60% rename from src/main/java/seedu/address/logic/parser/EditCommandParser.java rename to src/main/java/seedu/volant/homepage/logic/parser/EditCommandParser.java index 845644b7dea..fb7e37b8155 100644 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ b/src/main/java/seedu/volant/homepage/logic/parser/EditCommandParser.java @@ -1,23 +1,23 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; import static java.util.Objects.requireNonNull; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.commons.logic.parser.CliSyntax.*; import java.util.Collection; import java.util.Collections; import java.util.Optional; import java.util.Set; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.tag.Tag; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.logic.parser.ArgumentMultimap; +import seedu.volant.commons.logic.parser.ArgumentTokenizer; +import seedu.volant.commons.logic.parser.Parser; +import seedu.volant.commons.logic.parser.ParserUtil; +import seedu.volant.homepage.logic.commands.EditCommand; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.tag.Tag; /** * Parses input arguments and creates a new EditCommand object @@ -32,7 +32,7 @@ public class EditCommandParser implements Parser { public EditCommand parse(String args) throws ParseException { requireNonNull(args); ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_LOCATION, PREFIX_DATERANGE); Index index; @@ -46,16 +46,12 @@ public EditCommand parse(String args) throws ParseException { if (argMultimap.getValue(PREFIX_NAME).isPresent()) { editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get())); } - if (argMultimap.getValue(PREFIX_PHONE).isPresent()) { - editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())); + if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) { + editPersonDescriptor.setLocation(ParserUtil.parseLocation(argMultimap.getValue(PREFIX_LOCATION).get())); } - if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) { - editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())); + if (argMultimap.getValue(PREFIX_DATERANGE).isPresent()) { + editPersonDescriptor.setDateRange(ParserUtil.parseDateRange(argMultimap.getValue(PREFIX_DATERANGE).get())); } - if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) { - editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())); - } - parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags); if (!editPersonDescriptor.isAnyFieldEdited()) { throw new ParseException(EditCommand.MESSAGE_NOT_EDITED); diff --git a/src/main/java/seedu/address/logic/parser/FindCommandParser.java b/src/main/java/seedu/volant/homepage/logic/parser/FindCommandParser.java similarity index 69% rename from src/main/java/seedu/address/logic/parser/FindCommandParser.java rename to src/main/java/seedu/volant/homepage/logic/parser/FindCommandParser.java index 4fb71f23103..6b47ed0f14d 100644 --- a/src/main/java/seedu/address/logic/parser/FindCommandParser.java +++ b/src/main/java/seedu/volant/homepage/logic/parser/FindCommandParser.java @@ -1,12 +1,13 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import java.util.Arrays; -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.NameContainsKeywordsPredicate; +import seedu.volant.commons.logic.parser.Parser; +import seedu.volant.homepage.logic.commands.FindCommand; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; /** * Parses input arguments and creates a new FindCommand object diff --git a/src/main/java/seedu/address/logic/parser/exceptions/ParseException.java b/src/main/java/seedu/volant/homepage/logic/parser/exceptions/ParseException.java similarity index 71% rename from src/main/java/seedu/address/logic/parser/exceptions/ParseException.java rename to src/main/java/seedu/volant/homepage/logic/parser/exceptions/ParseException.java index 158a1a54c1c..ca8f20b8a30 100644 --- a/src/main/java/seedu/address/logic/parser/exceptions/ParseException.java +++ b/src/main/java/seedu/volant/homepage/logic/parser/exceptions/ParseException.java @@ -1,6 +1,6 @@ -package seedu.address.logic.parser.exceptions; +package seedu.volant.homepage.logic.parser.exceptions; -import seedu.address.commons.exceptions.IllegalValueException; +import seedu.volant.commons.exceptions.IllegalValueException; /** * Represents a parse error encountered by a parser. diff --git a/src/main/java/seedu/volant/homepage/model/Model.java b/src/main/java/seedu/volant/homepage/model/Model.java new file mode 100644 index 00000000000..2dce61e55bc --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/Model.java @@ -0,0 +1,95 @@ +package seedu.volant.homepage.model; + +import java.nio.file.Path; +import java.util.function.Predicate; + +import javafx.collections.ObservableList; +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.model.trip.Trip; + +/** + * The API of the Model component. + */ +public interface Model { + /** {@code Predicate} that always evaluate to true */ + Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; + + /** + * Replaces user prefs data with the data in {@code userPrefs}. + */ + void setUserPrefs(ReadOnlyUserPrefs userPrefs); + + /** + * Returns the user prefs. + */ + ReadOnlyUserPrefs getUserPrefs(); + + /** + * Returns the user prefs' GUI settings. + */ + GuiSettings getGuiSettings(); + + /** + * Sets the user prefs' GUI settings. + */ + void setGuiSettings(GuiSettings guiSettings); + + /** + * Returns the user prefs' address book file path. + */ + Path getVolantFilePath(); + + /** + * Sets the user prefs' address book file path. + */ + void setVolantFilePath(Path addressBookFilePath); + + /** + * Replaces address book data with the data in {@code addressBook}. + */ + void setTripList(ReadOnlyTripList addressBook); + + /** Returns the TripList */ + ReadOnlyTripList getTripList(); + + /** + * Returns true if a trip with the same identity as {@code trip} exists in the address book. + */ + boolean hasTrip(Trip trip); + + /** + * Deletes the given trip. + * The trip must exist in the address book. + */ + void deleteTrip(Trip target); + + /** + * Returns trip to move to. + * @param targetIndex index to move to in trip list. + * @return targeted trip. + */ + Trip gotoTrip(Index targetIndex); + + /** + * Adds the given trip. + * {@code trip} must not already exist in the address book. + */ + void addTrip(Trip trip); + + /** + * Replaces the given trip {@code target} with {@code editedTrip}. + * {@code target} must exist in the address book. + * The trip identity of {@code editedTrip} must not be the same as another existing trip in the address book. + */ + void setTrip(Trip target, Trip editedTrip); + + /** Returns an unmodifiable view of the filtered trip list */ + ObservableList getFilteredTripList(); + + /** + * Updates the filter of the filtered trip list to filter by the given {@code predicate}. + * @throws NullPointerException if {@code predicate} is null. + */ + void updateFilteredTripList(Predicate predicate); +} diff --git a/src/main/java/seedu/volant/homepage/model/ModelManager.java b/src/main/java/seedu/volant/homepage/model/ModelManager.java new file mode 100644 index 00000000000..dc454a7de4b --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/ModelManager.java @@ -0,0 +1,158 @@ +package seedu.volant.homepage.model; + +import static java.util.Objects.requireNonNull; +import static seedu.volant.commons.util.CollectionUtil.requireAllNonNull; + +import java.nio.file.Path; +import java.util.function.Predicate; +import java.util.logging.Logger; + +import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; + +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.model.trip.Trip; + +/** + * Represents the in-memory model of the address book data. + */ +public class ModelManager implements Model { + private static final Logger logger = LogsCenter.getLogger(ModelManager.class); + + private final TripList tripList; + private final UserPrefs userPrefs; + private final FilteredList filteredTrips; + + /** + * Initializes a ModelManager with the given addressBook and userPrefs. + */ + public ModelManager(ReadOnlyTripList tripList, ReadOnlyUserPrefs userPrefs) { + super(); + requireAllNonNull(tripList, userPrefs); + + logger.fine("Initializing with trip list: " + tripList + " and user prefs " + userPrefs); + + this.tripList = new TripList(tripList); + this.userPrefs = new UserPrefs(userPrefs); + filteredTrips = new FilteredList<>(this.tripList.getTripList()); + } + + public ModelManager() { + this(new TripList(), new UserPrefs()); + } + + //=========== UserPrefs ================================================================================== + + @Override + public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { + requireNonNull(userPrefs); + this.userPrefs.resetData(userPrefs); + } + + @Override + public ReadOnlyUserPrefs getUserPrefs() { + return userPrefs; + } + + @Override + public GuiSettings getGuiSettings() { + return userPrefs.getGuiSettings(); + } + + @Override + public void setGuiSettings(GuiSettings guiSettings) { + requireNonNull(guiSettings); + userPrefs.setGuiSettings(guiSettings); + } + + @Override + public Path getVolantFilePath() { + return userPrefs.getVolantFilePath(); + } + + @Override + public void setVolantFilePath(Path volantFilePath) { + requireNonNull(volantFilePath); + userPrefs.setVolantFilePath(volantFilePath); + } + + //=========== TripList ================================================================================ + + @Override + public void setTripList(ReadOnlyTripList addressBook) { + this.tripList.resetData(addressBook); + } + + @Override + public ReadOnlyTripList getTripList() { + return tripList; + } + + @Override + public boolean hasTrip(Trip trip) { + requireNonNull(trip); + return tripList.hasTrip(trip); + } + + @Override + public void deleteTrip(Trip target) { + tripList.removeTrip(target); + } + + @Override + public Trip gotoTrip(Index targetIndex) { + return tripList.gotoTrip(targetIndex.getZeroBased()); + } + + @Override + public void addTrip(Trip trip) { + tripList.addTrip(trip); + updateFilteredTripList(PREDICATE_SHOW_ALL_PERSONS); + } + + @Override + public void setTrip(Trip target, Trip editedTrip) { + requireAllNonNull(target, editedTrip); + + tripList.setTrip(target, editedTrip); + } + + //=========== Filtered Trip List Accessors ============================================================= + + /** + * Returns an unmodifiable view of the list of {@code Trip} backed by the internal list of + * {@code versionedAddressBook} + */ + @Override + public ObservableList getFilteredTripList() { + return filteredTrips; + } + + @Override + public void updateFilteredTripList(Predicate predicate) { + requireNonNull(predicate); + filteredTrips.setPredicate(predicate); + } + + @Override + public boolean equals(Object obj) { + // short circuit if same object + if (obj == this) { + return true; + } + + // instanceof handles nulls + if (!(obj instanceof ModelManager)) { + return false; + } + + // state check + ModelManager other = (ModelManager) obj; + return tripList.equals(other.tripList) + && userPrefs.equals(other.userPrefs) + && filteredTrips.equals(other.filteredTrips); + } + +} diff --git a/src/main/java/seedu/address/model/ReadOnlyAddressBook.java b/src/main/java/seedu/volant/homepage/model/ReadOnlyTripList.java similarity index 58% rename from src/main/java/seedu/address/model/ReadOnlyAddressBook.java rename to src/main/java/seedu/volant/homepage/model/ReadOnlyTripList.java index 6ddc2cd9a29..81d71ef3bfb 100644 --- a/src/main/java/seedu/address/model/ReadOnlyAddressBook.java +++ b/src/main/java/seedu/volant/homepage/model/ReadOnlyTripList.java @@ -1,17 +1,18 @@ -package seedu.address.model; +package seedu.volant.homepage.model; import javafx.collections.ObservableList; -import seedu.address.model.person.Person; + +import seedu.volant.homepage.model.trip.Trip; /** * Unmodifiable view of an address book */ -public interface ReadOnlyAddressBook { +public interface ReadOnlyTripList { /** * Returns an unmodifiable view of the persons list. * This list will not contain any duplicate persons. */ - ObservableList getPersonList(); + ObservableList getTripList(); } diff --git a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java b/src/main/java/seedu/volant/homepage/model/ReadOnlyUserPrefs.java similarity index 57% rename from src/main/java/seedu/address/model/ReadOnlyUserPrefs.java rename to src/main/java/seedu/volant/homepage/model/ReadOnlyUserPrefs.java index befd58a4c73..53c9f8e6399 100644 --- a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java +++ b/src/main/java/seedu/volant/homepage/model/ReadOnlyUserPrefs.java @@ -1,8 +1,8 @@ -package seedu.address.model; +package seedu.volant.homepage.model; import java.nio.file.Path; -import seedu.address.commons.core.GuiSettings; +import seedu.volant.commons.core.GuiSettings; /** * Unmodifiable view of user prefs. @@ -11,6 +11,6 @@ public interface ReadOnlyUserPrefs { GuiSettings getGuiSettings(); - Path getAddressBookFilePath(); + Path getVolantFilePath(); } diff --git a/src/main/java/seedu/volant/homepage/model/TripList.java b/src/main/java/seedu/volant/homepage/model/TripList.java new file mode 100644 index 00000000000..8a080078ca5 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/TripList.java @@ -0,0 +1,125 @@ +package seedu.volant.homepage.model; + +import static java.util.Objects.requireNonNull; + +import java.util.List; + +import javafx.collections.ObservableList; + +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.trip.UniqueTripList; + +/** + * Wraps all data at the address-book level + * Duplicates are not allowed (by .isSamePerson comparison) + */ +public class TripList implements ReadOnlyTripList { + + private final UniqueTripList trips; + + /* + * The 'unusual' code block below is a non-static initialization block, sometimes used to avoid duplication + * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html + * + * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication + * among constructors. + */ + { + trips = new UniqueTripList(); + } + + public TripList() {} + + /** + * Creates an TripList using the Persons in the {@code toBeCopied} + */ + public TripList(ReadOnlyTripList toBeCopied) { + this(); + resetData(toBeCopied); + } + + //// list overwrite operations + + /** + * Replaces the contents of the trip list with {@code trips}. + * {@code trips} must not contain duplicate trips. + */ + public void setTrips(List trips) { + this.trips.setTrips(trips); + } + + /** + * Resets the existing data of this {@code TripList} with {@code newData}. + */ + public void resetData(ReadOnlyTripList newData) { + requireNonNull(newData); + + setTrips(newData.getTripList()); + } + + //// trip-level operations + + /** + * Returns true if a trip with the same identity as {@code trip} exists in the address book. + */ + public boolean hasTrip(Trip trip) { + requireNonNull(trip); + return trips.contains(trip); + } + + /** + * Adds a trip to the address book. + * The trip must not already exist in the address book. + */ + public void addTrip(Trip p) { + trips.add(p); + } + + /** + * Replaces the given trip {@code target} in the list with {@code editedTrip}. + * {@code target} must exist in the address book. + * The trip identity of {@code editedTrip} must not be the same as another existing trip in the address book. + */ + public void setTrip(Trip target, Trip editedTrip) { + requireNonNull(editedTrip); + + trips.setTrip(target, editedTrip); + } + + /** + * Removes {@code key} from this {@code TripList}. + * {@code key} must exist in the address book. + */ + public void removeTrip(Trip key) { + trips.remove(key); + } + + public Trip gotoTrip(int targetIndex) { + return trips.gotoTrip(targetIndex); + } + + //// util methods + + @Override + public String toString() { + return trips.asUnmodifiableObservableList().size() + " asscheeks"; + // TODO: refine later + } + + @Override + public ObservableList getTripList() { + return trips.asUnmodifiableObservableList(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof TripList // instanceof handles nulls + && trips.equals(((TripList) other).trips)); + } + + @Override + public int hashCode() { + return trips.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/volant/homepage/model/UserPrefs.java similarity index 88% rename from src/main/java/seedu/address/model/UserPrefs.java rename to src/main/java/seedu/volant/homepage/model/UserPrefs.java index 25a5fd6eab9..2314ae0fc31 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/volant/homepage/model/UserPrefs.java @@ -1,4 +1,4 @@ -package seedu.address.model; +package seedu.volant.homepage.model; import static java.util.Objects.requireNonNull; @@ -6,7 +6,7 @@ import java.nio.file.Paths; import java.util.Objects; -import seedu.address.commons.core.GuiSettings; +import seedu.volant.commons.core.GuiSettings; /** * Represents User's preferences. @@ -35,7 +35,7 @@ public UserPrefs(ReadOnlyUserPrefs userPrefs) { public void resetData(ReadOnlyUserPrefs newUserPrefs) { requireNonNull(newUserPrefs); setGuiSettings(newUserPrefs.getGuiSettings()); - setAddressBookFilePath(newUserPrefs.getAddressBookFilePath()); + setVolantFilePath(newUserPrefs.getVolantFilePath()); } public GuiSettings getGuiSettings() { @@ -47,11 +47,11 @@ public void setGuiSettings(GuiSettings guiSettings) { this.guiSettings = guiSettings; } - public Path getAddressBookFilePath() { + public Path getVolantFilePath() { return addressBookFilePath; } - public void setAddressBookFilePath(Path addressBookFilePath) { + public void setVolantFilePath(Path addressBookFilePath) { requireNonNull(addressBookFilePath); this.addressBookFilePath = addressBookFilePath; } diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/volant/homepage/model/tag/Tag.java similarity index 92% rename from src/main/java/seedu/address/model/tag/Tag.java rename to src/main/java/seedu/volant/homepage/model/tag/Tag.java index b0ea7e7dad7..bb01f5003e2 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/volant/homepage/model/tag/Tag.java @@ -1,7 +1,7 @@ -package seedu.address.model.tag; +package seedu.volant.homepage.model.tag; import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.volant.commons.util.AppUtil.checkArgument; /** * Represents a Tag in the address book. diff --git a/src/main/java/seedu/volant/homepage/model/trip/DateRange.java b/src/main/java/seedu/volant/homepage/model/trip/DateRange.java new file mode 100644 index 00000000000..497dae55ac8 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/trip/DateRange.java @@ -0,0 +1,53 @@ +package seedu.volant.homepage.model.trip; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * Represents date range of a trip. + */ +public class DateRange { + protected LocalDate from; + protected LocalDate to; + public final String value; + + public static String MESSAGE_CONSTRAINTS = "Date range must be in \"YYYY-MM-DD to YYYY-MM-DD\" format!!"; + protected final static String VALIDATION_REGEX = "^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|" + + "(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))( to )[0-9]{4}-(((0[13578]|(10|12))-" + + "(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$"; + protected final static DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd MMM yyyy"); + + + public DateRange(LocalDate from, LocalDate to) { + this.from = from; + this.to = to; + value = from.getYear() + "-" + + String.format("%02d", from.getMonthValue()) + "-" + + String.format("%02d", from.getDayOfMonth()) + " to " + + to.getYear() + "-" + + String.format("%02d", to.getMonthValue()) + "-" + + String.format("%02d", to.getDayOfMonth()); + } + + public static boolean isValidDateRange(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public String toString() { + return from.format(DATE_TIME_FORMATTER) + " - " + to.format(DATE_TIME_FORMATTER); + } + + @Override + public int hashCode() { + return value.hashCode(); + } + + @Override + public boolean equals(Object other) { + return other == this + || (other instanceof DateRange) + && value.equals(value); // state check + } + +} diff --git a/src/main/java/seedu/address/model/person/Address.java b/src/main/java/seedu/volant/homepage/model/trip/Location.java similarity index 58% rename from src/main/java/seedu/address/model/person/Address.java rename to src/main/java/seedu/volant/homepage/model/trip/Location.java index 60472ca22a0..2ad47e60ac3 100644 --- a/src/main/java/seedu/address/model/person/Address.java +++ b/src/main/java/seedu/volant/homepage/model/trip/Location.java @@ -1,13 +1,13 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.volant.commons.util.AppUtil.checkArgument; /** - * Represents a Person's address in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)} + * Represents a Trip's address in the address book. + * Guarantees: immutable; is valid as declared in {@link #isValidLocation(String)} */ -public class Address { +public class Location { public static final String MESSAGE_CONSTRAINTS = "Addresses can take any values, and it should not be blank"; @@ -20,20 +20,20 @@ public class Address { public final String value; /** - * Constructs an {@code Address}. + * Constructs an {@code Location}. * - * @param address A valid address. + * @param location A valid address. */ - public Address(String address) { - requireNonNull(address); - checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS); - value = address; + public Location(String location) { + requireNonNull(location); + checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS); + value = location; } /** * Returns true if a given string is a valid email. */ - public static boolean isValidAddress(String test) { + public static boolean isValidLocation(String test) { return test.matches(VALIDATION_REGEX); } @@ -45,8 +45,8 @@ public String toString() { @Override public boolean equals(Object other) { return other == this // short circuit if same object - || (other instanceof Address // instanceof handles nulls - && value.equals(((Address) other).value)); // state check + || (other instanceof Location // instanceof handles nulls + && value.equals(((Location) other).value)); // state check } @Override diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/volant/homepage/model/trip/Name.java similarity index 71% rename from src/main/java/seedu/address/model/person/Name.java rename to src/main/java/seedu/volant/homepage/model/trip/Name.java index 79244d71cf7..71c60f50917 100644 --- a/src/main/java/seedu/address/model/person/Name.java +++ b/src/main/java/seedu/volant/homepage/model/trip/Name.java @@ -1,16 +1,16 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.volant.commons.util.AppUtil.checkArgument; /** - * Represents a Person's name in the address book. + * Represents a Trip's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} */ public class Name { public static final String MESSAGE_CONSTRAINTS = - "Names should only contain alphanumeric characters and spaces, and it should not be blank"; + "Trip names should only contain alphanumeric characters and spaces, and it should not be blank"; /* * The first character of the address must not be a whitespace, @@ -18,7 +18,7 @@ public class Name { */ public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; - public final String fullName; + public final String tripName; /** * Constructs a {@code Name}. @@ -28,7 +28,7 @@ public class Name { public Name(String name) { requireNonNull(name); checkArgument(isValidName(name), MESSAGE_CONSTRAINTS); - fullName = name; + tripName = name; } /** @@ -41,19 +41,19 @@ public static boolean isValidName(String test) { @Override public String toString() { - return fullName; + return tripName; } @Override public boolean equals(Object other) { return other == this // short circuit if same object || (other instanceof Name // instanceof handles nulls - && fullName.equals(((Name) other).fullName)); // state check + && tripName.equals(((Name) other).tripName)); // state check } @Override public int hashCode() { - return fullName.hashCode(); + return tripName.hashCode(); } } diff --git a/src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java b/src/main/java/seedu/volant/homepage/model/trip/NameContainsKeywordsPredicate.java similarity index 73% rename from src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java rename to src/main/java/seedu/volant/homepage/model/trip/NameContainsKeywordsPredicate.java index c9b5868427c..20d0d1f849f 100644 --- a/src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java +++ b/src/main/java/seedu/volant/homepage/model/trip/NameContainsKeywordsPredicate.java @@ -1,14 +1,14 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import java.util.List; import java.util.function.Predicate; -import seedu.address.commons.util.StringUtil; +import seedu.volant.commons.util.StringUtil; /** - * Tests that a {@code Person}'s {@code Name} matches any of the keywords given. + * Tests that a {@code Trip}'s {@code Name} matches any of the keywords given. */ -public class NameContainsKeywordsPredicate implements Predicate { +public class NameContainsKeywordsPredicate implements Predicate { private final List keywords; public NameContainsKeywordsPredicate(List keywords) { @@ -16,9 +16,9 @@ public NameContainsKeywordsPredicate(List keywords) { } @Override - public boolean test(Person person) { + public boolean test(Trip trip) { return keywords.stream() - .anyMatch(keyword -> StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword)); + .anyMatch(keyword -> StringUtil.containsWordIgnoreCase(trip.getName().tripName, keyword)); } @Override diff --git a/src/main/java/seedu/volant/homepage/model/trip/Trip.java b/src/main/java/seedu/volant/homepage/model/trip/Trip.java new file mode 100644 index 00000000000..48bee4c855d --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/trip/Trip.java @@ -0,0 +1,107 @@ +package seedu.volant.homepage.model.trip; + +import static seedu.volant.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Objects; + +/** + * Represents a Trip in the location book. + * Guarantees: details are present and not null, field values are validated, immutable. + */ +public class Trip { + + // Identity fields + private final Name name; + + // Data fields + private final Location location; + private final DateRange dateRange; + + private TripFeatureList tripFeatureList; + + /** + * Every field must be present and not null. + */ + public Trip(Name name, Location location, DateRange dateRange) { + requireAllNonNull(name, location, dateRange); + this.name = name; + this.location = location; + this.dateRange = dateRange; + + tripFeatureList = new TripFeatureList(); + } + + public Name getName() { + return name; + } + + public DateRange getDateRange() { + return dateRange; + } + + public Location getLocation() { + return location; + } + + public TripFeatureList getTripFeatureList() { + return tripFeatureList; + } + + /* + public Set getTags() { + return Collections.unmodifiableSet(tags); + } + */ + + /** + * Returns true if both persons of the same name have at least one other identity field that is the same. + * This defines a weaker notion of equality between two persons. + */ + public boolean isSameTrip(Trip otherTrip) { + if (otherTrip == this) { + return true; + } + + return otherTrip != null + && otherTrip.getLocation().equals(getLocation()) + && (otherTrip.getDateRange().equals(getDateRange())); + } + + /** + * Returns true if both persons have the same identity and data fields. + * This defines a stronger notion of equality between two persons. + */ + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof Trip)) { + return false; + } + + Trip otherTrip = (Trip) other; + return otherTrip.getName().equals(getName()) + && otherTrip.getLocation().equals(getLocation()) + && otherTrip.getDateRange().equals(getDateRange()); + } + + @Override + public int hashCode() { + // use this method for custom fields hashing instead of implementing your own + return Objects.hash(name, location, dateRange); + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append(getName()) + .append("\nLocation: ") + .append(getLocation()) + .append("\nDate Range: ") + .append(getDateRange()); + return builder.toString(); + } + +} diff --git a/src/main/java/seedu/volant/homepage/model/trip/TripFeatureList.java b/src/main/java/seedu/volant/homepage/model/trip/TripFeatureList.java new file mode 100644 index 00000000000..d6634e59425 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/trip/TripFeatureList.java @@ -0,0 +1,42 @@ +package seedu.volant.homepage.model.trip; + +import java.util.ArrayList; +import java.util.Iterator; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +import seedu.volant.trippage.model.Itinerary; +import seedu.volant.trippage.model.Journal; +import seedu.volant.trippage.model.TripFeature; + +/** + * A list containing the items in a trip. + */ +public class TripFeatureList implements Iterable { + private ArrayList tripFeatureList; + + public TripFeatureList() { + tripFeatureList = new ArrayList<>(); + tripFeatureList.add(new Journal()); + tripFeatureList.add(new Itinerary()); + } + + public ArrayList getTripFeatureList() { + return tripFeatureList; + } + + public ObservableList getReadOnly() { + return FXCollections.observableArrayList(getTripFeatureList()); + } + + @Override + public int hashCode() { + return getTripFeatureList().hashCode(); + } + + @Override + public Iterator iterator() { + return getTripFeatureList().iterator(); + } +} diff --git a/src/main/java/seedu/volant/homepage/model/trip/UniqueTripList.java b/src/main/java/seedu/volant/homepage/model/trip/UniqueTripList.java new file mode 100644 index 00000000000..ce6c06a4c7b --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/trip/UniqueTripList.java @@ -0,0 +1,142 @@ +package seedu.volant.homepage.model.trip; + +import static java.util.Objects.requireNonNull; +import static seedu.volant.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Iterator; +import java.util.List; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.volant.homepage.model.trip.exceptions.DuplicateTripException; +import seedu.volant.homepage.model.trip.exceptions.PersonNotFoundException; + +/** + * A list of persons that enforces uniqueness between its elements and does not allow nulls. + * A trip is considered unique by comparing using {@code Trip#isSamePerson(Trip)}. As such, adding and updating of + * persons uses Trip#isSamePerson(Trip) for equality so as to ensure that the trip being added or updated is + * unique in terms of identity in the UniqueTripList. However, the removal of a trip uses Trip#equals(Object) so + * as to ensure that the trip with exactly the same fields will be removed. + * + * Supports a minimal set of list operations. + * + * @see Trip#isSameTrip(Trip) + */ +public class UniqueTripList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent trip as the given argument. + */ + public boolean contains(Trip toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameTrip); + } + + /** + * Adds a trip to the list. + * The trip must not already exist in the list. + */ + public void add(Trip toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateTripException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the trip {@code target} in the list with {@code editedTrip}. + * {@code target} must exist in the list. + * The trip identity of {@code editedTrip} must not be the same as another existing trip in the list. + */ + public void setTrip(Trip target, Trip editedTrip) { + requireAllNonNull(target, editedTrip); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new PersonNotFoundException(); + } + + if (!target.isSameTrip(editedTrip) && contains(editedTrip)) { + throw new DuplicateTripException(); + } + + internalList.set(index, editedTrip); + } + + /** + * Removes the equivalent trip from the list. + * The trip must exist in the list. + */ + public void remove(Trip toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new PersonNotFoundException(); + } + } + + + public Trip gotoTrip(int targetIndex) { + return internalList.get(targetIndex); + } + + /** + * Replaces the contents of this list with {@code trips}. + * {@code trips} must not contain duplicate trips. + */ + public void setTrips(List trips) { + requireAllNonNull(trips); + if (!tripsAreUnique(trips)) { + throw new DuplicateTripException(); + } + + internalList.setAll(trips); + } + + public void setTrips(UniqueTripList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof UniqueTripList // instanceof handles nulls + && internalList.equals(((UniqueTripList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code trips} contains only unique trips. + */ + private boolean tripsAreUnique(List trips) { + for (int i = 0; i < trips.size() - 1; i++) { + for (int j = i + 1; j < trips.size(); j++) { + if (trips.get(i).isSameTrip(trips.get(j))) { + return false; + } + } + } + return true; + } +} diff --git a/src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java b/src/main/java/seedu/volant/homepage/model/trip/exceptions/DuplicateTripException.java similarity index 58% rename from src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java rename to src/main/java/seedu/volant/homepage/model/trip/exceptions/DuplicateTripException.java index d7290f59442..a29666f6a07 100644 --- a/src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java +++ b/src/main/java/seedu/volant/homepage/model/trip/exceptions/DuplicateTripException.java @@ -1,11 +1,11 @@ -package seedu.address.model.person.exceptions; +package seedu.volant.homepage.model.trip.exceptions; /** * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same * identity). */ -public class DuplicatePersonException extends RuntimeException { - public DuplicatePersonException() { +public class DuplicateTripException extends RuntimeException { + public DuplicateTripException() { super("Operation would result in duplicate persons"); } } diff --git a/src/main/java/seedu/volant/homepage/model/trip/exceptions/PersonNotFoundException.java b/src/main/java/seedu/volant/homepage/model/trip/exceptions/PersonNotFoundException.java new file mode 100644 index 00000000000..42dc4c79010 --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/trip/exceptions/PersonNotFoundException.java @@ -0,0 +1,6 @@ +package seedu.volant.homepage.model.trip.exceptions; + +/** + * Signals that the operation is unable to find the specified trip. + */ +public class PersonNotFoundException extends RuntimeException {} diff --git a/src/main/java/seedu/volant/homepage/model/util/SampleDataUtil.java b/src/main/java/seedu/volant/homepage/model/util/SampleDataUtil.java new file mode 100644 index 00000000000..568076fe55a --- /dev/null +++ b/src/main/java/seedu/volant/homepage/model/util/SampleDataUtil.java @@ -0,0 +1,44 @@ +package seedu.volant.homepage.model.util; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.trip.DateRange; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.tag.Tag; + +/** + * Contains utility methods for populating {@code TripList} with sample data. + */ +public class SampleDataUtil { + public static Trip[] getSampleTrips() { + return new Trip[] { + new Trip(new Name("Graduation Trip"), new Location("Bali, Indonesia"), + new DateRange(LocalDate.parse("2020-02-01"), LocalDate.parse("2020-02-05"))) + }; + } + + public static ReadOnlyTripList getSampleAddressBook() { + TripList sampleAb = new TripList(); + for (Trip sampleTrip : getSampleTrips()) { + sampleAb.addTrip(sampleTrip); + } + return sampleAb; + } + + /** + * Returns a tag set containing the list of strings given. + */ + public static Set getTagSet(String... strings) { + return Arrays.stream(strings) + .map(Tag::new) + .collect(Collectors.toSet()); + } + +} diff --git a/src/main/java/seedu/address/storage/JsonAdaptedTag.java b/src/main/java/seedu/volant/storage/JsonAdaptedTag.java similarity index 88% rename from src/main/java/seedu/address/storage/JsonAdaptedTag.java rename to src/main/java/seedu/volant/storage/JsonAdaptedTag.java index 0df22bdb754..455868cb491 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedTag.java +++ b/src/main/java/seedu/volant/storage/JsonAdaptedTag.java @@ -1,10 +1,10 @@ -package seedu.address.storage; +package seedu.volant.storage; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.tag.Tag; +import seedu.volant.commons.exceptions.IllegalValueException; +import seedu.volant.homepage.model.tag.Tag; /** * Jackson-friendly version of {@link Tag}. diff --git a/src/main/java/seedu/volant/storage/JsonAdaptedTrip.java b/src/main/java/seedu/volant/storage/JsonAdaptedTrip.java new file mode 100644 index 00000000000..711ce6a7abd --- /dev/null +++ b/src/main/java/seedu/volant/storage/JsonAdaptedTrip.java @@ -0,0 +1,80 @@ +package seedu.volant.storage; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +import seedu.volant.commons.exceptions.IllegalValueException; +import seedu.volant.commons.logic.parser.ParserUtil; +import seedu.volant.homepage.model.trip.DateRange; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; +import seedu.volant.homepage.model.trip.Trip; + +/** + * Jackson-friendly version of {@link Trip}. + */ +class JsonAdaptedTrip { + + public static final String MISSING_FIELD_MESSAGE_FORMAT = "Trip's %s field is missing!"; + + private final String name; + private final String location; + private final String dateRange; + + /** + * Constructs a {@code JsonAdaptedTrip} with the given trip details. + */ + @JsonCreator + public JsonAdaptedTrip(@JsonProperty("name") String name, @JsonProperty("location") String location, + @JsonProperty("dateRange") String dateRange) { + this.name = name; + this.location = location; + this.dateRange = dateRange; + } + + /** + * Converts a given {@code Trip} into this class for Jackson use. + */ + public JsonAdaptedTrip(Trip source) { + name = source.getName().tripName; + location = source.getLocation().value; + dateRange = source.getDateRange().value; + } + + /** + * Converts this Jackson-friendly adapted trip object into the model's {@code Trip} object. + * + * @throws IllegalValueException if there were any data constraints violated in the adapted trip. + */ + public Trip toModelType() throws IllegalValueException { + + if (name == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName())); + } + if (!Name.isValidName(name)) { + throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS); + } + final Name modelName = new Name(name); + + if (location == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, + Location.class.getSimpleName())); + } + if (!Location.isValidLocation(location)) { + throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS); + } + final Location modelLocation = new Location(location); + + if (dateRange == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, + DateRange.class.getSimpleName())); + } + if (!DateRange.isValidDateRange(dateRange)) { + throw new IllegalValueException(DateRange.MESSAGE_CONSTRAINTS); + } + final DateRange dateRangeO = ParserUtil.parseDateRange(dateRange); + + return new Trip(modelName, modelLocation, dateRangeO); + } + +} diff --git a/src/main/java/seedu/volant/storage/JsonSerializableTripList.java b/src/main/java/seedu/volant/storage/JsonSerializableTripList.java new file mode 100644 index 00000000000..896c57a28b5 --- /dev/null +++ b/src/main/java/seedu/volant/storage/JsonSerializableTripList.java @@ -0,0 +1,60 @@ +package seedu.volant.storage; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRootName; + +import seedu.volant.commons.exceptions.IllegalValueException; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.trip.Trip; + +/** + * An Immutable TripList that is serializable to JSON format. + */ +@JsonRootName(value = "volant") +class JsonSerializableTripList { + + public static final String MESSAGE_DUPLICATE_PERSON = "Trip list contains duplicate trip(s)."; + + private final List trips = new ArrayList<>(); + + /** + * Constructs a {@code JsonSerializableTripList} with the given persons. + */ + @JsonCreator + public JsonSerializableTripList(@JsonProperty("trips") List trips) { + this.trips.addAll(trips); + } + + /** + * Converts a given {@code ReadOnlyTripList} into this class for Jackson use. + * + * @param source future changes to this will not affect the created {@code JsonSerializableTripList}. + */ + public JsonSerializableTripList(ReadOnlyTripList source) { + trips.addAll(source.getTripList().stream().map(JsonAdaptedTrip::new).collect(Collectors.toList())); + } + + /** + * Converts this address book into the model's {@code TripList} object. + * + * @throws IllegalValueException if there were any data constraints violated. + */ + public TripList toModelType() throws IllegalValueException { + TripList tripList = new TripList(); + for (JsonAdaptedTrip jsonAdaptedTrip : trips) { + Trip trip = jsonAdaptedTrip.toModelType(); + if (tripList.hasTrip(trip)) { + throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON); + } + tripList.addTrip(trip); + } + return tripList; + } + +} diff --git a/src/main/java/seedu/address/storage/JsonUserPrefsStorage.java b/src/main/java/seedu/volant/storage/JsonUserPrefsStorage.java similarity index 82% rename from src/main/java/seedu/address/storage/JsonUserPrefsStorage.java rename to src/main/java/seedu/volant/storage/JsonUserPrefsStorage.java index bc2bbad84aa..e456f66541f 100644 --- a/src/main/java/seedu/address/storage/JsonUserPrefsStorage.java +++ b/src/main/java/seedu/volant/storage/JsonUserPrefsStorage.java @@ -1,13 +1,13 @@ -package seedu.address.storage; +package seedu.volant.storage; import java.io.IOException; import java.nio.file.Path; import java.util.Optional; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.commons.util.JsonUtil; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.commons.util.JsonUtil; +import seedu.volant.homepage.model.ReadOnlyUserPrefs; +import seedu.volant.homepage.model.UserPrefs; /** * A class to access UserPrefs stored in the hard disk as a json file diff --git a/src/main/java/seedu/volant/storage/JsonVolantStorage.java b/src/main/java/seedu/volant/storage/JsonVolantStorage.java new file mode 100644 index 00000000000..6b12142a757 --- /dev/null +++ b/src/main/java/seedu/volant/storage/JsonVolantStorage.java @@ -0,0 +1,80 @@ +package seedu.volant.storage; + +import static java.util.Objects.requireNonNull; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Optional; +import java.util.logging.Logger; + +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.commons.exceptions.IllegalValueException; +import seedu.volant.commons.util.FileUtil; +import seedu.volant.commons.util.JsonUtil; +import seedu.volant.homepage.model.ReadOnlyTripList; + +/** + * A class to access TripList data stored as a json file on the hard disk. + */ +public class JsonVolantStorage implements VolantStorage { + + private static final Logger logger = LogsCenter.getLogger(JsonVolantStorage.class); + + private Path filePath; + + public JsonVolantStorage(Path filePath) { + this.filePath = filePath; + } + + public Path getVolantFilePath() { + return filePath; + } + + @Override + public Optional readTripList() throws DataConversionException { + return readTripList(filePath); + } + + /** + * Similar to {@link #readTripList()} ()}. + * + * @param filePath location of the data. Cannot be null. + * @throws DataConversionException if the file is not in the correct format. + */ + public Optional readTripList(Path filePath) throws DataConversionException { + requireNonNull(filePath); + + Optional jsonTripList = JsonUtil.readJsonFile( + filePath, JsonSerializableTripList.class); + if (!jsonTripList.isPresent()) { + return Optional.empty(); + } + + try { + return Optional.of(jsonTripList.get().toModelType()); + } catch (IllegalValueException ive) { + logger.info("Illegal values found in " + filePath + ": " + ive.getMessage()); + throw new DataConversionException(ive); + } + } + + @Override + public void saveTripList(ReadOnlyTripList tripList) throws IOException { + saveTripList(tripList, filePath); + } + + /** + * Similar to {@link #saveTripList(ReadOnlyTripList)}. + * + * @param filePath location of the data. Cannot be null. + */ + public void saveTripList(ReadOnlyTripList tripList, Path filePath) throws IOException { + requireNonNull(tripList); + requireNonNull(filePath); + + FileUtil.createIfMissing(filePath); + JsonUtil.saveJsonFile(new JsonSerializableTripList(tripList), filePath); + } + +} diff --git a/src/main/java/seedu/volant/storage/Storage.java b/src/main/java/seedu/volant/storage/Storage.java new file mode 100644 index 00000000000..5ad00fbe539 --- /dev/null +++ b/src/main/java/seedu/volant/storage/Storage.java @@ -0,0 +1,32 @@ +package seedu.volant.storage; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Optional; + +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.ReadOnlyUserPrefs; +import seedu.volant.homepage.model.UserPrefs; + +/** + * API of the Storage component + */ +public interface Storage extends VolantStorage, UserPrefsStorage { + + @Override + Optional readUserPrefs() throws DataConversionException, IOException; + + @Override + void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException; + + @Override + Path getVolantFilePath(); + + @Override + Optional readTripList() throws DataConversionException, IOException; + + @Override + void saveTripList(ReadOnlyTripList addressBook) throws IOException; + +} diff --git a/src/main/java/seedu/volant/storage/StorageManager.java b/src/main/java/seedu/volant/storage/StorageManager.java new file mode 100644 index 00000000000..e2187b1c972 --- /dev/null +++ b/src/main/java/seedu/volant/storage/StorageManager.java @@ -0,0 +1,77 @@ +package seedu.volant.storage; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Optional; +import java.util.logging.Logger; + +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.ReadOnlyUserPrefs; +import seedu.volant.homepage.model.UserPrefs; + +/** + * Manages storage of TripList data in local storage. + */ +public class StorageManager implements Storage { + + private static final Logger logger = LogsCenter.getLogger(StorageManager.class); + private VolantStorage volantStorage; + private UserPrefsStorage userPrefsStorage; + + + public StorageManager(VolantStorage volantStorage, UserPrefsStorage userPrefsStorage) { + super(); + this.volantStorage = volantStorage; + this.userPrefsStorage = userPrefsStorage; + } + + // ================ UserPrefs methods ============================== + + @Override + public Path getUserPrefsFilePath() { + return userPrefsStorage.getUserPrefsFilePath(); + } + + @Override + public Optional readUserPrefs() throws DataConversionException, IOException { + return userPrefsStorage.readUserPrefs(); + } + + @Override + public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException { + userPrefsStorage.saveUserPrefs(userPrefs); + } + + + // ================ TripList methods ============================== + + @Override + public Path getVolantFilePath() { + return volantStorage.getVolantFilePath(); + } + + @Override + public Optional readTripList() throws DataConversionException, IOException { + return readTripList(volantStorage.getVolantFilePath()); + } + + @Override + public Optional readTripList(Path filePath) throws DataConversionException, IOException { + logger.fine("Attempting to read data from file: " + filePath); + return volantStorage.readTripList(filePath); + } + + @Override + public void saveTripList(ReadOnlyTripList tripList) throws IOException { + saveTripList(tripList, volantStorage.getVolantFilePath()); + } + + @Override + public void saveTripList(ReadOnlyTripList tripList, Path filePath) throws IOException { + logger.fine("Attempting to write to data file: " + filePath); + volantStorage.saveTripList(tripList, filePath); + } + +} diff --git a/src/main/java/seedu/address/storage/UserPrefsStorage.java b/src/main/java/seedu/volant/storage/UserPrefsStorage.java similarity index 69% rename from src/main/java/seedu/address/storage/UserPrefsStorage.java rename to src/main/java/seedu/volant/storage/UserPrefsStorage.java index 29eef178dbc..40050b5e3f0 100644 --- a/src/main/java/seedu/address/storage/UserPrefsStorage.java +++ b/src/main/java/seedu/volant/storage/UserPrefsStorage.java @@ -1,15 +1,15 @@ -package seedu.address.storage; +package seedu.volant.storage; import java.io.IOException; import java.nio.file.Path; import java.util.Optional; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.homepage.model.ReadOnlyUserPrefs; +import seedu.volant.homepage.model.UserPrefs; /** - * Represents a storage for {@link seedu.address.model.UserPrefs}. + * Represents a storage for {@link seedu.volant.homepage.model.UserPrefs}. */ public interface UserPrefsStorage { @@ -27,7 +27,7 @@ public interface UserPrefsStorage { Optional readUserPrefs() throws DataConversionException, IOException; /** - * Saves the given {@link seedu.address.model.ReadOnlyUserPrefs} to the storage. + * Saves the given {@link seedu.volant.homepage.model.ReadOnlyUserPrefs} to the storage. * @param userPrefs cannot be null. * @throws IOException if there was any problem writing to the file. */ diff --git a/src/main/java/seedu/volant/storage/VolantStorage.java b/src/main/java/seedu/volant/storage/VolantStorage.java new file mode 100644 index 00000000000..fd4230a9326 --- /dev/null +++ b/src/main/java/seedu/volant/storage/VolantStorage.java @@ -0,0 +1,46 @@ +package seedu.volant.storage; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Optional; + +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.TripList; + +/** + * Represents a storage for {@link TripList}. + */ +public interface VolantStorage { + + /** + * Returns the file path of the data file. + */ + Path getVolantFilePath(); + + /** + * Returns TripList data as a {@link ReadOnlyTripList}. + * Returns {@code Optional.empty()} if storage file is not found. + * @throws DataConversionException if the data in storage is not in the expected format. + * @throws IOException if there was any problem when reading from the storage. + */ + Optional readTripList() throws DataConversionException, IOException; + + /** + * @see #getVolantFilePath() + */ + Optional readTripList(Path filePath) throws DataConversionException, IOException; + + /** + * Saves the given {@link ReadOnlyTripList} to the storage. + * @param tripList cannot be null. + * @throws IOException if there was any problem writing to the file. + */ + void saveTripList(ReadOnlyTripList tripList) throws IOException; + + /** + * @see #saveTripList(ReadOnlyTripList) + */ + void saveTripList(ReadOnlyTripList tripList, Path filePath) throws IOException; + +} diff --git a/src/main/java/seedu/volant/trippage/logic/TrippageLogicManager.java b/src/main/java/seedu/volant/trippage/logic/TrippageLogicManager.java new file mode 100644 index 00000000000..1b9fadc4b79 --- /dev/null +++ b/src/main/java/seedu/volant/trippage/logic/TrippageLogicManager.java @@ -0,0 +1,34 @@ +package seedu.volant.trippage.logic; + +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.Logic; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; + +import java.nio.file.Path; + +/** + * Logic manager for trip page. + */ +public class TrippageLogicManager implements Logic { + @Override + public CommandResult execute(String commandText) throws CommandException, ParseException { + return null; + } + + @Override + public Path getVolantFilePath() { + return null; + } + + @Override + public GuiSettings getGuiSettings() { + return null; + } + + @Override + public void setGuiSettings(GuiSettings guiSettings) { + + } +} diff --git a/src/main/java/seedu/volant/trippage/logic/commands/GotoItineraryCommand.java b/src/main/java/seedu/volant/trippage/logic/commands/GotoItineraryCommand.java new file mode 100644 index 00000000000..ebb1d4155c5 --- /dev/null +++ b/src/main/java/seedu/volant/trippage/logic/commands/GotoItineraryCommand.java @@ -0,0 +1,14 @@ +package seedu.volant.trippage.logic.commands; + +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.commands.GotoCommand; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.Model; + +public class GotoItineraryCommand extends GotoCommand { + + @Override + public CommandResult execute(Model model) throws CommandException { + return null; + } +} diff --git a/src/main/java/seedu/volant/trippage/logic/parser/GotoItineraryCommandParser.java b/src/main/java/seedu/volant/trippage/logic/parser/GotoItineraryCommandParser.java new file mode 100644 index 00000000000..1e9514f3855 --- /dev/null +++ b/src/main/java/seedu/volant/trippage/logic/parser/GotoItineraryCommandParser.java @@ -0,0 +1,4 @@ +package seedu.volant.trippage.logic.parser; + +public class GotoItineraryCommandParser { +} diff --git a/src/main/java/seedu/volant/trippage/model/Feature.java b/src/main/java/seedu/volant/trippage/model/Feature.java new file mode 100644 index 00000000000..1854a3bfb2a --- /dev/null +++ b/src/main/java/seedu/volant/trippage/model/Feature.java @@ -0,0 +1,8 @@ +package seedu.volant.trippage.model; + +/** + * Enum to represent features in a trip. + */ +public enum Feature { + ITINERARY, JOURNAL; +} diff --git a/src/main/java/seedu/volant/trippage/model/Itinerary.java b/src/main/java/seedu/volant/trippage/model/Itinerary.java new file mode 100644 index 00000000000..04329efd19f --- /dev/null +++ b/src/main/java/seedu/volant/trippage/model/Itinerary.java @@ -0,0 +1,21 @@ +package seedu.volant.trippage.model; + +import static seedu.volant.trippage.model.Feature.ITINERARY; + +/** + * Represents an itinerary. + */ +public class Itinerary extends TripFeature { + public static final Feature FEATURE = ITINERARY; + + /** + * Constructs itinerary object. + */ + public Itinerary() { + + } + + public Feature getFeature() { + return FEATURE; + } +} diff --git a/src/main/java/seedu/volant/trippage/model/Journal.java b/src/main/java/seedu/volant/trippage/model/Journal.java new file mode 100644 index 00000000000..249d879bd0d --- /dev/null +++ b/src/main/java/seedu/volant/trippage/model/Journal.java @@ -0,0 +1,21 @@ +package seedu.volant.trippage.model; + +import static seedu.volant.trippage.model.Feature.JOURNAL; + +/** + * Represents a journal + */ +public class Journal extends TripFeature { + public static final Feature FEATURE = JOURNAL; + + /** + * Constructs journal object. + */ + public Journal() { + + } + + public Feature getFeature() { + return FEATURE; + } +} diff --git a/src/main/java/seedu/volant/trippage/model/TripFeature.java b/src/main/java/seedu/volant/trippage/model/TripFeature.java new file mode 100644 index 00000000000..4a5dfc93e38 --- /dev/null +++ b/src/main/java/seedu/volant/trippage/model/TripFeature.java @@ -0,0 +1,8 @@ +package seedu.volant.trippage.model; + + +public abstract class TripFeature { + + public abstract Feature getFeature(); + +} diff --git a/src/main/java/seedu/address/ui/CommandBox.java b/src/main/java/seedu/volant/ui/CommandBox.java similarity index 87% rename from src/main/java/seedu/address/ui/CommandBox.java rename to src/main/java/seedu/volant/ui/CommandBox.java index 7d76e691f52..0321d9b8897 100644 --- a/src/main/java/seedu/address/ui/CommandBox.java +++ b/src/main/java/seedu/volant/ui/CommandBox.java @@ -1,12 +1,15 @@ -package seedu.address.ui; +package seedu.volant.ui; import javafx.collections.ObservableList; + import javafx.fxml.FXML; import javafx.scene.control.TextField; import javafx.scene.layout.Region; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.exceptions.ParseException; + +import seedu.volant.commons.logic.Logic; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; /** * The UI component that is responsible for receiving user command inputs. @@ -69,7 +72,7 @@ public interface CommandExecutor { /** * Executes the command and returns the result. * - * @see seedu.address.logic.Logic#execute(String) + * @see Logic#execute(String) */ CommandResult execute(String commandText) throws CommandException, ParseException; } diff --git a/src/main/java/seedu/address/ui/HelpWindow.java b/src/main/java/seedu/volant/ui/HelpWindow.java similarity index 97% rename from src/main/java/seedu/address/ui/HelpWindow.java rename to src/main/java/seedu/volant/ui/HelpWindow.java index 9a665915949..ee013372fae 100644 --- a/src/main/java/seedu/address/ui/HelpWindow.java +++ b/src/main/java/seedu/volant/ui/HelpWindow.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import java.util.logging.Logger; @@ -8,7 +8,7 @@ import javafx.scene.input.Clipboard; import javafx.scene.input.ClipboardContent; import javafx.stage.Stage; -import seedu.address.commons.core.LogsCenter; +import seedu.volant.commons.core.LogsCenter; /** * Controller for a help page diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/volant/ui/MainWindow.java similarity index 67% rename from src/main/java/seedu/address/ui/MainWindow.java rename to src/main/java/seedu/volant/ui/MainWindow.java index 90bbf11de97..5e02a68247d 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/volant/ui/MainWindow.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import java.util.logging.Logger; @@ -8,14 +8,22 @@ import javafx.scene.control.TextInputControl; import javafx.scene.input.KeyCombination; import javafx.scene.input.KeyEvent; +import javafx.scene.layout.Region; import javafx.scene.layout.StackPane; import javafx.stage.Stage; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.Logic; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.exceptions.ParseException; + +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.Logic; +import seedu.volant.commons.logic.LogicManager; +import seedu.volant.commons.logic.Page; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.trippage.logic.TrippageLogicManager; +import seedu.volant.ui.pages.homepage.TripListPanel; +import seedu.volant.ui.pages.trippage.TripPage; /** * The Main Window. Provides the basic application layout containing @@ -28,10 +36,11 @@ public class MainWindow extends UiPart { private final Logger logger = LogsCenter.getLogger(getClass()); private Stage primaryStage; + private Page currentPage; private Logic logic; // Independent Ui parts residing in this Ui container - private PersonListPanel personListPanel; + private UiPart mainPanel; private ResultDisplay resultDisplay; private HelpWindow helpWindow; @@ -42,7 +51,7 @@ public class MainWindow extends UiPart { private MenuItem helpMenuItem; @FXML - private StackPane personListPanelPlaceholder; + private StackPane mainPanelPlaceholder; @FXML private StackPane resultDisplayPlaceholder; @@ -107,13 +116,14 @@ private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) { * Fills up all the placeholders of this window. */ void fillInnerParts() { - personListPanel = new PersonListPanel(logic.getFilteredPersonList()); - personListPanelPlaceholder.getChildren().add(personListPanel.getRoot()); + LogicManager t = ((LogicManager) logic); + mainPanel = new TripListPanel(t.getFilteredTripList()); + mainPanelPlaceholder.getChildren().add(mainPanel.getRoot()); resultDisplay = new ResultDisplay(); resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot()); - StatusBarFooter statusBarFooter = new StatusBarFooter(logic.getAddressBookFilePath()); + StatusBarFooter statusBarFooter = new StatusBarFooter(logic.getVolantFilePath()); statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot()); CommandBox commandBox = new CommandBox(this::executeCommand); @@ -148,6 +158,14 @@ void show() { primaryStage.show(); } + public Page getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(Page page) { + this.currentPage = page; + } + /** * Closes the application. */ @@ -160,14 +178,56 @@ private void handleExit() { primaryStage.hide(); } - public PersonListPanel getPersonListPanel() { - return personListPanel; + public void updateLogic(Logic logic) { + this.logic = logic; + } + + + /** + * Handles command to go to a directory + * TODO: Fix this javadoc + */ + @FXML + public void handleGoto(Page page) { + switch (page) { + /* + case JOURNAL: + updateLogic(); + setPagePlaceholder(); + case HOMEPAGE: + updateLogic(); + setPagePlaceholder(); + case ITINERARY: + updateLogic(); + setPagePlaceholder(); + */ + default: + break; + } + } + + /** + * Handles command to go to a trip in the trip list. + * @param trip to navigate to. + */ + @FXML + public void handleGotoTrip(Trip trip) { + updateLogic(new TrippageLogicManager()); + mainPanelPlaceholder.getChildren().removeAll(mainPanel.getRoot()); + mainPanel = new TripPage(trip); + mainPanelPlaceholder.getChildren().add(mainPanel.getRoot()); + } + + /** + * Handles command to go back one directory. + */ + @FXML void handleBack() { + } /** * Executes the command and returns the result. - * - * @see seedu.address.logic.Logic#execute(String) + * @see Logic#execute(String) */ private CommandResult executeCommand(String commandText) throws CommandException, ParseException { try { @@ -183,7 +243,17 @@ private CommandResult executeCommand(String commandText) throws CommandException handleExit(); } + if (commandResult.isGoto()) { + switch (commandResult.getPage()) { + case TRIP: + handleGotoTrip(commandResult.getTrip()); + default: + handleGoto(commandResult.getPage()); + } + } + return commandResult; + } catch (CommandException | ParseException e) { logger.info("Invalid command: " + commandText); resultDisplay.setFeedbackToUser(e.getMessage()); diff --git a/src/main/java/seedu/address/ui/ResultDisplay.java b/src/main/java/seedu/volant/ui/ResultDisplay.java similarity index 95% rename from src/main/java/seedu/address/ui/ResultDisplay.java rename to src/main/java/seedu/volant/ui/ResultDisplay.java index 7d98e84eedf..78d8935a662 100644 --- a/src/main/java/seedu/address/ui/ResultDisplay.java +++ b/src/main/java/seedu/volant/ui/ResultDisplay.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import static java.util.Objects.requireNonNull; diff --git a/src/main/java/seedu/address/ui/StatusBarFooter.java b/src/main/java/seedu/volant/ui/StatusBarFooter.java similarity index 95% rename from src/main/java/seedu/address/ui/StatusBarFooter.java rename to src/main/java/seedu/volant/ui/StatusBarFooter.java index 7e17911323f..4031f5982af 100644 --- a/src/main/java/seedu/address/ui/StatusBarFooter.java +++ b/src/main/java/seedu/volant/ui/StatusBarFooter.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/src/main/java/seedu/address/ui/Ui.java b/src/main/java/seedu/volant/ui/Ui.java similarity index 86% rename from src/main/java/seedu/address/ui/Ui.java rename to src/main/java/seedu/volant/ui/Ui.java index 17aa0b494fe..551aaea3320 100644 --- a/src/main/java/seedu/address/ui/Ui.java +++ b/src/main/java/seedu/volant/ui/Ui.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import javafx.stage.Stage; diff --git a/src/main/java/seedu/address/ui/UiManager.java b/src/main/java/seedu/volant/ui/UiManager.java similarity index 90% rename from src/main/java/seedu/address/ui/UiManager.java rename to src/main/java/seedu/volant/ui/UiManager.java index 876621d79b9..1eaf7bb6604 100644 --- a/src/main/java/seedu/address/ui/UiManager.java +++ b/src/main/java/seedu/volant/ui/UiManager.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import java.util.logging.Logger; @@ -7,10 +7,12 @@ import javafx.scene.control.Alert.AlertType; import javafx.scene.image.Image; import javafx.stage.Stage; -import seedu.address.MainApp; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.util.StringUtil; -import seedu.address.logic.Logic; + +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.commons.logic.Logic; +import seedu.volant.commons.util.StringUtil; +import seedu.volant.MainApp; + /** * The manager of the UI component. @@ -39,7 +41,7 @@ public void start(Stage primaryStage) { try { mainWindow = new MainWindow(primaryStage, logic); - mainWindow.show(); //This should be called before creating other UI parts + mainWindow.show(); // This should be called before creating other UI parts mainWindow.fillInnerParts(); } catch (Throwable e) { diff --git a/src/main/java/seedu/address/ui/UiPart.java b/src/main/java/seedu/volant/ui/UiPart.java similarity index 90% rename from src/main/java/seedu/address/ui/UiPart.java rename to src/main/java/seedu/volant/ui/UiPart.java index fc820e01a9c..2817b3f9f19 100644 --- a/src/main/java/seedu/address/ui/UiPart.java +++ b/src/main/java/seedu/volant/ui/UiPart.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import static java.util.Objects.requireNonNull; @@ -6,7 +6,7 @@ import java.net.URL; import javafx.fxml.FXMLLoader; -import seedu.address.MainApp; +import seedu.volant.MainApp; /** * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc. @@ -51,6 +51,7 @@ public UiPart(String fxmlFileName, T root) { this(getFxmlFileUrl(fxmlFileName), root); } + /** * Returns the root object of the scene graph of this UiPart. */ @@ -60,12 +61,12 @@ public T getRoot() { /** * Loads the object hierarchy from a FXML document. - * @param location Location of the FXML document. + * @param url Location of the FXML document. * @param root Specifies the root of the object hierarchy. */ - private void loadFxmlFile(URL location, T root) { - requireNonNull(location); - fxmlLoader.setLocation(location); + private void loadFxmlFile(URL url, T root) { + requireNonNull(url); + fxmlLoader.setLocation(url); fxmlLoader.setController(this); fxmlLoader.setRoot(root); try { diff --git a/src/main/java/seedu/volant/ui/pages/homepage/TripListCard.java b/src/main/java/seedu/volant/ui/pages/homepage/TripListCard.java new file mode 100644 index 00000000000..0ad290059c7 --- /dev/null +++ b/src/main/java/seedu/volant/ui/pages/homepage/TripListCard.java @@ -0,0 +1,64 @@ +package seedu.volant.ui.pages.homepage; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Region; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.ui.UiPart; + +/** + * An UI component that displays information of a {@code Trip}. + */ +public class TripListCard extends UiPart { + + private static final String FXML = "TripListCard.fxml"; + + /** + * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. + * As a consequence, UI elements' variable names cannot be set to such keywords + * or an exception will be thrown by JavaFX during runtime. + * + * @see The issue on TripList level 4 + */ + + public final Trip trip; + + @FXML + private HBox cardPane; + @FXML + private Label name; + @FXML + private Label id; + @FXML + private Label place; + @FXML + private Label dateRange; + + public TripListCard(Trip trip, int displayedIndex) { + super(FXML); + this.trip = trip; + id.setText(displayedIndex + ". "); + name.setText(trip.getName().tripName); + place.setText(trip.getLocation().toString()); + dateRange.setText(trip.getDateRange().toString()); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof TripListCard)) { + return false; + } + + // state check + TripListCard card = (TripListCard) other; + return id.getText().equals(card.id.getText()) + && trip.equals(card.trip); + } +} diff --git a/src/main/java/seedu/volant/ui/pages/homepage/TripListPanel.java b/src/main/java/seedu/volant/ui/pages/homepage/TripListPanel.java new file mode 100644 index 00000000000..014dfdbbc1c --- /dev/null +++ b/src/main/java/seedu/volant/ui/pages/homepage/TripListPanel.java @@ -0,0 +1,47 @@ +package seedu.volant.ui.pages.homepage; + +import java.util.logging.Logger; + +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.layout.Region; +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.ui.UiPart; + +/** + * Panel containing the list of persons. + */ +public class TripListPanel extends UiPart { + private static final String FXML = "TripListPanel.fxml"; + private final Logger logger = LogsCenter.getLogger(TripListPanel.class); + + @FXML + private ListView tripListView; + + public TripListPanel(ObservableList tripList) { + super(FXML); + tripListView.setItems(tripList); + tripListView.setCellFactory(listView -> new TripListViewCell()); + } + + /** + * Custom {@code ListCell} that displays the graphics of a {@code Trip} using a {@code TripCard}. + */ + class TripListViewCell extends ListCell { + @Override + protected void updateItem(Trip trip, boolean empty) { + super.updateItem(trip, empty); + + if (empty || trip == null) { + setGraphic(null); + setText(null); + } else { + setGraphic(new TripListCard(trip, getIndex() + 1).getRoot()); + } + } + } + +} diff --git a/src/main/java/seedu/volant/ui/pages/trippage/ItineraryCard.java b/src/main/java/seedu/volant/ui/pages/trippage/ItineraryCard.java new file mode 100644 index 00000000000..f1a678177a2 --- /dev/null +++ b/src/main/java/seedu/volant/ui/pages/trippage/ItineraryCard.java @@ -0,0 +1,27 @@ +package seedu.volant.ui.pages.trippage; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Region; + +import seedu.volant.trippage.model.TripFeature; +import seedu.volant.ui.UiPart; + +/** + * An UI component that displays information of a {@code Itinerary}. + */ +public class ItineraryCard extends UiPart { + + private static final String FXML = "ItineraryCard.fxml"; + + @FXML + private HBox itineraryPane; + @FXML + private Label itineraryTitle; + + public ItineraryCard(TripFeature itinerary) { + super(FXML); + itineraryTitle.setText("Itinerary"); + } +} diff --git a/src/main/java/seedu/volant/ui/pages/trippage/JournalCard.java b/src/main/java/seedu/volant/ui/pages/trippage/JournalCard.java new file mode 100644 index 00000000000..f07eff542c9 --- /dev/null +++ b/src/main/java/seedu/volant/ui/pages/trippage/JournalCard.java @@ -0,0 +1,28 @@ +package seedu.volant.ui.pages.trippage; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Region; + +import seedu.volant.trippage.model.TripFeature; +import seedu.volant.ui.UiPart; + +/** + * An UI component that displays information of a {@code Journal}. + */ +public class JournalCard extends UiPart { + + private static final String FXML = "JournalCard.fxml"; + + @FXML + private HBox journalPane; + @FXML + private Label journalTitle; + + public JournalCard(TripFeature journal) { + super(FXML); + journalTitle.setText("Journal"); + } + +} diff --git a/src/main/java/seedu/volant/ui/pages/trippage/TripPage.java b/src/main/java/seedu/volant/ui/pages/trippage/TripPage.java new file mode 100644 index 00000000000..1c4dae7aba1 --- /dev/null +++ b/src/main/java/seedu/volant/ui/pages/trippage/TripPage.java @@ -0,0 +1,70 @@ +package seedu.volant.ui.pages.trippage; + +import java.util.logging.Logger; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.layout.Region; + +import seedu.volant.commons.core.LogsCenter; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.trippage.model.Journal; +import seedu.volant.trippage.model.TripFeature; +import seedu.volant.ui.UiPart; +import seedu.volant.ui.pages.homepage.TripListPanel; + + +/** + * Page containing details of a Trip as well as a menu of TripFeatures. + */ +public class TripPage extends UiPart { + private static final String FXML = "TripPage.fxml"; + private final Logger logger = LogsCenter.getLogger(TripListPanel.class); + + @FXML + private Label tripName; + + @FXML + private Label place; + + @FXML + private Label dateRange; + + @FXML + private ListView tripFeaturesListView; + + public TripPage(Trip trip) { + super(FXML); + tripName.setText(trip.getName().toString()); + place.setText(trip.getLocation().toString()); + dateRange.setText(trip.getDateRange().toString()); + + tripFeaturesListView.setItems(trip.getTripFeatureList().getReadOnly()); + tripFeaturesListView.setCellFactory(listView -> new TripFeaturesListViewCell()); + } + + + /** + * Custom {@code ListCell} that displays the graphics of each {@code TripFeature} using a card depending on the + * type of feature. + */ + class TripFeaturesListViewCell extends ListCell { + @Override + protected void updateItem(TripFeature tripFeature, boolean empty) { + super.updateItem(tripFeature, empty); + + if (empty || tripFeature == null) { + setGraphic(null); + setText(null); + } else { + if (tripFeature instanceof Journal) { + setGraphic(new JournalCard(tripFeature).getRoot()); + } else { + setGraphic(new ItineraryCard(tripFeature).getRoot()); + } + } + } + } +} diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css index 36e6b001cd8..4903eee2252 100644 --- a/src/main/resources/view/DarkTheme.css +++ b/src/main/resources/view/DarkTheme.css @@ -3,6 +3,7 @@ background-color: #383838; /* Used in the default.html file */ } + .label { -fx-font-size: 11pt; -fx-font-family: "Segoe UI Semibold"; diff --git a/src/main/resources/view/ItineraryCard.fxml b/src/main/resources/view/ItineraryCard.fxml new file mode 100644 index 00000000000..7bb47df4242 --- /dev/null +++ b/src/main/resources/view/ItineraryCard.fxml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/JournalCard.fxml b/src/main/resources/view/JournalCard.fxml new file mode 100644 index 00000000000..4eeaea950b2 --- /dev/null +++ b/src/main/resources/view/JournalCard.fxml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index a431648f6c0..6f58447bf5a 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -6,13 +6,12 @@ - + title="Volant" minWidth="450" minHeight="600" onCloseRequest="#handleExit"> @@ -46,11 +45,11 @@ - + - + diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/TripListCard.fxml similarity index 82% rename from src/main/resources/view/PersonListCard.fxml rename to src/main/resources/view/TripListCard.fxml index f08ea32ad55..5a4285ee782 100644 --- a/src/main/resources/view/PersonListCard.fxml +++ b/src/main/resources/view/TripListCard.fxml @@ -27,10 +27,8 @@ diff --git a/src/main/resources/view/PersonListPanel.fxml b/src/main/resources/view/TripListPanel.fxml similarity index 77% rename from src/main/resources/view/PersonListPanel.fxml rename to src/main/resources/view/TripListPanel.fxml index 8836d323cc5..4b49bf9916e 100644 --- a/src/main/resources/view/PersonListPanel.fxml +++ b/src/main/resources/view/TripListPanel.fxml @@ -4,5 +4,5 @@ - + diff --git a/src/main/resources/view/TripPage.fxml b/src/main/resources/view/TripPage.fxml new file mode 100644 index 00000000000..668cd017959 --- /dev/null +++ b/src/main/resources/view/TripPage.fxml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java b/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java deleted file mode 100644 index cb8714bb055..00000000000 --- a/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package seedu.address.logic.commands; - -import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; -import seedu.address.testutil.PersonBuilder; - -/** - * Contains integration tests (interaction with the Model) for {@code AddCommand}. - */ -public class AddCommandIntegrationTest { - - private Model model; - - @BeforeEach - public void setUp() { - model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - } - - @Test - public void execute_newPerson_success() { - Person validPerson = new PersonBuilder().build(); - - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.addPerson(validPerson); - - assertCommandSuccess(new AddCommand(validPerson), model, - String.format(AddCommand.MESSAGE_SUCCESS, validPerson), expectedModel); - } - - @Test - public void execute_duplicatePerson_throwsCommandException() { - Person personInList = model.getAddressBook().getPersonList().get(0); - assertCommandFailure(new AddCommand(personInList), model, AddCommand.MESSAGE_DUPLICATE_PERSON); - } - -} diff --git a/src/test/java/seedu/address/model/person/AddressTest.java b/src/test/java/seedu/address/model/person/AddressTest.java deleted file mode 100644 index dcd3be87b3a..00000000000 --- a/src/test/java/seedu/address/model/person/AddressTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.model.person; - -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; - -import org.junit.jupiter.api.Test; - -public class AddressTest { - - @Test - public void constructor_null_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> new Address(null)); - } - - @Test - public void constructor_invalidAddress_throwsIllegalArgumentException() { - String invalidAddress = ""; - assertThrows(IllegalArgumentException.class, () -> new Address(invalidAddress)); - } - - @Test - public void isValidAddress() { - // null address - assertThrows(NullPointerException.class, () -> Address.isValidAddress(null)); - - // invalid addresses - assertFalse(Address.isValidAddress("")); // empty string - assertFalse(Address.isValidAddress(" ")); // spaces only - - // valid addresses - assertTrue(Address.isValidAddress("Blk 456, Den Road, #01-355")); - assertTrue(Address.isValidAddress("-")); // one character - assertTrue(Address.isValidAddress("Leng Inc; 1234 Market St; San Francisco CA 2349879; USA")); // long address - } -} diff --git a/src/test/java/seedu/address/model/person/UniquePersonListTest.java b/src/test/java/seedu/address/model/person/UniquePersonListTest.java deleted file mode 100644 index 1cc5fe9e0fe..00000000000 --- a/src/test/java/seedu/address/model/person/UniquePersonListTest.java +++ /dev/null @@ -1,170 +0,0 @@ -package seedu.address.model.person; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.BOB; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.junit.jupiter.api.Test; - -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.model.person.exceptions.PersonNotFoundException; -import seedu.address.testutil.PersonBuilder; - -public class UniquePersonListTest { - - private final UniquePersonList uniquePersonList = new UniquePersonList(); - - @Test - public void contains_nullPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.contains(null)); - } - - @Test - public void contains_personNotInList_returnsFalse() { - assertFalse(uniquePersonList.contains(ALICE)); - } - - @Test - public void contains_personInList_returnsTrue() { - uniquePersonList.add(ALICE); - assertTrue(uniquePersonList.contains(ALICE)); - } - - @Test - public void contains_personWithSameIdentityFieldsInList_returnsTrue() { - uniquePersonList.add(ALICE); - Person editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) - .build(); - assertTrue(uniquePersonList.contains(editedAlice)); - } - - @Test - public void add_nullPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.add(null)); - } - - @Test - public void add_duplicatePerson_throwsDuplicatePersonException() { - uniquePersonList.add(ALICE); - assertThrows(DuplicatePersonException.class, () -> uniquePersonList.add(ALICE)); - } - - @Test - public void setPerson_nullTargetPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.setPerson(null, ALICE)); - } - - @Test - public void setPerson_nullEditedPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.setPerson(ALICE, null)); - } - - @Test - public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() { - assertThrows(PersonNotFoundException.class, () -> uniquePersonList.setPerson(ALICE, ALICE)); - } - - @Test - public void setPerson_editedPersonIsSamePerson_success() { - uniquePersonList.add(ALICE); - uniquePersonList.setPerson(ALICE, ALICE); - UniquePersonList expectedUniquePersonList = new UniquePersonList(); - expectedUniquePersonList.add(ALICE); - assertEquals(expectedUniquePersonList, uniquePersonList); - } - - @Test - public void setPerson_editedPersonHasSameIdentity_success() { - uniquePersonList.add(ALICE); - Person editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) - .build(); - uniquePersonList.setPerson(ALICE, editedAlice); - UniquePersonList expectedUniquePersonList = new UniquePersonList(); - expectedUniquePersonList.add(editedAlice); - assertEquals(expectedUniquePersonList, uniquePersonList); - } - - @Test - public void setPerson_editedPersonHasDifferentIdentity_success() { - uniquePersonList.add(ALICE); - uniquePersonList.setPerson(ALICE, BOB); - UniquePersonList expectedUniquePersonList = new UniquePersonList(); - expectedUniquePersonList.add(BOB); - assertEquals(expectedUniquePersonList, uniquePersonList); - } - - @Test - public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() { - uniquePersonList.add(ALICE); - uniquePersonList.add(BOB); - assertThrows(DuplicatePersonException.class, () -> uniquePersonList.setPerson(ALICE, BOB)); - } - - @Test - public void remove_nullPerson_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.remove(null)); - } - - @Test - public void remove_personDoesNotExist_throwsPersonNotFoundException() { - assertThrows(PersonNotFoundException.class, () -> uniquePersonList.remove(ALICE)); - } - - @Test - public void remove_existingPerson_removesPerson() { - uniquePersonList.add(ALICE); - uniquePersonList.remove(ALICE); - UniquePersonList expectedUniquePersonList = new UniquePersonList(); - assertEquals(expectedUniquePersonList, uniquePersonList); - } - - @Test - public void setPersons_nullUniquePersonList_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.setPersons((UniquePersonList) null)); - } - - @Test - public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() { - uniquePersonList.add(ALICE); - UniquePersonList expectedUniquePersonList = new UniquePersonList(); - expectedUniquePersonList.add(BOB); - uniquePersonList.setPersons(expectedUniquePersonList); - assertEquals(expectedUniquePersonList, uniquePersonList); - } - - @Test - public void setPersons_nullList_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> uniquePersonList.setPersons((List) null)); - } - - @Test - public void setPersons_list_replacesOwnListWithProvidedList() { - uniquePersonList.add(ALICE); - List personList = Collections.singletonList(BOB); - uniquePersonList.setPersons(personList); - UniquePersonList expectedUniquePersonList = new UniquePersonList(); - expectedUniquePersonList.add(BOB); - assertEquals(expectedUniquePersonList, uniquePersonList); - } - - @Test - public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() { - List listWithDuplicatePersons = Arrays.asList(ALICE, ALICE); - assertThrows(DuplicatePersonException.class, () -> uniquePersonList.setPersons(listWithDuplicatePersons)); - } - - @Test - public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() { - assertThrows(UnsupportedOperationException.class, () - -> uniquePersonList.asUnmodifiableObservableList().remove(0)); - } -} diff --git a/src/test/java/seedu/address/testutil/AddressBookBuilder.java b/src/test/java/seedu/address/testutil/AddressBookBuilder.java deleted file mode 100644 index d53799fd110..00000000000 --- a/src/test/java/seedu/address/testutil/AddressBookBuilder.java +++ /dev/null @@ -1,34 +0,0 @@ -package seedu.address.testutil; - -import seedu.address.model.AddressBook; -import seedu.address.model.person.Person; - -/** - * A utility class to help with building Addressbook objects. - * Example usage:
    - * {@code AddressBook ab = new AddressBookBuilder().withPerson("John", "Doe").build();} - */ -public class AddressBookBuilder { - - private AddressBook addressBook; - - public AddressBookBuilder() { - addressBook = new AddressBook(); - } - - public AddressBookBuilder(AddressBook addressBook) { - this.addressBook = addressBook; - } - - /** - * Adds a new {@code Person} to the {@code AddressBook} that we are building. - */ - public AddressBookBuilder withPerson(Person person) { - addressBook.addPerson(person); - return this; - } - - public AddressBook build() { - return addressBook; - } -} diff --git a/src/test/java/seedu/address/testutil/TypicalPersons.java b/src/test/java/seedu/address/testutil/TypicalPersons.java deleted file mode 100644 index fec76fb7129..00000000000 --- a/src/test/java/seedu/address/testutil/TypicalPersons.java +++ /dev/null @@ -1,76 +0,0 @@ -package seedu.address.testutil; - -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import seedu.address.model.AddressBook; -import seedu.address.model.person.Person; - -/** - * A utility class containing a list of {@code Person} objects to be used in tests. - */ -public class TypicalPersons { - - public static final Person ALICE = new PersonBuilder().withName("Alice Pauline") - .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") - .withPhone("94351253") - .withTags("friends").build(); - public static final Person BENSON = new PersonBuilder().withName("Benson Meier") - .withAddress("311, Clementi Ave 2, #02-25") - .withEmail("johnd@example.com").withPhone("98765432") - .withTags("owesMoney", "friends").build(); - public static final Person CARL = new PersonBuilder().withName("Carl Kurz").withPhone("95352563") - .withEmail("heinz@example.com").withAddress("wall street").build(); - public static final Person DANIEL = new PersonBuilder().withName("Daniel Meier").withPhone("87652533") - .withEmail("cornelia@example.com").withAddress("10th street").withTags("friends").build(); - public static final Person ELLE = new PersonBuilder().withName("Elle Meyer").withPhone("9482224") - .withEmail("werner@example.com").withAddress("michegan ave").build(); - public static final Person FIONA = new PersonBuilder().withName("Fiona Kunz").withPhone("9482427") - .withEmail("lydia@example.com").withAddress("little tokyo").build(); - public static final Person GEORGE = new PersonBuilder().withName("George Best").withPhone("9482442") - .withEmail("anna@example.com").withAddress("4th street").build(); - - // Manually added - public static final Person HOON = new PersonBuilder().withName("Hoon Meier").withPhone("8482424") - .withEmail("stefan@example.com").withAddress("little india").build(); - public static final Person IDA = new PersonBuilder().withName("Ida Mueller").withPhone("8482131") - .withEmail("hans@example.com").withAddress("chicago ave").build(); - - // Manually added - Person's details found in {@code CommandTestUtil} - public static final Person AMY = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY) - .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build(); - public static final Person BOB = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) - .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND) - .build(); - - public static final String KEYWORD_MATCHING_MEIER = "Meier"; // A keyword that matches MEIER - - private TypicalPersons() {} // prevents instantiation - - /** - * Returns an {@code AddressBook} with all the typical persons. - */ - public static AddressBook getTypicalAddressBook() { - AddressBook ab = new AddressBook(); - for (Person person : getTypicalPersons()) { - ab.addPerson(person); - } - return ab; - } - - public static List getTypicalPersons() { - return new ArrayList<>(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE)); - } -} diff --git a/src/test/java/seedu/address/AppParametersTest.java b/src/test/java/seedu/volant/AppParametersTest.java similarity index 98% rename from src/test/java/seedu/address/AppParametersTest.java rename to src/test/java/seedu/volant/AppParametersTest.java index 61326b2d31a..ed0609a62c6 100644 --- a/src/test/java/seedu/address/AppParametersTest.java +++ b/src/test/java/seedu/volant/AppParametersTest.java @@ -1,4 +1,4 @@ -package seedu.address; +package seedu.volant; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/src/test/java/seedu/address/commons/core/ConfigTest.java b/src/test/java/seedu/volant/commons/core/ConfigTest.java similarity index 95% rename from src/test/java/seedu/address/commons/core/ConfigTest.java rename to src/test/java/seedu/volant/commons/core/ConfigTest.java index 07cd7f73d53..0155339d8b7 100644 --- a/src/test/java/seedu/address/commons/core/ConfigTest.java +++ b/src/test/java/seedu/volant/commons/core/ConfigTest.java @@ -1,4 +1,4 @@ -package seedu.address.commons.core; +package seedu.volant.commons.core; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/src/test/java/seedu/address/commons/core/VersionTest.java b/src/test/java/seedu/volant/commons/core/VersionTest.java similarity index 98% rename from src/test/java/seedu/address/commons/core/VersionTest.java rename to src/test/java/seedu/volant/commons/core/VersionTest.java index 495cd231554..d94e767e081 100644 --- a/src/test/java/seedu/address/commons/core/VersionTest.java +++ b/src/test/java/seedu/volant/commons/core/VersionTest.java @@ -1,8 +1,8 @@ -package seedu.address.commons.core; +package seedu.volant.commons.core; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/commons/core/index/IndexTest.java b/src/test/java/seedu/volant/commons/core/index/IndexTest.java similarity index 95% rename from src/test/java/seedu/address/commons/core/index/IndexTest.java rename to src/test/java/seedu/volant/commons/core/index/IndexTest.java index a3ec6f8e747..f23e5e630f3 100644 --- a/src/test/java/seedu/address/commons/core/index/IndexTest.java +++ b/src/test/java/seedu/volant/commons/core/index/IndexTest.java @@ -1,9 +1,9 @@ -package seedu.address.commons.core.index; +package seedu.volant.commons.core.index; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/commons/util/AppUtilTest.java b/src/test/java/seedu/volant/commons/util/AppUtilTest.java similarity index 91% rename from src/test/java/seedu/address/commons/util/AppUtilTest.java rename to src/test/java/seedu/volant/commons/util/AppUtilTest.java index 594de1e6365..6c9f3f7960e 100644 --- a/src/test/java/seedu/address/commons/util/AppUtilTest.java +++ b/src/test/java/seedu/volant/commons/util/AppUtilTest.java @@ -1,7 +1,7 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/commons/util/CollectionUtilTest.java b/src/test/java/seedu/volant/commons/util/CollectionUtilTest.java similarity index 96% rename from src/test/java/seedu/address/commons/util/CollectionUtilTest.java rename to src/test/java/seedu/volant/commons/util/CollectionUtilTest.java index b467a3dc025..667a995635c 100644 --- a/src/test/java/seedu/address/commons/util/CollectionUtilTest.java +++ b/src/test/java/seedu/volant/commons/util/CollectionUtilTest.java @@ -1,9 +1,9 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.commons.util.CollectionUtil.requireAllNonNull; +import static seedu.volant.testutil.Assert.assertThrows; import java.util.Arrays; import java.util.Collection; diff --git a/src/test/java/seedu/address/commons/util/ConfigUtilTest.java b/src/test/java/seedu/volant/commons/util/ConfigUtilTest.java similarity index 94% rename from src/test/java/seedu/address/commons/util/ConfigUtilTest.java rename to src/test/java/seedu/volant/commons/util/ConfigUtilTest.java index d2ab2839a52..b21bd02e907 100644 --- a/src/test/java/seedu/address/commons/util/ConfigUtilTest.java +++ b/src/test/java/seedu/volant/commons/util/ConfigUtilTest.java @@ -1,8 +1,8 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import java.io.IOException; import java.nio.file.Path; @@ -13,8 +13,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import seedu.address.commons.core.Config; -import seedu.address.commons.exceptions.DataConversionException; +import seedu.volant.commons.core.Config; +import seedu.volant.commons.exceptions.DataConversionException; public class ConfigUtilTest { diff --git a/src/test/java/seedu/address/commons/util/FileUtilTest.java b/src/test/java/seedu/volant/commons/util/FileUtilTest.java similarity index 84% rename from src/test/java/seedu/address/commons/util/FileUtilTest.java rename to src/test/java/seedu/volant/commons/util/FileUtilTest.java index 1fe5478c756..9c60188a688 100644 --- a/src/test/java/seedu/address/commons/util/FileUtilTest.java +++ b/src/test/java/seedu/volant/commons/util/FileUtilTest.java @@ -1,8 +1,8 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/commons/util/JsonUtilTest.java b/src/test/java/seedu/volant/commons/util/JsonUtilTest.java similarity index 92% rename from src/test/java/seedu/address/commons/util/JsonUtilTest.java rename to src/test/java/seedu/volant/commons/util/JsonUtilTest.java index d4907539dee..2bff116da3e 100644 --- a/src/test/java/seedu/address/commons/util/JsonUtilTest.java +++ b/src/test/java/seedu/volant/commons/util/JsonUtilTest.java @@ -1,4 +1,4 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -7,8 +7,8 @@ import org.junit.jupiter.api.Test; -import seedu.address.testutil.SerializableTestClass; -import seedu.address.testutil.TestUtil; +import seedu.volant.testutil.SerializableTestClass; +import seedu.volant.testutil.TestUtil; /** * Tests JSON Read and Write diff --git a/src/test/java/seedu/address/commons/util/StringUtilTest.java b/src/test/java/seedu/volant/commons/util/StringUtilTest.java similarity index 98% rename from src/test/java/seedu/address/commons/util/StringUtilTest.java rename to src/test/java/seedu/volant/commons/util/StringUtilTest.java index c56d407bf3f..b8e9982ce90 100644 --- a/src/test/java/seedu/address/commons/util/StringUtilTest.java +++ b/src/test/java/seedu/volant/commons/util/StringUtilTest.java @@ -1,8 +1,8 @@ -package seedu.address.commons.util; +package seedu.volant.commons.util; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import java.io.FileNotFoundException; diff --git a/src/test/java/seedu/address/logic/LogicManagerTest.java b/src/test/java/seedu/volant/homepage/logic/LogicManagerTest.java similarity index 67% rename from src/test/java/seedu/address/logic/LogicManagerTest.java rename to src/test/java/seedu/volant/homepage/logic/LogicManagerTest.java index ad923ac249a..678ceac520d 100644 --- a/src/test/java/seedu/address/logic/LogicManagerTest.java +++ b/src/test/java/seedu/volant/homepage/logic/LogicManagerTest.java @@ -1,14 +1,14 @@ -package seedu.address.logic; +package seedu.volant.homepage.logic; import static org.junit.jupiter.api.Assertions.assertEquals; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX; -import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.AMY; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_TRIP_DISPLAYED_INDEX; +import static seedu.volant.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.NAME_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PHONE_DESC_AMY; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.AMY; import java.io.IOException; import java.nio.file.Path; @@ -17,20 +17,22 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.ListCommand; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; -import seedu.address.storage.JsonAddressBookStorage; -import seedu.address.storage.JsonUserPrefsStorage; -import seedu.address.storage.StorageManager; -import seedu.address.testutil.PersonBuilder; +import seedu.volant.commons.logic.Logic; +import seedu.volant.commons.logic.LogicManager; +import seedu.volant.homepage.logic.commands.AddCommand; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.logic.commands.ListCommand; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.UserPrefs; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.storage.JsonVolantStorage; +import seedu.volant.storage.JsonUserPrefsStorage; +import seedu.volant.storage.StorageManager; +import seedu.volant.testutil.PersonBuilder; public class LogicManagerTest { private static final IOException DUMMY_IO_EXCEPTION = new IOException("dummy exception"); @@ -43,8 +45,8 @@ public class LogicManagerTest { @BeforeEach public void setUp() { - JsonAddressBookStorage addressBookStorage = - new JsonAddressBookStorage(temporaryFolder.resolve("addressBook.json")); + JsonVolantStorage addressBookStorage = + new JsonVolantStorage(temporaryFolder.resolve("addressBook.json")); JsonUserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(temporaryFolder.resolve("userPrefs.json")); StorageManager storage = new StorageManager(addressBookStorage, userPrefsStorage); logic = new LogicManager(model, storage); @@ -59,7 +61,7 @@ public void execute_invalidCommandFormat_throwsParseException() { @Test public void execute_commandExecutionError_throwsCommandException() { String deleteCommand = "delete 9"; - assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertCommandException(deleteCommand, MESSAGE_INVALID_TRIP_DISPLAYED_INDEX); } @Test @@ -70,9 +72,9 @@ public void execute_validCommand_success() throws Exception { @Test public void execute_storageThrowsIoException_throwsCommandException() { - // Setup LogicManager with JsonAddressBookIoExceptionThrowingStub - JsonAddressBookStorage addressBookStorage = - new JsonAddressBookIoExceptionThrowingStub(temporaryFolder.resolve("ioExceptionAddressBook.json")); + // Setup LogicManager with JsonVolantIoExceptionThrowingStub + JsonVolantStorage addressBookStorage = + new JsonVolantIoExceptionThrowingStub(temporaryFolder.resolve("ioExceptionAddressBook.json")); JsonUserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(temporaryFolder.resolve("ioExceptionUserPrefs.json")); StorageManager storage = new StorageManager(addressBookStorage, userPrefsStorage); @@ -81,16 +83,16 @@ public void execute_storageThrowsIoException_throwsCommandException() { // Execute add command String addCommand = AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY; - Person expectedPerson = new PersonBuilder(AMY).withTags().build(); + Trip expectedTrip = new PersonBuilder(AMY).withTags().build(); ModelManager expectedModel = new ModelManager(); - expectedModel.addPerson(expectedPerson); + expectedModel.addTrip(expectedTrip); String expectedMessage = LogicManager.FILE_OPS_ERROR_MESSAGE + DUMMY_IO_EXCEPTION; assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel); } @Test public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() { - assertThrows(UnsupportedOperationException.class, () -> logic.getFilteredPersonList().remove(0)); + assertThrows(UnsupportedOperationException.class, () -> logic.getFilteredTripList().remove(0)); } /** @@ -129,7 +131,7 @@ private void assertCommandException(String inputCommand, String expectedMessage) */ private void assertCommandFailure(String inputCommand, Class expectedException, String expectedMessage) { - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getTripList(), new UserPrefs()); assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel); } @@ -149,13 +151,13 @@ private void assertCommandFailure(String inputCommand, Class addCommand.execute(modelStub)); } @Test public void equals() { - Person alice = new PersonBuilder().withName("Alice").build(); - Person bob = new PersonBuilder().withName("Bob").build(); + Trip alice = new PersonBuilder().withName("Alice").build(); + Trip bob = new PersonBuilder().withName("Bob").build(); AddCommand addAliceCommand = new AddCommand(alice); AddCommand addBobCommand = new AddCommand(bob); @@ -70,7 +71,7 @@ public void equals() { // null -> returns false assertFalse(addAliceCommand.equals(null)); - // different person -> returns false + // different trip -> returns false assertFalse(addAliceCommand.equals(addBobCommand)); } @@ -109,85 +110,85 @@ public void setAddressBookFilePath(Path addressBookFilePath) { } @Override - public void addPerson(Person person) { + public void addPerson(Trip trip) { throw new AssertionError("This method should not be called."); } @Override - public void setAddressBook(ReadOnlyAddressBook newData) { + public void setAddressBook(ReadOnlyTripList newData) { throw new AssertionError("This method should not be called."); } @Override - public ReadOnlyAddressBook getAddressBook() { + public ReadOnlyTripList getAddressBook() { throw new AssertionError("This method should not be called."); } @Override - public boolean hasPerson(Person person) { + public boolean hasPerson(Trip trip) { throw new AssertionError("This method should not be called."); } @Override - public void deletePerson(Person target) { + public void deletePerson(Trip target) { throw new AssertionError("This method should not be called."); } @Override - public void setPerson(Person target, Person editedPerson) { + public void setPerson(Trip target, Trip editedTrip) { throw new AssertionError("This method should not be called."); } @Override - public ObservableList getFilteredPersonList() { + public ObservableList getFilteredPersonList() { throw new AssertionError("This method should not be called."); } @Override - public void updateFilteredPersonList(Predicate predicate) { + public void updateFilteredPersonList(Predicate predicate) { throw new AssertionError("This method should not be called."); } } /** - * A Model stub that contains a single person. + * A Model stub that contains a single trip. */ private class ModelStubWithPerson extends ModelStub { - private final Person person; + private final Trip trip; - ModelStubWithPerson(Person person) { - requireNonNull(person); - this.person = person; + ModelStubWithPerson(Trip trip) { + requireNonNull(trip); + this.trip = trip; } @Override - public boolean hasPerson(Person person) { - requireNonNull(person); - return this.person.isSamePerson(person); + public boolean hasPerson(Trip trip) { + requireNonNull(trip); + return this.trip.isSamePerson(trip); } } /** - * A Model stub that always accept the person being added. + * A Model stub that always accept the trip being added. */ private class ModelStubAcceptingPersonAdded extends ModelStub { - final ArrayList personsAdded = new ArrayList<>(); + final ArrayList personsAdded = new ArrayList<>(); @Override - public boolean hasPerson(Person person) { - requireNonNull(person); - return personsAdded.stream().anyMatch(person::isSamePerson); + public boolean hasPerson(Trip trip) { + requireNonNull(trip); + return personsAdded.stream().anyMatch(trip::isSamePerson); } @Override - public void addPerson(Person person) { - requireNonNull(person); - personsAdded.add(person); + public void addPerson(Trip trip) { + requireNonNull(trip); + personsAdded.add(trip); } @Override - public ReadOnlyAddressBook getAddressBook() { - return new AddressBook(); + public ReadOnlyTripList getAddressBook() { + return new TripList(); } } diff --git a/src/test/java/seedu/address/logic/commands/ClearCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/ClearCommandTest.java similarity index 60% rename from src/test/java/seedu/address/logic/commands/ClearCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/ClearCommandTest.java index 80d9110c03a..9c172a9f20b 100644 --- a/src/test/java/seedu/address/logic/commands/ClearCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/ClearCommandTest.java @@ -1,14 +1,14 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import org.junit.jupiter.api.Test; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.UserPrefs; public class ClearCommandTest { @@ -24,7 +24,7 @@ public void execute_emptyAddressBook_success() { public void execute_nonEmptyAddressBook_success() { Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - expectedModel.setAddressBook(new AddressBook()); + expectedModel.setAddressBook(new TripList()); assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel); } diff --git a/src/test/java/seedu/address/logic/commands/CommandResultTest.java b/src/test/java/seedu/volant/homepage/logic/commands/CommandResultTest.java similarity index 95% rename from src/test/java/seedu/address/logic/commands/CommandResultTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/CommandResultTest.java index 4f3eb46e9ef..2bafcc4574d 100644 --- a/src/test/java/seedu/address/logic/commands/CommandResultTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/CommandResultTest.java @@ -1,4 +1,4 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -6,6 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; +import seedu.volant.commons.logic.commands.CommandResult; public class CommandResultTest { @Test diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/volant/homepage/logic/commands/CommandTestUtil.java similarity index 77% rename from src/test/java/seedu/address/logic/commands/CommandTestUtil.java rename to src/test/java/seedu/volant/homepage/logic/commands/CommandTestUtil.java index 643a1d08069..2e87ef3851f 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/CommandTestUtil.java @@ -1,25 +1,27 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_PHONE; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.volant.testutil.Assert.assertThrows; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.person.NameContainsKeywordsPredicate; -import seedu.address.model.person.Person; -import seedu.address.testutil.EditPersonDescriptorBuilder; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.core.index.Index; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.homepage.logic.commands.exceptions.CommandException; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.testutil.EditPersonDescriptorBuilder; /** * Contains helper methods for testing commands. @@ -75,7 +77,7 @@ public class CommandTestUtil { * - the {@code actualModel} matches {@code expectedModel} */ public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult, - Model expectedModel) { + Model expectedModel) { try { CommandResult result = command.execute(actualModel); assertEquals(expectedCommandResult, result); @@ -99,27 +101,27 @@ public static void assertCommandSuccess(Command command, Model actualModel, Stri * Executes the given {@code command}, confirms that
    * - a {@code CommandException} is thrown
    * - the CommandException message matches {@code expectedMessage}
    - * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged + * - the address book, filtered trip list and selected trip in {@code actualModel} remain unchanged */ public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) { // we are unable to defensively copy the model for comparison later, so we can // only do so by copying its components. - AddressBook expectedAddressBook = new AddressBook(actualModel.getAddressBook()); - List expectedFilteredList = new ArrayList<>(actualModel.getFilteredPersonList()); + TripList expectedAddressBook = new TripList(actualModel.getAddressBook()); + List expectedFilteredList = new ArrayList<>(actualModel.getFilteredPersonList()); assertThrows(CommandException.class, expectedMessage, () -> command.execute(actualModel)); assertEquals(expectedAddressBook, actualModel.getAddressBook()); assertEquals(expectedFilteredList, actualModel.getFilteredPersonList()); } /** - * Updates {@code model}'s filtered list to show only the person at the given {@code targetIndex} in the + * Updates {@code model}'s filtered list to show only the trip at the given {@code targetIndex} in the * {@code model}'s address book. */ public static void showPersonAtIndex(Model model, Index targetIndex) { assertTrue(targetIndex.getZeroBased() < model.getFilteredPersonList().size()); - Person person = model.getFilteredPersonList().get(targetIndex.getZeroBased()); - final String[] splitName = person.getName().fullName.split("\\s+"); + Trip trip = model.getFilteredPersonList().get(targetIndex.getZeroBased()); + final String[] splitName = trip.getName().fullName.split("\\s+"); model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0]))); assertEquals(1, model.getFilteredPersonList().size()); diff --git a/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/DeleteCommandTest.java similarity index 72% rename from src/test/java/seedu/address/logic/commands/DeleteCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/DeleteCommandTest.java index 0f77d8295f6..d7e73ef7e65 100644 --- a/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/DeleteCommandTest.java @@ -1,22 +1,22 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandFailure; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.showPersonAtIndex; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.testutil.TypicalIndexes.INDEX_SECOND_PERSON; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import org.junit.jupiter.api.Test; -import seedu.address.commons.core.Messages; -import seedu.address.commons.core.index.Index; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; +import seedu.volant.commons.core.Messages; +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.UserPrefs; +import seedu.volant.homepage.model.trip.Trip; /** * Contains integration tests (interaction with the Model, UndoCommand and RedoCommand) and unit tests for @@ -28,13 +28,13 @@ public class DeleteCommandTest { @Test public void execute_validIndexUnfilteredList_success() { - Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + Trip tripToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); - String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete); + String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, tripToDelete); ModelManager expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.deletePerson(personToDelete); + expectedModel.deletePerson(tripToDelete); assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel); } @@ -51,13 +51,13 @@ public void execute_invalidIndexUnfilteredList_throwsCommandException() { public void execute_validIndexFilteredList_success() { showPersonAtIndex(model, INDEX_FIRST_PERSON); - Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + Trip tripToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); - String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete); + String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, tripToDelete); Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.deletePerson(personToDelete); + expectedModel.deletePerson(tripToDelete); showNoPerson(expectedModel); assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel); @@ -94,7 +94,7 @@ public void equals() { // null -> returns false assertFalse(deleteFirstCommand.equals(null)); - // different person -> returns false + // different trip -> returns false assertFalse(deleteFirstCommand.equals(deleteSecondCommand)); } diff --git a/src/test/java/seedu/address/logic/commands/EditCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/EditCommandTest.java similarity index 62% rename from src/test/java/seedu/address/logic/commands/EditCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/EditCommandTest.java index 1c27530fa99..c7935ec898c 100644 --- a/src/test/java/seedu/address/logic/commands/EditCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/EditCommandTest.java @@ -1,31 +1,31 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandFailure; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.showPersonAtIndex; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.testutil.TypicalIndexes.INDEX_SECOND_PERSON; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import org.junit.jupiter.api.Test; -import seedu.address.commons.core.Messages; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; -import seedu.address.testutil.EditPersonDescriptorBuilder; -import seedu.address.testutil.PersonBuilder; +import seedu.volant.commons.core.Messages; +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.UserPrefs; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.testutil.EditPersonDescriptorBuilder; +import seedu.volant.testutil.PersonBuilder; /** * Contains integration tests (interaction with the Model, UndoCommand and RedoCommand) and unit tests for EditCommand. @@ -36,14 +36,14 @@ public class EditCommandTest { @Test public void execute_allFieldsSpecifiedUnfilteredList_success() { - Person editedPerson = new PersonBuilder().build(); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedPerson).build(); + Trip editedTrip = new PersonBuilder().build(); + EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedTrip).build(); EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, descriptor); - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); + String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedTrip); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson); + Model expectedModel = new ModelManager(new TripList(model.getAddressBook()), new UserPrefs()); + expectedModel.setPerson(model.getFilteredPersonList().get(0), editedTrip); assertCommandSuccess(editCommand, model, expectedMessage, expectedModel); } @@ -51,20 +51,20 @@ public void execute_allFieldsSpecifiedUnfilteredList_success() { @Test public void execute_someFieldsSpecifiedUnfilteredList_success() { Index indexLastPerson = Index.fromOneBased(model.getFilteredPersonList().size()); - Person lastPerson = model.getFilteredPersonList().get(indexLastPerson.getZeroBased()); + Trip lastTrip = model.getFilteredPersonList().get(indexLastPerson.getZeroBased()); - PersonBuilder personInList = new PersonBuilder(lastPerson); - Person editedPerson = personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) + PersonBuilder personInList = new PersonBuilder(lastTrip); + Trip editedTrip = personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) .withTags(VALID_TAG_HUSBAND).build(); EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB) .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build(); EditCommand editCommand = new EditCommand(indexLastPerson, descriptor); - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); + String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedTrip); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.setPerson(lastPerson, editedPerson); + Model expectedModel = new ModelManager(new TripList(model.getAddressBook()), new UserPrefs()); + expectedModel.setPerson(lastTrip, editedTrip); assertCommandSuccess(editCommand, model, expectedMessage, expectedModel); } @@ -72,11 +72,11 @@ public void execute_someFieldsSpecifiedUnfilteredList_success() { @Test public void execute_noFieldSpecifiedUnfilteredList_success() { EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor()); - Person editedPerson = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + Trip editedTrip = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); + String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedTrip); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new TripList(model.getAddressBook()), new UserPrefs()); assertCommandSuccess(editCommand, model, expectedMessage, expectedModel); } @@ -85,23 +85,23 @@ public void execute_noFieldSpecifiedUnfilteredList_success() { public void execute_filteredList_success() { showPersonAtIndex(model, INDEX_FIRST_PERSON); - Person personInFilteredList = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - Person editedPerson = new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build(); + Trip tripInFilteredList = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + Trip editedTrip = new PersonBuilder(tripInFilteredList).withName(VALID_NAME_BOB).build(); EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build()); - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); + String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedTrip); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson); + Model expectedModel = new ModelManager(new TripList(model.getAddressBook()), new UserPrefs()); + expectedModel.setPerson(model.getFilteredPersonList().get(0), editedTrip); assertCommandSuccess(editCommand, model, expectedMessage, expectedModel); } @Test public void execute_duplicatePersonUnfilteredList_failure() { - Person firstPerson = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(firstPerson).build(); + Trip firstTrip = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(firstTrip).build(); EditCommand editCommand = new EditCommand(INDEX_SECOND_PERSON, descriptor); assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON); @@ -111,10 +111,10 @@ public void execute_duplicatePersonUnfilteredList_failure() { public void execute_duplicatePersonFilteredList_failure() { showPersonAtIndex(model, INDEX_FIRST_PERSON); - // edit person in filtered list into a duplicate in address book - Person personInList = model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased()); + // edit trip in filtered list into a duplicate in address book + Trip tripInList = model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased()); EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, - new EditPersonDescriptorBuilder(personInList).build()); + new EditPersonDescriptorBuilder(tripInList).build()); assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON); } diff --git a/src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java b/src/test/java/seedu/volant/homepage/logic/commands/EditTripDescriptorTest.java similarity index 68% rename from src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/EditTripDescriptorTest.java index e0288792e72..9973da797b1 100644 --- a/src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/EditTripDescriptorTest.java @@ -1,21 +1,21 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.testutil.EditPersonDescriptorBuilder; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.testutil.EditPersonDescriptorBuilder; -public class EditPersonDescriptorTest { +public class EditTripDescriptorTest { @Test public void equals() { diff --git a/src/test/java/seedu/address/logic/commands/ExitCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/ExitCommandTest.java similarity index 50% rename from src/test/java/seedu/address/logic/commands/ExitCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/ExitCommandTest.java index 9533c473875..b21cc662f6d 100644 --- a/src/test/java/seedu/address/logic/commands/ExitCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/ExitCommandTest.java @@ -1,12 +1,14 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.commons.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT; import org.junit.jupiter.api.Test; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.commands.ExitCommand; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; public class ExitCommandTest { private Model model = new ModelManager(); diff --git a/src/test/java/seedu/address/logic/commands/FindCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/FindCommandTest.java similarity index 80% rename from src/test/java/seedu/address/logic/commands/FindCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/FindCommandTest.java index 9b15db28bbb..f94a7dbfe81 100644 --- a/src/test/java/seedu/address/logic/commands/FindCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/FindCommandTest.java @@ -1,24 +1,24 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.commons.core.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.testutil.TypicalPersons.CARL; -import static seedu.address.testutil.TypicalPersons.ELLE; -import static seedu.address.testutil.TypicalPersons.FIONA; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.commons.core.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.testutil.TypicalPersons.CARL; +import static seedu.volant.testutil.TypicalPersons.ELLE; +import static seedu.volant.testutil.TypicalPersons.FIONA; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import java.util.Arrays; import java.util.Collections; import org.junit.jupiter.api.Test; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.NameContainsKeywordsPredicate; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.UserPrefs; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; /** * Contains integration tests (interaction with the Model) for {@code FindCommand}. @@ -50,7 +50,7 @@ public void equals() { // null -> returns false assertFalse(findFirstCommand.equals(null)); - // different person -> returns false + // different trip -> returns false assertFalse(findFirstCommand.equals(findSecondCommand)); } diff --git a/src/test/java/seedu/address/logic/commands/HelpCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/HelpCommandTest.java similarity index 50% rename from src/test/java/seedu/address/logic/commands/HelpCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/HelpCommandTest.java index 4904fc4352e..1382b659fb3 100644 --- a/src/test/java/seedu/address/logic/commands/HelpCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/HelpCommandTest.java @@ -1,12 +1,14 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.commons.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE; import org.junit.jupiter.api.Test; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; +import seedu.volant.commons.logic.commands.CommandResult; +import seedu.volant.commons.logic.commands.HelpCommand; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; public class HelpCommandTest { private Model model = new ModelManager(); diff --git a/src/test/java/seedu/address/logic/commands/ListCommandTest.java b/src/test/java/seedu/volant/homepage/logic/commands/ListCommandTest.java similarity index 63% rename from src/test/java/seedu/address/logic/commands/ListCommandTest.java rename to src/test/java/seedu/volant/homepage/logic/commands/ListCommandTest.java index 435ff1f7275..00f9370c311 100644 --- a/src/test/java/seedu/address/logic/commands/ListCommandTest.java +++ b/src/test/java/seedu/volant/homepage/logic/commands/ListCommandTest.java @@ -1,16 +1,16 @@ -package seedu.address.logic.commands; +package seedu.volant.homepage.logic.commands; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.assertCommandSuccess; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.showPersonAtIndex; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.ModelManager; +import seedu.volant.homepage.model.UserPrefs; /** * Contains integration tests (interaction with the Model) and unit tests for ListCommand. diff --git a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java b/src/test/java/seedu/volant/homepage/logic/parser/AddCommandParserTest.java similarity index 57% rename from src/test/java/seedu/address/logic/parser/AddCommandParserTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/AddCommandParserTest.java index 5cf487d7ebb..f09c68969f0 100644 --- a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/AddCommandParserTest.java @@ -1,85 +1,82 @@ -package seedu.address.logic.parser; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC; -import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY; -import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalPersons.AMY; -import static seedu.address.testutil.TypicalPersons.BOB; +package seedu.volant.homepage.logic.parser; + +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.EMAIL_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_NAME_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_PHONE_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_TAG_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.NAME_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.NAME_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PHONE_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PHONE_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseSuccess; +import static seedu.volant.testutil.TypicalPersons.AMY; +import static seedu.volant.testutil.TypicalPersons.BOB; import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.AddCommand; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; -import seedu.address.testutil.PersonBuilder; +import seedu.volant.homepage.logic.commands.AddCommand; +import seedu.volant.homepage.model.trip.*; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.tag.Tag; +import seedu.volant.testutil.PersonBuilder; public class AddCommandParserTest { private AddCommandParser parser = new AddCommandParser(); @Test public void parse_allFieldsPresent_success() { - Person expectedPerson = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build(); + Trip expectedTrip = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build(); // whitespace only preamble assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedTrip)); // multiple names - last name accepted assertParseSuccess(parser, NAME_DESC_AMY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedTrip)); // multiple phones - last phone accepted assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_AMY + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedTrip)); // multiple emails - last email accepted assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_AMY + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedTrip)); // multiple addresses - last address accepted assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_AMY - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedTrip)); // multiple tags - all accepted - Person expectedPersonMultipleTags = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND) + Trip expectedTripMultipleTags = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND) .build(); assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags)); + + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedTripMultipleTags)); } @Test public void parse_optionalFieldsMissing_success() { // zero tags - Person expectedPerson = new PersonBuilder(AMY).withTags().build(); + Trip expectedTrip = new PersonBuilder(AMY).withTags().build(); assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY, - new AddCommand(expectedPerson)); + new AddCommand(expectedTrip)); } @Test @@ -123,7 +120,7 @@ public void parse_invalidValue_failure() { // invalid address assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS); + + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Location.MESSAGE_CONSTRAINTS); // invalid tag assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB diff --git a/src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java b/src/test/java/seedu/volant/homepage/logic/parser/ArgumentTokenizerTest.java similarity index 96% rename from src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/ArgumentTokenizerTest.java index cfd7f9dfdc4..4931273a094 100644 --- a/src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/ArgumentTokenizerTest.java @@ -1,4 +1,4 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -6,6 +6,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; +import seedu.volant.commons.logic.parser.ArgumentMultimap; +import seedu.volant.commons.logic.parser.ArgumentTokenizer; +import seedu.volant.commons.logic.parser.Prefix; public class ArgumentTokenizerTest { diff --git a/src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java b/src/test/java/seedu/volant/homepage/logic/parser/CommandParserTestUtil.java similarity index 84% rename from src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java rename to src/test/java/seedu/volant/homepage/logic/parser/CommandParserTestUtil.java index e4c33515768..e160e5c07f7 100644 --- a/src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/CommandParserTestUtil.java @@ -1,9 +1,10 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; import static org.junit.jupiter.api.Assertions.assertEquals; -import seedu.address.logic.commands.Command; -import seedu.address.logic.parser.exceptions.ParseException; +import seedu.volant.commons.logic.commands.Command; +import seedu.volant.commons.logic.parser.Parser; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; /** * Contains helper methods for testing command parsers. diff --git a/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java b/src/test/java/seedu/volant/homepage/logic/parser/DeleteCommandParserTest.java similarity index 66% rename from src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/DeleteCommandParserTest.java index 27eaec84450..74627313a00 100644 --- a/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/DeleteCommandParserTest.java @@ -1,13 +1,13 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseSuccess; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.DeleteCommand; +import seedu.volant.homepage.logic.commands.DeleteCommand; /** * As we are only doing white-box testing, our test cases do not cover path variations diff --git a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java b/src/test/java/seedu/volant/homepage/logic/parser/EditCommandParserTest.java similarity index 72% rename from src/test/java/seedu/address/logic/parser/EditCommandParserTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/EditCommandParserTest.java index 2ff31522486..5597b2045ee 100644 --- a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/EditCommandParserTest.java @@ -1,47 +1,45 @@ -package seedu.address.logic.parser; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC; -import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON; +package seedu.volant.homepage.logic.parser; + +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.EMAIL_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_NAME_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_PHONE_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.INVALID_TAG_DESC; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.NAME_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PHONE_DESC_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.PHONE_DESC_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseSuccess; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.testutil.TypicalIndexes.INDEX_SECOND_PERSON; +import static seedu.volant.testutil.TypicalIndexes.INDEX_THIRD_PERSON; import org.junit.jupiter.api.Test; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; -import seedu.address.testutil.EditPersonDescriptorBuilder; +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.logic.commands.EditCommand; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; +import seedu.volant.homepage.model.tag.Tag; +import seedu.volant.testutil.EditPersonDescriptorBuilder; public class EditCommandParserTest { @@ -84,7 +82,7 @@ public void parse_invalidValue_failure() { assertParseFailure(parser, "1" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name assertParseFailure(parser, "1" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone assertParseFailure(parser, "1" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email - assertParseFailure(parser, "1" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address + assertParseFailure(parser, "1" + INVALID_ADDRESS_DESC, Location.MESSAGE_CONSTRAINTS); // invalid address assertParseFailure(parser, "1" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag // invalid phone followed by valid email @@ -94,7 +92,7 @@ public void parse_invalidValue_failure() { // is tested at {@code parse_invalidValueFollowedByValidValue_success()} assertParseFailure(parser, "1" + PHONE_DESC_BOB + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); - // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited, + // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Trip} being edited, // parsing it together with a valid tag results in error assertParseFailure(parser, "1" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS); assertParseFailure(parser, "1" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS); diff --git a/src/test/java/seedu/address/logic/parser/FindCommandParserTest.java b/src/test/java/seedu/volant/homepage/logic/parser/FindCommandParserTest.java similarity index 65% rename from src/test/java/seedu/address/logic/parser/FindCommandParserTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/FindCommandParserTest.java index 70f4f0e79c4..4fa0154f327 100644 --- a/src/test/java/seedu/address/logic/parser/FindCommandParserTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/FindCommandParserTest.java @@ -1,15 +1,15 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.volant.homepage.logic.parser.CommandParserTestUtil.assertParseSuccess; import java.util.Arrays; import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.FindCommand; -import seedu.address.model.person.NameContainsKeywordsPredicate; +import seedu.volant.homepage.logic.commands.FindCommand; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; public class FindCommandParserTest { diff --git a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java b/src/test/java/seedu/volant/homepage/logic/parser/LocationBookParserTest.java similarity index 65% rename from src/test/java/seedu/address/logic/parser/AddressBookParserTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/LocationBookParserTest.java index d9659205b57..36362f614ea 100644 --- a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/LocationBookParserTest.java @@ -1,11 +1,11 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.volant.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; import java.util.Arrays; import java.util.List; @@ -13,31 +13,32 @@ import org.junit.jupiter.api.Test; -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.ClearCommand; -import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.logic.commands.ExitCommand; -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.commands.HelpCommand; -import seedu.address.logic.commands.ListCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.NameContainsKeywordsPredicate; -import seedu.address.model.person.Person; -import seedu.address.testutil.EditPersonDescriptorBuilder; -import seedu.address.testutil.PersonBuilder; -import seedu.address.testutil.PersonUtil; - -public class AddressBookParserTest { - - private final AddressBookParser parser = new AddressBookParser(); +import seedu.volant.commons.logic.parser.InputParser; +import seedu.volant.homepage.logic.commands.AddCommand; +import seedu.volant.homepage.logic.commands.ClearCommand; +import seedu.volant.homepage.logic.commands.DeleteCommand; +import seedu.volant.homepage.logic.commands.EditCommand; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.commons.logic.commands.ExitCommand; +import seedu.volant.homepage.logic.commands.FindCommand; +import seedu.volant.commons.logic.commands.HelpCommand; +import seedu.volant.homepage.logic.commands.ListCommand; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.testutil.EditPersonDescriptorBuilder; +import seedu.volant.testutil.PersonBuilder; +import seedu.volant.testutil.PersonUtil; + +public class LocationBookParserTest { + + private final InputParser parser = new InputParser(); @Test public void parseCommand_add() throws Exception { - Person person = new PersonBuilder().build(); - AddCommand command = (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person)); - assertEquals(new AddCommand(person), command); + Trip trip = new PersonBuilder().build(); + AddCommand command = (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(trip)); + assertEquals(new AddCommand(trip), command); } @Test @@ -55,8 +56,8 @@ public void parseCommand_delete() throws Exception { @Test public void parseCommand_edit() throws Exception { - Person person = new PersonBuilder().build(); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(person).build(); + Trip trip = new PersonBuilder().build(); + EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(trip).build(); EditCommand command = (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + " " + INDEX_FIRST_PERSON.getOneBased() + " " + PersonUtil.getEditPersonDescriptorDetails(descriptor)); assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command); diff --git a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java b/src/test/java/seedu/volant/homepage/logic/parser/ParserUtilTest.java similarity index 89% rename from src/test/java/seedu/address/logic/parser/ParserUtilTest.java rename to src/test/java/seedu/volant/homepage/logic/parser/ParserUtilTest.java index 4256788b1a7..e5e31e83432 100644 --- a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java +++ b/src/test/java/seedu/volant/homepage/logic/parser/ParserUtilTest.java @@ -1,10 +1,10 @@ -package seedu.address.logic.parser; +package seedu.volant.homepage.logic.parser; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.volant.commons.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalIndexes.INDEX_FIRST_PERSON; import java.util.Arrays; import java.util.Collections; @@ -13,12 +13,11 @@ import org.junit.jupiter.api.Test; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; +import seedu.volant.commons.logic.parser.ParserUtil; +import seedu.volant.homepage.logic.parser.exceptions.ParseException; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; +import seedu.volant.homepage.model.tag.Tag; public class ParserUtilTest { private static final String INVALID_NAME = "R@chel"; @@ -114,15 +113,15 @@ public void parseAddress_invalidValue_throwsParseException() { @Test public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception { - Address expectedAddress = new Address(VALID_ADDRESS); - assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS)); + Location expectedLocation = new Location(VALID_ADDRESS); + assertEquals(expectedLocation, ParserUtil.parseAddress(VALID_ADDRESS)); } @Test public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception { String addressWithWhitespace = WHITESPACE + VALID_ADDRESS + WHITESPACE; - Address expectedAddress = new Address(VALID_ADDRESS); - assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace)); + Location expectedLocation = new Location(VALID_ADDRESS); + assertEquals(expectedLocation, ParserUtil.parseAddress(addressWithWhitespace)); } @Test diff --git a/src/test/java/seedu/address/model/AddressBookTest.java b/src/test/java/seedu/volant/homepage/model/LocationBookTest.java similarity index 54% rename from src/test/java/seedu/address/model/AddressBookTest.java rename to src/test/java/seedu/volant/homepage/model/LocationBookTest.java index 87782528ecd..8990fab26de 100644 --- a/src/test/java/seedu/address/model/AddressBookTest.java +++ b/src/test/java/seedu/volant/homepage/model/LocationBookTest.java @@ -1,13 +1,13 @@ -package seedu.address.model; +package seedu.volant.homepage.model; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.ALICE; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import java.util.Arrays; import java.util.Collection; @@ -18,13 +18,13 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import seedu.address.model.person.Person; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.testutil.PersonBuilder; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.trip.exceptions.DuplicateTripException; +import seedu.volant.testutil.PersonBuilder; -public class AddressBookTest { +public class LocationBookTest { - private final AddressBook addressBook = new AddressBook(); + private final TripList addressBook = new TripList(); @Test public void constructor() { @@ -38,20 +38,20 @@ public void resetData_null_throwsNullPointerException() { @Test public void resetData_withValidReadOnlyAddressBook_replacesData() { - AddressBook newData = getTypicalAddressBook(); + TripList newData = getTypicalAddressBook(); addressBook.resetData(newData); assertEquals(newData, addressBook); } @Test public void resetData_withDuplicatePersons_throwsDuplicatePersonException() { - // Two persons with the same identity fields - Person editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) + // Two trips with the same identity fields + Trip editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) .build(); - List newPersons = Arrays.asList(ALICE, editedAlice); - AddressBookStub newData = new AddressBookStub(newPersons); + List newTrips = Arrays.asList(ALICE, editedAlice); + TripListStub newData = new TripListStub(newTrips); - assertThrows(DuplicatePersonException.class, () -> addressBook.resetData(newData)); + assertThrows(DuplicateTripException.class, () -> addressBook.resetData(newData)); } @Test @@ -73,7 +73,7 @@ public void hasPerson_personInAddressBook_returnsTrue() { @Test public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() { addressBook.addPerson(ALICE); - Person editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) + Trip editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) .build(); assertTrue(addressBook.hasPerson(editedAlice)); } @@ -84,18 +84,18 @@ public void getPersonList_modifyList_throwsUnsupportedOperationException() { } /** - * A stub ReadOnlyAddressBook whose persons list can violate interface constraints. + * A stub ReadOnlyTripList whose trips list can violate interface constraints. */ - private static class AddressBookStub implements ReadOnlyAddressBook { - private final ObservableList persons = FXCollections.observableArrayList(); + private static class TripListStub implements ReadOnlyTripList { + private final ObservableList trips = FXCollections.observableArrayList(); - AddressBookStub(Collection persons) { - this.persons.setAll(persons); + TripListStub(Collection trips) { + this.trips.setAll(trips); } @Override - public ObservableList getPersonList() { - return persons; + public ObservableList getPersonList() { + return trips; } } diff --git a/src/test/java/seedu/address/model/ModelManagerTest.java b/src/test/java/seedu/volant/homepage/model/ModelManagerTest.java similarity index 86% rename from src/test/java/seedu/address/model/ModelManagerTest.java rename to src/test/java/seedu/volant/homepage/model/ModelManagerTest.java index 2cf1418d116..1d4a3d0bcb3 100644 --- a/src/test/java/seedu/address/model/ModelManagerTest.java +++ b/src/test/java/seedu/volant/homepage/model/ModelManagerTest.java @@ -1,12 +1,12 @@ -package seedu.address.model; +package seedu.volant.homepage.model; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.BENSON; +import static seedu.volant.homepage.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.ALICE; +import static seedu.volant.testutil.TypicalPersons.BENSON; import java.nio.file.Path; import java.nio.file.Paths; @@ -14,9 +14,9 @@ import org.junit.jupiter.api.Test; -import seedu.address.commons.core.GuiSettings; -import seedu.address.model.person.NameContainsKeywordsPredicate; -import seedu.address.testutil.AddressBookBuilder; +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.homepage.model.trip.NameContainsKeywordsPredicate; +import seedu.volant.testutil.AddressBookBuilder; public class ModelManagerTest { @@ -26,7 +26,7 @@ public class ModelManagerTest { public void constructor() { assertEquals(new UserPrefs(), modelManager.getUserPrefs()); assertEquals(new GuiSettings(), modelManager.getGuiSettings()); - assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook())); + assertEquals(new TripList(), new TripList(modelManager.getAddressBook())); } @Test @@ -95,8 +95,8 @@ public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException @Test public void equals() { - AddressBook addressBook = new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build(); - AddressBook differentAddressBook = new AddressBook(); + TripList addressBook = new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build(); + TripList differentAddressBook = new TripList(); UserPrefs userPrefs = new UserPrefs(); // same values -> returns true diff --git a/src/test/java/seedu/address/model/UserPrefsTest.java b/src/test/java/seedu/volant/homepage/model/UserPrefsTest.java similarity index 85% rename from src/test/java/seedu/address/model/UserPrefsTest.java rename to src/test/java/seedu/volant/homepage/model/UserPrefsTest.java index b1307a70d52..83191f21822 100644 --- a/src/test/java/seedu/address/model/UserPrefsTest.java +++ b/src/test/java/seedu/volant/homepage/model/UserPrefsTest.java @@ -1,6 +1,6 @@ -package seedu.address.model; +package seedu.volant.homepage.model; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/model/tag/TagTest.java b/src/test/java/seedu/volant/homepage/model/tag/TagTest.java similarity index 85% rename from src/test/java/seedu/address/model/tag/TagTest.java rename to src/test/java/seedu/volant/homepage/model/tag/TagTest.java index 64d07d79ee2..5a59bcf349e 100644 --- a/src/test/java/seedu/address/model/tag/TagTest.java +++ b/src/test/java/seedu/volant/homepage/model/tag/TagTest.java @@ -1,6 +1,6 @@ -package seedu.address.model.tag; +package seedu.volant.homepage.model.tag; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/model/person/EmailTest.java b/src/test/java/seedu/volant/homepage/model/trip/EmailTest.java similarity index 96% rename from src/test/java/seedu/address/model/person/EmailTest.java rename to src/test/java/seedu/volant/homepage/model/trip/EmailTest.java index 7fa726ceb18..f10dd6c4e19 100644 --- a/src/test/java/seedu/address/model/person/EmailTest.java +++ b/src/test/java/seedu/volant/homepage/model/trip/EmailTest.java @@ -1,8 +1,8 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/volant/homepage/model/trip/LocationTest.java b/src/test/java/seedu/volant/homepage/model/trip/LocationTest.java new file mode 100644 index 00000000000..02fae66ad10 --- /dev/null +++ b/src/test/java/seedu/volant/homepage/model/trip/LocationTest.java @@ -0,0 +1,36 @@ +package seedu.volant.homepage.model.trip; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static seedu.volant.testutil.Assert.assertThrows; + +import org.junit.jupiter.api.Test; + +public class LocationTest { + + @Test + public void constructor_null_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> new Location(null)); + } + + @Test + public void constructor_invalidAddress_throwsIllegalArgumentException() { + String invalidAddress = ""; + assertThrows(IllegalArgumentException.class, () -> new Location(invalidAddress)); + } + + @Test + public void isValidAddress() { + // null address + assertThrows(NullPointerException.class, () -> Location.isValidAddress(null)); + + // invalid addresses + assertFalse(Location.isValidAddress("")); // empty string + assertFalse(Location.isValidAddress(" ")); // spaces only + + // valid addresses + assertTrue(Location.isValidAddress("Blk 456, Den Road, #01-355")); + assertTrue(Location.isValidAddress("-")); // one character + assertTrue(Location.isValidAddress("Leng Inc; 1234 Market St; San Francisco CA 2349879; USA")); // long address + } +} diff --git a/src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java b/src/test/java/seedu/volant/homepage/model/trip/NameContainsKeywordsPredicateTest.java similarity index 96% rename from src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java rename to src/test/java/seedu/volant/homepage/model/trip/NameContainsKeywordsPredicateTest.java index f136664e017..2953bc5d21e 100644 --- a/src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java +++ b/src/test/java/seedu/volant/homepage/model/trip/NameContainsKeywordsPredicateTest.java @@ -1,4 +1,4 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test; -import seedu.address.testutil.PersonBuilder; +import seedu.volant.testutil.PersonBuilder; public class NameContainsKeywordsPredicateTest { @@ -34,7 +34,7 @@ public void equals() { // null -> returns false assertFalse(firstPredicate.equals(null)); - // different person -> returns false + // different trip -> returns false assertFalse(firstPredicate.equals(secondPredicate)); } diff --git a/src/test/java/seedu/address/model/person/NameTest.java b/src/test/java/seedu/volant/homepage/model/trip/NameTest.java similarity index 93% rename from src/test/java/seedu/address/model/person/NameTest.java rename to src/test/java/seedu/volant/homepage/model/trip/NameTest.java index c9801392874..c3f771b0e78 100644 --- a/src/test/java/seedu/address/model/person/NameTest.java +++ b/src/test/java/seedu/volant/homepage/model/trip/NameTest.java @@ -1,8 +1,8 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/model/person/PhoneTest.java b/src/test/java/seedu/volant/homepage/model/trip/PhoneTest.java similarity index 93% rename from src/test/java/seedu/address/model/person/PhoneTest.java rename to src/test/java/seedu/volant/homepage/model/trip/PhoneTest.java index 8dd52766a5f..1b512a88c07 100644 --- a/src/test/java/seedu/address/model/person/PhoneTest.java +++ b/src/test/java/seedu/volant/homepage/model/trip/PhoneTest.java @@ -1,8 +1,8 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/seedu/address/model/person/PersonTest.java b/src/test/java/seedu/volant/homepage/model/trip/TripTest.java similarity index 72% rename from src/test/java/seedu/address/model/person/PersonTest.java rename to src/test/java/seedu/volant/homepage/model/trip/TripTest.java index 7c1058d8635..34d64eba313 100644 --- a/src/test/java/seedu/address/model/person/PersonTest.java +++ b/src/test/java/seedu/volant/homepage/model/trip/TripTest.java @@ -1,26 +1,26 @@ -package seedu.address.model.person; +package seedu.volant.homepage.model.trip; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.ALICE; +import static seedu.volant.testutil.TypicalPersons.BOB; import org.junit.jupiter.api.Test; -import seedu.address.testutil.PersonBuilder; +import seedu.volant.testutil.PersonBuilder; -public class PersonTest { +public class TripTest { @Test public void asObservableList_modifyList_throwsUnsupportedOperationException() { - Person person = new PersonBuilder().build(); - assertThrows(UnsupportedOperationException.class, () -> person.getTags().remove(0)); + Trip trip = new PersonBuilder().build(); + assertThrows(UnsupportedOperationException.class, () -> trip.getTags().remove(0)); } @Test @@ -32,7 +32,7 @@ public void isSamePerson() { assertFalse(ALICE.isSamePerson(null)); // different phone and email -> returns false - Person editedAlice = new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).build(); + Trip editedAlice = new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).build(); assertFalse(ALICE.isSamePerson(editedAlice)); // different name -> returns false @@ -57,7 +57,7 @@ public void isSamePerson() { @Test public void equals() { // same values -> returns true - Person aliceCopy = new PersonBuilder(ALICE).build(); + Trip aliceCopy = new PersonBuilder(ALICE).build(); assertTrue(ALICE.equals(aliceCopy)); // same object -> returns true @@ -69,11 +69,11 @@ public void equals() { // different type -> returns false assertFalse(ALICE.equals(5)); - // different person -> returns false + // different trip -> returns false assertFalse(ALICE.equals(BOB)); // different name -> returns false - Person editedAlice = new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build(); + Trip editedAlice = new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build(); assertFalse(ALICE.equals(editedAlice)); // different phone -> returns false diff --git a/src/test/java/seedu/volant/homepage/model/trip/UniqueTripListTest.java b/src/test/java/seedu/volant/homepage/model/trip/UniqueTripListTest.java new file mode 100644 index 00000000000..7dc62e3448a --- /dev/null +++ b/src/test/java/seedu/volant/homepage/model/trip/UniqueTripListTest.java @@ -0,0 +1,170 @@ +package seedu.volant.homepage.model.trip; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.ALICE; +import static seedu.volant.testutil.TypicalPersons.BOB; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import seedu.volant.homepage.model.trip.exceptions.DuplicateTripException; +import seedu.volant.homepage.model.trip.exceptions.PersonNotFoundException; +import seedu.volant.testutil.PersonBuilder; + +public class UniqueTripListTest { + + private final UniqueTripList uniqueTripList = new UniqueTripList(); + + @Test + public void contains_nullPerson_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.contains(null)); + } + + @Test + public void contains_personNotInList_returnsFalse() { + assertFalse(uniqueTripList.contains(ALICE)); + } + + @Test + public void contains_personInList_returnsTrue() { + uniqueTripList.add(ALICE); + assertTrue(uniqueTripList.contains(ALICE)); + } + + @Test + public void contains_personWithSameIdentityFieldsInList_returnsTrue() { + uniqueTripList.add(ALICE); + Trip editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) + .build(); + assertTrue(uniqueTripList.contains(editedAlice)); + } + + @Test + public void add_nullPerson_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.add(null)); + } + + @Test + public void add_duplicatePerson_throwsDuplicatePersonException() { + uniqueTripList.add(ALICE); + assertThrows(DuplicateTripException.class, () -> uniqueTripList.add(ALICE)); + } + + @Test + public void setPerson_nullTargetPerson_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.setTrip(null, ALICE)); + } + + @Test + public void setPerson_nullEditedPerson_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.setTrip(ALICE, null)); + } + + @Test + public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() { + assertThrows(PersonNotFoundException.class, () -> uniqueTripList.setTrip(ALICE, ALICE)); + } + + @Test + public void setPerson_editedPersonIsSamePerson_success() { + uniqueTripList.add(ALICE); + uniqueTripList.setTrip(ALICE, ALICE); + UniqueTripList expectedUniqueTripList = new UniqueTripList(); + expectedUniqueTripList.add(ALICE); + assertEquals(expectedUniqueTripList, uniqueTripList); + } + + @Test + public void setPerson_editedPersonHasSameIdentity_success() { + uniqueTripList.add(ALICE); + Trip editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) + .build(); + uniqueTripList.setTrip(ALICE, editedAlice); + UniqueTripList expectedUniqueTripList = new UniqueTripList(); + expectedUniqueTripList.add(editedAlice); + assertEquals(expectedUniqueTripList, uniqueTripList); + } + + @Test + public void setPerson_editedPersonHasDifferentIdentity_success() { + uniqueTripList.add(ALICE); + uniqueTripList.setTrip(ALICE, BOB); + UniqueTripList expectedUniqueTripList = new UniqueTripList(); + expectedUniqueTripList.add(BOB); + assertEquals(expectedUniqueTripList, uniqueTripList); + } + + @Test + public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() { + uniqueTripList.add(ALICE); + uniqueTripList.add(BOB); + assertThrows(DuplicateTripException.class, () -> uniqueTripList.setTrip(ALICE, BOB)); + } + + @Test + public void remove_nullPerson_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.remove(null)); + } + + @Test + public void remove_personDoesNotExist_throwsPersonNotFoundException() { + assertThrows(PersonNotFoundException.class, () -> uniqueTripList.remove(ALICE)); + } + + @Test + public void remove_existingPerson_removesPerson() { + uniqueTripList.add(ALICE); + uniqueTripList.remove(ALICE); + UniqueTripList expectedUniqueTripList = new UniqueTripList(); + assertEquals(expectedUniqueTripList, uniqueTripList); + } + + @Test + public void setPersons_nullUniquePersonList_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.setTrips((UniqueTripList) null)); + } + + @Test + public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() { + uniqueTripList.add(ALICE); + UniqueTripList expectedUniqueTripList = new UniqueTripList(); + expectedUniqueTripList.add(BOB); + uniqueTripList.setTrips(expectedUniqueTripList); + assertEquals(expectedUniqueTripList, uniqueTripList); + } + + @Test + public void setPersons_nullList_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> uniqueTripList.setTrips((List) null)); + } + + @Test + public void setPersons_list_replacesOwnListWithProvidedList() { + uniqueTripList.add(ALICE); + List tripList = Collections.singletonList(BOB); + uniqueTripList.setTrips(tripList); + UniqueTripList expectedUniqueTripList = new UniqueTripList(); + expectedUniqueTripList.add(BOB); + assertEquals(expectedUniqueTripList, uniqueTripList); + } + + @Test + public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() { + List listWithDuplicateTrips = Arrays.asList(ALICE, ALICE); + assertThrows(DuplicateTripException.class, () -> uniqueTripList.setTrips(listWithDuplicateTrips)); + } + + @Test + public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() { + assertThrows(UnsupportedOperationException.class, () + -> uniqueTripList.asUnmodifiableObservableList().remove(0)); + } +} diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/volant/storage/JsonAdaptedTripTest.java similarity index 63% rename from src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java rename to src/test/java/seedu/volant/storage/JsonAdaptedTripTest.java index 83b11331cdb..3140b7076c2 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/volant/storage/JsonAdaptedTripTest.java @@ -1,9 +1,9 @@ -package seedu.address.storage; +package seedu.volant.storage; import static org.junit.jupiter.api.Assertions.assertEquals; -import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.BENSON; +import static seedu.volant.storage.JsonAdaptedTrip.MISSING_FIELD_MESSAGE_FORMAT; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.BENSON; import java.util.ArrayList; import java.util.List; @@ -11,13 +11,11 @@ import org.junit.jupiter.api.Test; -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; +import seedu.volant.commons.exceptions.IllegalValueException; +import seedu.volant.homepage.model.trip.Location; +import seedu.volant.homepage.model.trip.Name; -public class JsonAdaptedPersonTest { +public class JsonAdaptedTripTest { private static final String INVALID_NAME = "R@chel"; private static final String INVALID_PHONE = "+651234"; private static final String INVALID_ADDRESS = " "; @@ -27,74 +25,74 @@ public class JsonAdaptedPersonTest { private static final String VALID_NAME = BENSON.getName().toString(); private static final String VALID_PHONE = BENSON.getPhone().toString(); private static final String VALID_EMAIL = BENSON.getEmail().toString(); - private static final String VALID_ADDRESS = BENSON.getAddress().toString(); + private static final String VALID_ADDRESS = BENSON.getLocation().toString(); private static final List VALID_TAGS = BENSON.getTags().stream() .map(JsonAdaptedTag::new) .collect(Collectors.toList()); @Test public void toModelType_validPersonDetails_returnsPerson() throws Exception { - JsonAdaptedPerson person = new JsonAdaptedPerson(BENSON); + JsonAdaptedTrip person = new JsonAdaptedTrip(BENSON); assertEquals(BENSON, person.toModelType()); } @Test public void toModelType_invalidName_throwsIllegalValueException() { - JsonAdaptedPerson person = - new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedTrip person = + new JsonAdaptedTrip(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); String expectedMessage = Name.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullName_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedTrip person = new JsonAdaptedTrip(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_invalidPhone_throwsIllegalValueException() { - JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedTrip person = + new JsonAdaptedTrip(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); String expectedMessage = Phone.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullPhone_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedTrip person = new JsonAdaptedTrip(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_invalidEmail_throwsIllegalValueException() { - JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedTrip person = + new JsonAdaptedTrip(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS); String expectedMessage = Email.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullEmail_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedTrip person = new JsonAdaptedTrip(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_invalidAddress_throwsIllegalValueException() { - JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS); - String expectedMessage = Address.MESSAGE_CONSTRAINTS; + JsonAdaptedTrip person = + new JsonAdaptedTrip(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS); + String expectedMessage = Location.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullAddress_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS); - String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()); + JsonAdaptedTrip person = new JsonAdaptedTrip(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS); + String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Location.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -102,8 +100,8 @@ public void toModelType_nullAddress_throwsIllegalValueException() { public void toModelType_invalidTags_throwsIllegalValueException() { List invalidTags = new ArrayList<>(VALID_TAGS); invalidTags.add(new JsonAdaptedTag(INVALID_TAG)); - JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags); + JsonAdaptedTrip person = + new JsonAdaptedTrip(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags); assertThrows(IllegalValueException.class, person::toModelType); } diff --git a/src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java b/src/test/java/seedu/volant/storage/JsonLocationBookStorageTest.java similarity index 68% rename from src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java rename to src/test/java/seedu/volant/storage/JsonLocationBookStorageTest.java index ac3c3af9566..04cfa503f8f 100644 --- a/src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java +++ b/src/test/java/seedu/volant/storage/JsonLocationBookStorageTest.java @@ -1,12 +1,12 @@ -package seedu.address.storage; +package seedu.volant.storage; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static seedu.address.testutil.Assert.assertThrows; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.HOON; -import static seedu.address.testutil.TypicalPersons.IDA; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.testutil.Assert.assertThrows; +import static seedu.volant.testutil.TypicalPersons.ALICE; +import static seedu.volant.testutil.TypicalPersons.HOON; +import static seedu.volant.testutil.TypicalPersons.IDA; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import java.io.IOException; import java.nio.file.Path; @@ -15,12 +15,12 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.ReadOnlyTripList; -public class JsonAddressBookStorageTest { - private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "JsonAddressBookStorageTest"); +public class JsonLocationBookStorageTest { + private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "JsonLocationBookStorageTest"); @TempDir public Path testFolder; @@ -30,8 +30,8 @@ public void readAddressBook_nullFilePath_throwsNullPointerException() { assertThrows(NullPointerException.class, () -> readAddressBook(null)); } - private java.util.Optional readAddressBook(String filePath) throws Exception { - return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath)); + private java.util.Optional readAddressBook(String filePath) throws Exception { + return new JsonVolantStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath)); } private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) { @@ -63,26 +63,26 @@ public void readAddressBook_invalidAndValidPersonAddressBook_throwDataConversion @Test public void readAndSaveAddressBook_allInOrder_success() throws Exception { Path filePath = testFolder.resolve("TempAddressBook.json"); - AddressBook original = getTypicalAddressBook(); - JsonAddressBookStorage jsonAddressBookStorage = new JsonAddressBookStorage(filePath); + TripList original = getTypicalAddressBook(); + JsonVolantStorage jsonAddressBookStorage = new JsonVolantStorage(filePath); // Save in new file and read back jsonAddressBookStorage.saveAddressBook(original, filePath); - ReadOnlyAddressBook readBack = jsonAddressBookStorage.readAddressBook(filePath).get(); - assertEquals(original, new AddressBook(readBack)); + ReadOnlyTripList readBack = jsonAddressBookStorage.readAddressBook(filePath).get(); + assertEquals(original, new TripList(readBack)); // Modify data, overwrite exiting file, and read back original.addPerson(HOON); original.removePerson(ALICE); jsonAddressBookStorage.saveAddressBook(original, filePath); readBack = jsonAddressBookStorage.readAddressBook(filePath).get(); - assertEquals(original, new AddressBook(readBack)); + assertEquals(original, new TripList(readBack)); // Save and read without specifying file path original.addPerson(IDA); jsonAddressBookStorage.saveAddressBook(original); // file path not specified readBack = jsonAddressBookStorage.readAddressBook().get(); // file path not specified - assertEquals(original, new AddressBook(readBack)); + assertEquals(original, new TripList(readBack)); } @@ -94,9 +94,9 @@ public void saveAddressBook_nullAddressBook_throwsNullPointerException() { /** * Saves {@code addressBook} at the specified {@code filePath}. */ - private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) { + private void saveAddressBook(ReadOnlyTripList addressBook, String filePath) { try { - new JsonAddressBookStorage(Paths.get(filePath)) + new JsonVolantStorage(Paths.get(filePath)) .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath)); } catch (IOException ioe) { throw new AssertionError("There should not be an error writing to the file.", ioe); @@ -105,6 +105,6 @@ private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) { @Test public void saveAddressBook_nullFilePath_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> saveAddressBook(new AddressBook(), null)); + assertThrows(NullPointerException.class, () -> saveAddressBook(new TripList(), null)); } } diff --git a/src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java b/src/test/java/seedu/volant/storage/JsonSerializableLocationBookTest.java similarity index 52% rename from src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java rename to src/test/java/seedu/volant/storage/JsonSerializableLocationBookTest.java index 188c9058d20..6ab527fb110 100644 --- a/src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java +++ b/src/test/java/seedu/volant/storage/JsonSerializableLocationBookTest.java @@ -1,46 +1,46 @@ -package seedu.address.storage; +package seedu.volant.storage; import static org.junit.jupiter.api.Assertions.assertEquals; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import java.nio.file.Path; import java.nio.file.Paths; import org.junit.jupiter.api.Test; -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.commons.util.JsonUtil; -import seedu.address.model.AddressBook; -import seedu.address.testutil.TypicalPersons; +import seedu.volant.commons.exceptions.IllegalValueException; +import seedu.volant.commons.util.JsonUtil; +import seedu.volant.homepage.model.TripList; +import seedu.volant.testutil.TypicalPersons; -public class JsonSerializableAddressBookTest { +public class JsonSerializableLocationBookTest { - private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "JsonSerializableAddressBookTest"); + private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "JsonSerializableLocationBookTest"); private static final Path TYPICAL_PERSONS_FILE = TEST_DATA_FOLDER.resolve("typicalPersonsAddressBook.json"); private static final Path INVALID_PERSON_FILE = TEST_DATA_FOLDER.resolve("invalidPersonAddressBook.json"); private static final Path DUPLICATE_PERSON_FILE = TEST_DATA_FOLDER.resolve("duplicatePersonAddressBook.json"); @Test public void toModelType_typicalPersonsFile_success() throws Exception { - JsonSerializableAddressBook dataFromFile = JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE, - JsonSerializableAddressBook.class).get(); - AddressBook addressBookFromFile = dataFromFile.toModelType(); - AddressBook typicalPersonsAddressBook = TypicalPersons.getTypicalAddressBook(); + JsonSerializableTripList dataFromFile = JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE, + JsonSerializableTripList.class).get(); + TripList addressBookFromFile = dataFromFile.toModelType(); + TripList typicalPersonsAddressBook = TypicalPersons.getTypicalAddressBook(); assertEquals(addressBookFromFile, typicalPersonsAddressBook); } @Test public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception { - JsonSerializableAddressBook dataFromFile = JsonUtil.readJsonFile(INVALID_PERSON_FILE, - JsonSerializableAddressBook.class).get(); + JsonSerializableTripList dataFromFile = JsonUtil.readJsonFile(INVALID_PERSON_FILE, + JsonSerializableTripList.class).get(); assertThrows(IllegalValueException.class, dataFromFile::toModelType); } @Test public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception { - JsonSerializableAddressBook dataFromFile = JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE, - JsonSerializableAddressBook.class).get(); - assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON, + JsonSerializableTripList dataFromFile = JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE, + JsonSerializableTripList.class).get(); + assertThrows(IllegalValueException.class, JsonSerializableTripList.MESSAGE_DUPLICATE_PERSON, dataFromFile::toModelType); } diff --git a/src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java b/src/test/java/seedu/volant/storage/JsonUserPrefsStorageTest.java similarity index 94% rename from src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java rename to src/test/java/seedu/volant/storage/JsonUserPrefsStorageTest.java index 16f33f4a6bb..64f8f7d2bef 100644 --- a/src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java +++ b/src/test/java/seedu/volant/storage/JsonUserPrefsStorageTest.java @@ -1,8 +1,8 @@ -package seedu.address.storage; +package seedu.volant.storage; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import java.io.IOException; import java.nio.file.Path; @@ -12,9 +12,9 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.UserPrefs; +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.commons.exceptions.DataConversionException; +import seedu.volant.homepage.model.UserPrefs; public class JsonUserPrefsStorageTest { diff --git a/src/test/java/seedu/address/storage/StorageManagerTest.java b/src/test/java/seedu/volant/storage/StorageManagerTest.java similarity index 72% rename from src/test/java/seedu/address/storage/StorageManagerTest.java rename to src/test/java/seedu/volant/storage/StorageManagerTest.java index 99a16548970..9ccf2604031 100644 --- a/src/test/java/seedu/address/storage/StorageManagerTest.java +++ b/src/test/java/seedu/volant/storage/StorageManagerTest.java @@ -1,8 +1,8 @@ -package seedu.address.storage; +package seedu.volant.storage; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.volant.testutil.TypicalPersons.getTypicalAddressBook; import java.nio.file.Path; @@ -10,10 +10,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import seedu.address.commons.core.GuiSettings; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.UserPrefs; +import seedu.volant.commons.core.GuiSettings; +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.ReadOnlyTripList; +import seedu.volant.homepage.model.UserPrefs; public class StorageManagerTest { @@ -24,7 +24,7 @@ public class StorageManagerTest { @BeforeEach public void setUp() { - JsonAddressBookStorage addressBookStorage = new JsonAddressBookStorage(getTempFilePath("ab")); + JsonVolantStorage addressBookStorage = new JsonVolantStorage(getTempFilePath("ab")); JsonUserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(getTempFilePath("prefs")); storageManager = new StorageManager(addressBookStorage, userPrefsStorage); } @@ -51,13 +51,13 @@ public void prefsReadSave() throws Exception { public void addressBookReadSave() throws Exception { /* * Note: This is an integration test that verifies the StorageManager is properly wired to the - * {@link JsonAddressBookStorage} class. - * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class. + * {@link JsonVolantStorage} class. + * More extensive testing of UserPref saving/reading is done in {@link JsonLocationBookStorageTest} class. */ - AddressBook original = getTypicalAddressBook(); + TripList original = getTypicalAddressBook(); storageManager.saveAddressBook(original); - ReadOnlyAddressBook retrieved = storageManager.readAddressBook().get(); - assertEquals(original, new AddressBook(retrieved)); + ReadOnlyTripList retrieved = storageManager.readAddressBook().get(); + assertEquals(original, new TripList(retrieved)); } @Test diff --git a/src/test/java/seedu/volant/testutil/AddressBookBuilder.java b/src/test/java/seedu/volant/testutil/AddressBookBuilder.java new file mode 100644 index 00000000000..f89ea39bc25 --- /dev/null +++ b/src/test/java/seedu/volant/testutil/AddressBookBuilder.java @@ -0,0 +1,34 @@ +package seedu.volant.testutil; + +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.trip.Trip; + +/** + * A utility class to help with building Addressbook objects. + * Example usage:
    + * {@code TripList ab = new AddressBookBuilder().withPerson("John", "Doe").build();} + */ +public class AddressBookBuilder { + + private TripList addressBook; + + public AddressBookBuilder() { + addressBook = new TripList(); + } + + public AddressBookBuilder(TripList addressBook) { + this.addressBook = addressBook; + } + + /** + * Adds a new {@code Trip} to the {@code TripList} that we are building. + */ + public AddressBookBuilder withPerson(Trip trip) { + addressBook.addPerson(trip); + return this; + } + + public TripList build() { + return addressBook; + } +} diff --git a/src/test/java/seedu/address/testutil/Assert.java b/src/test/java/seedu/volant/testutil/Assert.java similarity index 97% rename from src/test/java/seedu/address/testutil/Assert.java rename to src/test/java/seedu/volant/testutil/Assert.java index 9863093bd6e..4f9c38675be 100644 --- a/src/test/java/seedu/address/testutil/Assert.java +++ b/src/test/java/seedu/volant/testutil/Assert.java @@ -1,4 +1,4 @@ -package seedu.address.testutil; +package seedu.volant.testutil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.function.Executable; diff --git a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java b/src/test/java/seedu/volant/testutil/EditPersonDescriptorBuilder.java similarity index 70% rename from src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java rename to src/test/java/seedu/volant/testutil/EditPersonDescriptorBuilder.java index 4584bd5044e..408acccc2de 100644 --- a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java +++ b/src/test/java/seedu/volant/testutil/EditPersonDescriptorBuilder.java @@ -1,16 +1,13 @@ -package seedu.address.testutil; +package seedu.volant.testutil; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.homepage.model.trip.*; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.tag.Tag; /** * A utility class to help with building EditPersonDescriptor objects. @@ -28,15 +25,15 @@ public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) { } /** - * Returns an {@code EditPersonDescriptor} with fields containing {@code person}'s details + * Returns an {@code EditPersonDescriptor} with fields containing {@code trip}'s details */ - public EditPersonDescriptorBuilder(Person person) { + public EditPersonDescriptorBuilder(Trip trip) { descriptor = new EditPersonDescriptor(); - descriptor.setName(person.getName()); - descriptor.setPhone(person.getPhone()); - descriptor.setEmail(person.getEmail()); - descriptor.setAddress(person.getAddress()); - descriptor.setTags(person.getTags()); + descriptor.setName(trip.getName()); + descriptor.setPhone(trip.getPhone()); + descriptor.setEmail(trip.getEmail()); + descriptor.setAddress(trip.getLocation()); + descriptor.setTags(trip.getTags()); } /** @@ -64,10 +61,10 @@ public EditPersonDescriptorBuilder withEmail(String email) { } /** - * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building. + * Sets the {@code Location} of the {@code EditPersonDescriptor} that we are building. */ public EditPersonDescriptorBuilder withAddress(String address) { - descriptor.setAddress(new Address(address)); + descriptor.setAddress(new Location(address)); return this; } diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/volant/testutil/PersonBuilder.java similarity index 52% rename from src/test/java/seedu/address/testutil/PersonBuilder.java rename to src/test/java/seedu/volant/testutil/PersonBuilder.java index 5eff412178b..8e59c583f81 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/volant/testutil/PersonBuilder.java @@ -1,18 +1,15 @@ -package seedu.address.testutil; +package seedu.volant.testutil; import java.util.HashSet; import java.util.Set; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; -import seedu.address.model.util.SampleDataUtil; +import seedu.volant.homepage.model.trip.*; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.tag.Tag; +import seedu.volant.homepage.model.util.SampleDataUtil; /** - * A utility class to help with building Person objects. + * A utility class to help with building Trip objects. */ public class PersonBuilder { @@ -24,30 +21,30 @@ public class PersonBuilder { private Name name; private Phone phone; private Email email; - private Address address; + private Location location; private Set tags; public PersonBuilder() { name = new Name(DEFAULT_NAME); phone = new Phone(DEFAULT_PHONE); email = new Email(DEFAULT_EMAIL); - address = new Address(DEFAULT_ADDRESS); + location = new Location(DEFAULT_ADDRESS); tags = new HashSet<>(); } /** - * Initializes the PersonBuilder with the data of {@code personToCopy}. + * Initializes the PersonBuilder with the data of {@code tripToCopy}. */ - public PersonBuilder(Person personToCopy) { - name = personToCopy.getName(); - phone = personToCopy.getPhone(); - email = personToCopy.getEmail(); - address = personToCopy.getAddress(); - tags = new HashSet<>(personToCopy.getTags()); + public PersonBuilder(Trip tripToCopy) { + name = tripToCopy.getName(); + phone = tripToCopy.getPhone(); + email = tripToCopy.getEmail(); + location = tripToCopy.getLocation(); + tags = new HashSet<>(tripToCopy.getTags()); } /** - * Sets the {@code Name} of the {@code Person} that we are building. + * Sets the {@code Name} of the {@code Trip} that we are building. */ public PersonBuilder withName(String name) { this.name = new Name(name); @@ -55,7 +52,7 @@ public PersonBuilder withName(String name) { } /** - * Parses the {@code tags} into a {@code Set} and set it to the {@code Person} that we are building. + * Parses the {@code tags} into a {@code Set} and set it to the {@code Trip} that we are building. */ public PersonBuilder withTags(String ... tags) { this.tags = SampleDataUtil.getTagSet(tags); @@ -63,15 +60,15 @@ public PersonBuilder withTags(String ... tags) { } /** - * Sets the {@code Address} of the {@code Person} that we are building. + * Sets the {@code Location} of the {@code Trip} that we are building. */ public PersonBuilder withAddress(String address) { - this.address = new Address(address); + this.location = new Location(address); return this; } /** - * Sets the {@code Phone} of the {@code Person} that we are building. + * Sets the {@code Phone} of the {@code Trip} that we are building. */ public PersonBuilder withPhone(String phone) { this.phone = new Phone(phone); @@ -79,15 +76,15 @@ public PersonBuilder withPhone(String phone) { } /** - * Sets the {@code Email} of the {@code Person} that we are building. + * Sets the {@code Email} of the {@code Trip} that we are building. */ public PersonBuilder withEmail(String email) { this.email = new Email(email); return this; } - public Person build() { - return new Person(name, phone, email, address, tags); + public Trip build() { + return new Trip(name, phone, email, location, tags); } } diff --git a/src/test/java/seedu/address/testutil/PersonUtil.java b/src/test/java/seedu/volant/testutil/PersonUtil.java similarity index 52% rename from src/test/java/seedu/address/testutil/PersonUtil.java rename to src/test/java/seedu/volant/testutil/PersonUtil.java index 90849945183..44105b57125 100644 --- a/src/test/java/seedu/address/testutil/PersonUtil.java +++ b/src/test/java/seedu/volant/testutil/PersonUtil.java @@ -1,40 +1,40 @@ -package seedu.address.testutil; +package seedu.volant.testutil; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_PHONE; +import static seedu.volant.commons.logic.parser.CliSyntax.PREFIX_TAG; import java.util.Set; -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.person.Person; -import seedu.address.model.tag.Tag; +import seedu.volant.homepage.logic.commands.AddCommand; +import seedu.volant.homepage.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.volant.homepage.model.trip.Trip; +import seedu.volant.homepage.model.tag.Tag; /** - * A utility class for Person. + * A utility class for Trip. */ public class PersonUtil { /** - * Returns an add command string for adding the {@code person}. + * Returns an add command string for adding the {@code trip}. */ - public static String getAddCommand(Person person) { - return AddCommand.COMMAND_WORD + " " + getPersonDetails(person); + public static String getAddCommand(Trip trip) { + return AddCommand.COMMAND_WORD + " " + getPersonDetails(trip); } /** - * Returns the part of command string for the given {@code person}'s details. + * Returns the part of command string for the given {@code trip}'s details. */ - public static String getPersonDetails(Person person) { + public static String getPersonDetails(Trip trip) { StringBuilder sb = new StringBuilder(); - sb.append(PREFIX_NAME + person.getName().fullName + " "); - sb.append(PREFIX_PHONE + person.getPhone().value + " "); - sb.append(PREFIX_EMAIL + person.getEmail().value + " "); - sb.append(PREFIX_ADDRESS + person.getAddress().value + " "); - person.getTags().stream().forEach( + sb.append(PREFIX_NAME + trip.getName().fullName + " "); + sb.append(PREFIX_PHONE + trip.getPhone().value + " "); + sb.append(PREFIX_EMAIL + trip.getEmail().value + " "); + sb.append(PREFIX_ADDRESS + trip.getLocation().value + " "); + trip.getTags().stream().forEach( s -> sb.append(PREFIX_TAG + s.tagName + " ") ); return sb.toString(); diff --git a/src/test/java/seedu/address/testutil/SerializableTestClass.java b/src/test/java/seedu/volant/testutil/SerializableTestClass.java similarity index 98% rename from src/test/java/seedu/address/testutil/SerializableTestClass.java rename to src/test/java/seedu/volant/testutil/SerializableTestClass.java index f5a66340489..96e750617d0 100644 --- a/src/test/java/seedu/address/testutil/SerializableTestClass.java +++ b/src/test/java/seedu/volant/testutil/SerializableTestClass.java @@ -1,4 +1,4 @@ -package seedu.address.testutil; +package seedu.volant.testutil; import java.time.LocalDateTime; import java.util.ArrayList; diff --git a/src/test/java/seedu/address/testutil/TestUtil.java b/src/test/java/seedu/volant/testutil/TestUtil.java similarity index 72% rename from src/test/java/seedu/address/testutil/TestUtil.java rename to src/test/java/seedu/volant/testutil/TestUtil.java index 896d103eb0b..a07853800f7 100644 --- a/src/test/java/seedu/address/testutil/TestUtil.java +++ b/src/test/java/seedu/volant/testutil/TestUtil.java @@ -1,13 +1,13 @@ -package seedu.address.testutil; +package seedu.volant.testutil; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import seedu.address.commons.core.index.Index; -import seedu.address.model.Model; -import seedu.address.model.person.Person; +import seedu.volant.commons.core.index.Index; +import seedu.volant.homepage.model.Model; +import seedu.volant.homepage.model.trip.Trip; /** * A utility class for test cases. @@ -33,23 +33,23 @@ public static Path getFilePathInSandboxFolder(String fileName) { } /** - * Returns the middle index of the person in the {@code model}'s person list. + * Returns the middle index of the trip in the {@code model}'s trip list. */ public static Index getMidIndex(Model model) { return Index.fromOneBased(model.getFilteredPersonList().size() / 2); } /** - * Returns the last index of the person in the {@code model}'s person list. + * Returns the last index of the trip in the {@code model}'s trip list. */ public static Index getLastIndex(Model model) { return Index.fromOneBased(model.getFilteredPersonList().size()); } /** - * Returns the person in the {@code model}'s person list at {@code index}. + * Returns the trip in the {@code model}'s trip list at {@code index}. */ - public static Person getPerson(Model model, Index index) { + public static Trip getPerson(Model model, Index index) { return model.getFilteredPersonList().get(index.getZeroBased()); } } diff --git a/src/test/java/seedu/address/testutil/TypicalIndexes.java b/src/test/java/seedu/volant/testutil/TypicalIndexes.java similarity index 81% rename from src/test/java/seedu/address/testutil/TypicalIndexes.java rename to src/test/java/seedu/volant/testutil/TypicalIndexes.java index 1e613937657..cabeb47a24f 100644 --- a/src/test/java/seedu/address/testutil/TypicalIndexes.java +++ b/src/test/java/seedu/volant/testutil/TypicalIndexes.java @@ -1,6 +1,6 @@ -package seedu.address.testutil; +package seedu.volant.testutil; -import seedu.address.commons.core.index.Index; +import seedu.volant.commons.core.index.Index; /** * A utility class containing a list of {@code Index} objects to be used in tests. diff --git a/src/test/java/seedu/volant/testutil/TypicalPersons.java b/src/test/java/seedu/volant/testutil/TypicalPersons.java new file mode 100644 index 00000000000..10f5e9904b2 --- /dev/null +++ b/src/test/java/seedu/volant/testutil/TypicalPersons.java @@ -0,0 +1,76 @@ +package seedu.volant.testutil; + +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_AMY; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; +import static seedu.volant.homepage.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import seedu.volant.homepage.model.TripList; +import seedu.volant.homepage.model.trip.Trip; + +/** + * A utility class containing a list of {@code Trip} objects to be used in tests. + */ +public class TypicalPersons { + + public static final Trip ALICE = new PersonBuilder().withName("Alice Pauline") + .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") + .withPhone("94351253") + .withTags("friends").build(); + public static final Trip BENSON = new PersonBuilder().withName("Benson Meier") + .withAddress("311, Clementi Ave 2, #02-25") + .withEmail("johnd@example.com").withPhone("98765432") + .withTags("owesMoney", "friends").build(); + public static final Trip CARL = new PersonBuilder().withName("Carl Kurz").withPhone("95352563") + .withEmail("heinz@example.com").withAddress("wall street").build(); + public static final Trip DANIEL = new PersonBuilder().withName("Daniel Meier").withPhone("87652533") + .withEmail("cornelia@example.com").withAddress("10th street").withTags("friends").build(); + public static final Trip ELLE = new PersonBuilder().withName("Elle Meyer").withPhone("9482224") + .withEmail("werner@example.com").withAddress("michegan ave").build(); + public static final Trip FIONA = new PersonBuilder().withName("Fiona Kunz").withPhone("9482427") + .withEmail("lydia@example.com").withAddress("little tokyo").build(); + public static final Trip GEORGE = new PersonBuilder().withName("George Best").withPhone("9482442") + .withEmail("anna@example.com").withAddress("4th street").build(); + + // Manually added + public static final Trip HOON = new PersonBuilder().withName("Hoon Meier").withPhone("8482424") + .withEmail("stefan@example.com").withAddress("little india").build(); + public static final Trip IDA = new PersonBuilder().withName("Ida Mueller").withPhone("8482131") + .withEmail("hans@example.com").withAddress("chicago ave").build(); + + // Manually added - Trip's details found in {@code CommandTestUtil} + public static final Trip AMY = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY) + .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build(); + public static final Trip BOB = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) + .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND) + .build(); + + public static final String KEYWORD_MATCHING_MEIER = "Meier"; // A keyword that matches MEIER + + private TypicalPersons() {} // prevents instantiation + + /** + * Returns an {@code TripList} with all the typical persons. + */ + public static TripList getTypicalAddressBook() { + TripList ab = new TripList(); + for (Trip trip : getTypicalPersons()) { + ab.addPerson(trip); + } + return ab; + } + + public static List getTypicalPersons() { + return new ArrayList<>(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE)); + } +} diff --git a/src/test/java/seedu/address/ui/TestFxmlObject.java b/src/test/java/seedu/volant/ui/TestFxmlObject.java similarity index 96% rename from src/test/java/seedu/address/ui/TestFxmlObject.java rename to src/test/java/seedu/volant/ui/TestFxmlObject.java index 5ecd82656f2..8792b0bf09e 100644 --- a/src/test/java/seedu/address/ui/TestFxmlObject.java +++ b/src/test/java/seedu/volant/ui/TestFxmlObject.java @@ -1,4 +1,4 @@ -package seedu.address.ui; +package seedu.volant.ui; import javafx.beans.DefaultProperty; diff --git a/src/test/java/seedu/address/ui/UiPartTest.java b/src/test/java/seedu/volant/ui/UiPartTest.java similarity index 97% rename from src/test/java/seedu/address/ui/UiPartTest.java rename to src/test/java/seedu/volant/ui/UiPartTest.java index 33d82d911b8..881aac84a2c 100644 --- a/src/test/java/seedu/address/ui/UiPartTest.java +++ b/src/test/java/seedu/volant/ui/UiPartTest.java @@ -1,8 +1,8 @@ -package seedu.address.ui; +package seedu.volant.ui; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static seedu.address.testutil.Assert.assertThrows; +import static seedu.volant.testutil.Assert.assertThrows; import java.net.URL; import java.nio.file.Path; @@ -11,7 +11,7 @@ import org.junit.jupiter.api.io.TempDir; import javafx.fxml.FXML; -import seedu.address.MainApp; +import seedu.volant.MainApp; public class UiPartTest { diff --git a/src/test/resources/view/UiPartTest/validFile.fxml b/src/test/resources/view/UiPartTest/validFile.fxml index bab836af0db..6bdee195103 100644 --- a/src/test/resources/view/UiPartTest/validFile.fxml +++ b/src/test/resources/view/UiPartTest/validFile.fxml @@ -1,4 +1,4 @@ - + Hello World! diff --git a/src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml b/src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml index 151e09ce926..290baf85193 100644 --- a/src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml +++ b/src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml @@ -1,6 +1,6 @@ - Hello World! From 3a56a4beaebdf9a13ea126feec002abae56d9d83 Mon Sep 17 00:00:00 2001 From: ranicelin Date: Sun, 15 Mar 2020 18:23:16 +0800 Subject: [PATCH 012/252] Add navigation commands Add goto TRIP command Add goto TRIP_FEATURE command Add back command Clean up code Modify JUnit tests Remove tutorial files Fix .fxml checkstyle errors --- docs/tutorials/AddRemark.adoc | 425 ------------------ docs/tutorials/RemovingFields.adoc | 117 ----- docs/tutorials/TracingCode.adoc | 258 ----------- src/main/java/seedu/volant/MainApp.java | 53 ++- .../seedu/volant/commons/core/Messages.java | 3 +- .../seedu/volant/commons/logic/Logic.java | 23 +- .../java/seedu/volant/commons/logic/Page.java | 2 +- .../commons/logic/commands/BackCommand.java | 68 +++ .../commons/logic/commands/Command.java | 4 +- .../commons/logic/commands/CommandResult.java | 92 ++-- .../commons/logic/commands/ExitCommand.java | 4 +- .../commons/logic/commands/GotoCommand.java | 10 + .../logic/commands/GotoHomeCommand.java | 52 +++ .../commons/logic/commands/HelpCommand.java | 4 +- .../commands/exceptions/CommandException.java | 2 +- .../logic/parser/GotoCommandParser.java | 76 +++- .../volant/commons/logic/parser/Parser.java | 6 +- .../commons/logic/parser/ParserUtil.java | 10 +- .../parser/exceptions/ParseException.java | 2 +- .../seedu/volant/commons/model/Model.java | 50 +++ .../model/ReadOnlyUserPrefs.java | 2 +- .../model/UserPrefs.java | 18 +- .../seedu/volant/commons/util/StringUtil.java | 23 + .../logic/HomeLogicManager.java} | 62 +-- .../logic/commands/AddCommand.java | 16 +- .../logic/commands/ClearCommand.java | 10 +- .../logic/commands/DeleteCommand.java | 15 +- .../logic/commands/EditCommand.java | 53 +-- .../logic/commands/FindCommand.java | 14 +- .../logic/commands/GotoTripCommand.java | 31 +- .../logic/commands/ListCommand.java | 10 +- .../logic/parser/AddCommandParser.java | 18 +- .../logic/parser/DeleteCommandParser.java | 6 +- .../logic/parser/EditCommandParser.java | 15 +- .../logic/parser/FindCommandParser.java | 8 +- .../logic/parser/HomeInputParser.java} | 38 +- .../model/HomeModelManager.java} | 149 +++--- .../model/ReadOnlyTripList.java | 7 +- .../{homepage => home}/model/TripList.java | 26 +- .../trip => home/model}/UniqueTripList.java | 7 +- .../{homepage => home}/model/tag/Tag.java | 2 +- .../model/trip/DateRange.java | 15 +- .../model/trip/Location.java | 2 +- .../{homepage => home}/model/trip/Name.java | 2 +- .../trip/NameContainsKeywordsPredicate.java | 2 +- .../{homepage => home}/model/trip/Trip.java | 32 +- .../exceptions/DuplicateTripException.java | 2 +- .../exceptions/PersonNotFoundException.java | 2 +- .../home/model/util/SampleDataUtil.java | 48 ++ .../seedu/volant/homepage/model/Model.java | 95 ---- .../homepage/model/trip/TripFeatureList.java | 42 -- .../homepage/model/util/SampleDataUtil.java | 44 -- .../logic/ItineraryLogicManager.java | 80 ++++ .../logic/parser/ItineraryInputParser.java | 60 +++ .../volant/itinerary/model/Activity.java | 44 ++ .../volant/itinerary/model/ActivityList.java | 124 +++++ .../model/ItineraryModelManager.java | 101 +++++ .../itinerary/model/ReadOnlyActivityList.java | 14 + .../itinerary/model/UniqueActivityList.java | 143 ++++++ .../journal/logic/JournalLogicManager.java | 87 ++++ .../logic/parser/JournalInputParser.java | 52 +++ .../seedu/volant/journal/model/Entry.java | 70 +++ .../seedu/volant/journal/model/EntryList.java | 130 ++++++ .../journal/model/JournalModelManager.java | 120 +++++ .../journal/model/ReadOnlyEntryList.java | 14 + .../volant/journal/model/UniqueEntryList.java | 143 ++++++ .../volant/journal/model/feeling/Feeling.java | 8 + .../seedu/volant/storage/JsonAdaptedTag.java | 2 +- .../seedu/volant/storage/JsonAdaptedTrip.java | 8 +- .../storage/JsonSerializableTripList.java | 7 +- .../volant/storage/JsonUserPrefsStorage.java | 4 +- .../volant/storage/JsonVolantStorage.java | 2 +- .../java/seedu/volant/storage/Storage.java | 6 +- .../seedu/volant/storage/StorageManager.java | 7 +- .../volant/storage/UserPrefsStorage.java | 8 +- .../seedu/volant/storage/VolantStorage.java | 4 +- .../volant/trip/logic/TripLogicManager.java | 75 ++++ .../logic/commands/GotoItineraryCommand.java | 45 ++ .../logic/commands/GotoJournalCommand.java | 37 ++ .../trip/logic/parser/TripInputParser.java | 59 +++ .../{trippage => trip}/model/Feature.java | 2 +- .../seedu/volant/trip/model/Itinerary.java | 60 +++ .../java/seedu/volant/trip/model/Journal.java | 70 +++ .../seedu/volant/trip/model/TripFeature.java | 10 + .../volant/trip/model/TripFeatureList.java | 62 +++ .../volant/trip/model/TripModelManager.java | 98 ++++ .../trippage/logic/TrippageLogicManager.java | 34 -- .../logic/commands/GotoItineraryCommand.java | 14 - .../parser/GotoItineraryCommandParser.java | 4 - .../volant/trippage/model/Itinerary.java | 21 - .../seedu/volant/trippage/model/Journal.java | 21 - .../volant/trippage/model/TripFeature.java | 8 - src/main/java/seedu/volant/ui/CommandBox.java | 6 +- src/main/java/seedu/volant/ui/MainWindow.java | 164 ++++--- src/main/java/seedu/volant/ui/UiManager.java | 6 +- src/main/java/seedu/volant/ui/UiPart.java | 1 - .../TripListPanel.java => home/HomePage.java} | 15 +- .../HomePageTripCard.java} | 17 +- .../ui/pages/itinerary/ItineraryPage.java | 62 +++ .../ui/pages/itinerary/ItineraryPageCard.java | 64 +++ .../volant/ui/pages/journal/JournalPage.java | 62 +++ .../ui/pages/journal/JournalPageCard.java | 68 +++ .../ui/pages/{trippage => trip}/TripPage.java | 21 +- .../ui/pages/trip/TripPageItineraryCard.java | 35 ++ .../TripPageJournalCard.java} | 11 +- .../ui/pages/trippage/ItineraryCard.java | 27 -- src/main/resources/view/CommandBox.fxml | 1 - src/main/resources/view/HelpWindow.fxml | 3 +- src/main/resources/view/MainWindow.fxml | 19 +- src/main/resources/view/ResultDisplay.fxml | 3 +- src/main/resources/view/StatusBarFooter.fxml | 1 - .../HomePage.fxml} | 3 +- .../HomePageTripCard.fxml} | 2 - .../view/itinerary/ItineraryPage.fxml | 9 + .../view/itinerary/ItineraryPageCard.fxml | 33 ++ .../resources/view/journal/JournalPage.fxml | 9 + .../view/journal/JournalPageCard.fxml | 33 ++ .../resources/view/{ => trip}/TripPage.fxml | 5 +- .../TripPageItineraryCard.fxml} | 3 +- .../TripPageJournalCard.fxml} | 5 +- .../commands/AddCommandIntegrationTest.java | 45 -- .../logic/commands/ClearCommandTest.java | 32 -- .../logic/commands/CommandTestUtil.java | 130 ------ .../commands/EditTripDescriptorTest.java | 58 --- .../logic/parser/AddCommandParserTest.java | 138 ------ .../volant/homepage/model/trip/EmailTest.java | 61 --- .../homepage/model/trip/LocationTest.java | 36 -- .../volant/homepage/model/trip/PhoneTest.java | 40 -- .../volant/storage/JsonAdaptedTripTest.java | 108 ----- .../storage/JsonLocationBookStorageTest.java | 110 ----- .../testutil/EditPersonDescriptorBuilder.java | 84 ---- .../seedu/volant/testutil/PersonBuilder.java | 90 ---- .../seedu/volant/testutil/PersonUtil.java | 62 --- .../seedu/volant/testutil/TypicalPersons.java | 76 ---- .../data/ConfigUtilTest/EmptyConfig.json | 0 .../ConfigUtilTest/ExtraValuesConfig.json | 0 .../ConfigUtilTest/NotJsonFormatConfig.json | 0 .../data/ConfigUtilTest/TypicalConfig.json | 0 .../invalidAndValidPersonAddressBook.json | 0 .../invalidPersonAddressBook.json | 0 .../notJsonFormatAddressBook.json | 0 .../duplicatePersonAddressBook.json | 0 .../invalidPersonAddressBook.json | 0 .../typicalPersonsAddressBook.json | 0 .../EmptyUserPrefs.json | 0 .../ExtraValuesUserPref.json | 0 .../NotJsonFormatUserPrefs.json | 0 .../TypicalUserPref.json | 0 src/testR/data/sandbox/serialize.json | 9 + .../seedu/volant/AppParametersTest.java | 0 .../seedu/volant/commons/core/ConfigTest.java | 0 .../volant/commons/core/VersionTest.java | 0 .../volant/commons/core/index/IndexTest.java | 0 .../volant/commons/util/AppUtilTest.java | 0 .../commons/util/CollectionUtilTest.java | 0 .../volant/commons/util/ConfigUtilTest.java | 0 .../volant/commons/util/FileUtilTest.java | 0 .../volant/commons/util/JsonUtilTest.java | 0 .../volant/commons/util/StringUtilTest.java | 0 .../volant/home}/logic/LogicManagerTest.java | 72 +-- .../commands/AddCommandIntegrationTest.java | 45 ++ .../home}/logic/commands/AddCommandTest.java | 86 ++-- .../home/logic/commands/ClearCommandTest.java | 32 ++ .../logic/commands/CommandResultTest.java | 15 +- .../home/logic/commands/CommandTestUtil.java | 120 +++++ .../logic/commands/DeleteCommandTest.java | 38 +- .../home}/logic/commands/EditCommandTest.java | 92 ++-- .../commands/EditTripDescriptorTest.java | 32 ++ .../home}/logic/commands/ExitCommandTest.java | 14 +- .../home}/logic/commands/FindCommandTest.java | 39 +- .../home}/logic/commands/HelpCommandTest.java | 14 +- .../home}/logic/commands/ListCommandTest.java | 18 +- .../logic/parser/AddCommandParserTest.java | 61 +++ .../logic/parser/ArgumentTokenizerTest.java | 3 +- .../logic/parser/CommandParserTestUtil.java | 4 +- .../logic/parser/DeleteCommandParserTest.java | 8 +- .../logic/parser/EditCommandParserTest.java | 70 +-- .../logic/parser/FindCommandParserTest.java | 10 +- .../logic/parser/LocationBookParserTest.java | 40 +- .../home}/logic/parser/ParserUtilTest.java | 29 +- .../volant/home}/model/ModelManagerTest.java | 65 ++- .../volant/home/model/TripListTest.java} | 43 +- .../volant/home}/model/UserPrefsTest.java | 6 +- .../seedu/volant/home}/model/tag/TagTest.java | 2 +- .../volant/home/model/trip/DateRangeTest.java | 7 + .../volant/home/model/trip/LocationTest.java | 38 ++ .../NameContainsKeywordsPredicateTest.java | 23 +- .../volant/home}/model/trip/NameTest.java | 2 +- .../volant/home}/model/trip/TripTest.java | 49 +- .../home}/model/trip/UniqueTripListTest.java | 86 ++-- .../volant/storage/JsonAdaptedTripTest.java | 76 ++++ .../JsonSerializableLocationBookTest.java | 6 +- .../storage/JsonUserPrefsStorageTest.java | 4 +- .../volant/storage/JsonVolantStorageTest.java | 110 +++++ .../volant/storage/StorageManagerTest.java | 18 +- .../javaR}/seedu/volant/testutil/Assert.java | 0 .../testutil/EditTripDescriptorBuilder.java | 64 +++ .../testutil/SerializableTestClass.java | 0 .../seedu/volant/testutil/TestUtil.java | 12 +- .../seedu/volant/testutil/TripBuilder.java | 68 +++ .../volant/testutil/TripListBuilder.java} | 16 +- .../javaR/seedu/volant/testutil/TripUtil.java | 45 ++ .../seedu/volant/testutil/TypicalIndexes.java | 0 .../seedu/volant/testutil/TypicalTrips.java | 46 ++ .../seedu/volant/ui/TestFxmlObject.java | 0 .../javaR}/seedu/volant/ui/UiPartTest.java | 1 - .../view/UiPartTest/invalidFile.fxml | 0 .../resources/view/UiPartTest/validFile.fxml | 1 - .../view/UiPartTest/validFileWithFxRoot.fxml | 0 209 files changed, 4197 insertions(+), 3135 deletions(-) delete mode 100644 docs/tutorials/AddRemark.adoc delete mode 100644 docs/tutorials/RemovingFields.adoc delete mode 100644 docs/tutorials/TracingCode.adoc create mode 100644 src/main/java/seedu/volant/commons/logic/commands/BackCommand.java create mode 100644 src/main/java/seedu/volant/commons/logic/commands/GotoHomeCommand.java rename src/main/java/seedu/volant/{homepage => commons}/logic/commands/exceptions/CommandException.java (88%) rename src/main/java/seedu/volant/{homepage => commons}/logic/parser/exceptions/ParseException.java (86%) create mode 100644 src/main/java/seedu/volant/commons/model/Model.java rename src/main/java/seedu/volant/{homepage => commons}/model/ReadOnlyUserPrefs.java (85%) rename src/main/java/seedu/volant/{homepage => commons}/model/UserPrefs.java (77%) rename src/main/java/seedu/volant/{commons/logic/LogicManager.java => home/logic/HomeLogicManager.java} (56%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/AddCommand.java (83%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/ClearCommand.java (64%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/DeleteCommand.java (80%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/EditCommand.java (77%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/FindCommand.java (79%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/GotoTripCommand.java (51%) rename src/main/java/seedu/volant/{homepage => home}/logic/commands/ListCommand.java (66%) rename src/main/java/seedu/volant/{homepage => home}/logic/parser/AddCommandParser.java (78%) rename src/main/java/seedu/volant/{homepage => home}/logic/parser/DeleteCommandParser.java (85%) rename src/main/java/seedu/volant/{homepage => home}/logic/parser/EditCommandParser.java (84%) rename src/main/java/seedu/volant/{homepage => home}/logic/parser/FindCommandParser.java (80%) rename src/main/java/seedu/volant/{commons/logic/parser/InputParser.java => home/logic/parser/HomeInputParser.java} (67%) rename src/main/java/seedu/volant/{homepage/model/ModelManager.java => home/model/HomeModelManager.java} (67%) rename src/main/java/seedu/volant/{homepage => home}/model/ReadOnlyTripList.java (67%) rename src/main/java/seedu/volant/{homepage => home}/model/TripList.java (82%) rename src/main/java/seedu/volant/{homepage/model/trip => home/model}/UniqueTripList.java (95%) rename src/main/java/seedu/volant/{homepage => home}/model/tag/Tag.java (97%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/DateRange.java (79%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/Location.java (97%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/Name.java (97%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/NameContainsKeywordsPredicate.java (95%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/Trip.java (76%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/exceptions/DuplicateTripException.java (85%) rename src/main/java/seedu/volant/{homepage => home}/model/trip/exceptions/PersonNotFoundException.java (72%) create mode 100644 src/main/java/seedu/volant/home/model/util/SampleDataUtil.java delete mode 100644 src/main/java/seedu/volant/homepage/model/Model.java delete mode 100644 src/main/java/seedu/volant/homepage/model/trip/TripFeatureList.java delete mode 100644 src/main/java/seedu/volant/homepage/model/util/SampleDataUtil.java create mode 100644 src/main/java/seedu/volant/itinerary/logic/ItineraryLogicManager.java create mode 100644 src/main/java/seedu/volant/itinerary/logic/parser/ItineraryInputParser.java create mode 100644 src/main/java/seedu/volant/itinerary/model/Activity.java create mode 100644 src/main/java/seedu/volant/itinerary/model/ActivityList.java create mode 100644 src/main/java/seedu/volant/itinerary/model/ItineraryModelManager.java create mode 100644 src/main/java/seedu/volant/itinerary/model/ReadOnlyActivityList.java create mode 100644 src/main/java/seedu/volant/itinerary/model/UniqueActivityList.java create mode 100644 src/main/java/seedu/volant/journal/logic/JournalLogicManager.java create mode 100644 src/main/java/seedu/volant/journal/logic/parser/JournalInputParser.java create mode 100644 src/main/java/seedu/volant/journal/model/Entry.java create mode 100644 src/main/java/seedu/volant/journal/model/EntryList.java create mode 100644 src/main/java/seedu/volant/journal/model/JournalModelManager.java create mode 100644 src/main/java/seedu/volant/journal/model/ReadOnlyEntryList.java create mode 100644 src/main/java/seedu/volant/journal/model/UniqueEntryList.java create mode 100644 src/main/java/seedu/volant/journal/model/feeling/Feeling.java create mode 100644 src/main/java/seedu/volant/trip/logic/TripLogicManager.java create mode 100644 src/main/java/seedu/volant/trip/logic/commands/GotoItineraryCommand.java create mode 100644 src/main/java/seedu/volant/trip/logic/commands/GotoJournalCommand.java create mode 100644 src/main/java/seedu/volant/trip/logic/parser/TripInputParser.java rename src/main/java/seedu/volant/{trippage => trip}/model/Feature.java (72%) create mode 100644 src/main/java/seedu/volant/trip/model/Itinerary.java create mode 100644 src/main/java/seedu/volant/trip/model/Journal.java create mode 100644 src/main/java/seedu/volant/trip/model/TripFeature.java create mode 100644 src/main/java/seedu/volant/trip/model/TripFeatureList.java create mode 100644 src/main/java/seedu/volant/trip/model/TripModelManager.java delete mode 100644 src/main/java/seedu/volant/trippage/logic/TrippageLogicManager.java delete mode 100644 src/main/java/seedu/volant/trippage/logic/commands/GotoItineraryCommand.java delete mode 100644 src/main/java/seedu/volant/trippage/logic/parser/GotoItineraryCommandParser.java delete mode 100644 src/main/java/seedu/volant/trippage/model/Itinerary.java delete mode 100644 src/main/java/seedu/volant/trippage/model/Journal.java delete mode 100644 src/main/java/seedu/volant/trippage/model/TripFeature.java rename src/main/java/seedu/volant/ui/pages/{homepage/TripListPanel.java => home/HomePage.java} (70%) rename src/main/java/seedu/volant/ui/pages/{homepage/TripListCard.java => home/HomePageTripCard.java} (77%) create mode 100644 src/main/java/seedu/volant/ui/pages/itinerary/ItineraryPage.java create mode 100644 src/main/java/seedu/volant/ui/pages/itinerary/ItineraryPageCard.java create mode 100644 src/main/java/seedu/volant/ui/pages/journal/JournalPage.java create mode 100644 src/main/java/seedu/volant/ui/pages/journal/JournalPageCard.java rename src/main/java/seedu/volant/ui/pages/{trippage => trip}/TripPage.java (75%) create mode 100644 src/main/java/seedu/volant/ui/pages/trip/TripPageItineraryCard.java rename src/main/java/seedu/volant/ui/pages/{trippage/JournalCard.java => trip/TripPageJournalCard.java} (59%) delete mode 100644 src/main/java/seedu/volant/ui/pages/trippage/ItineraryCard.java rename src/main/resources/view/{TripListPanel.fxml => home/HomePage.fxml} (74%) rename src/main/resources/view/{TripListCard.fxml => home/HomePageTripCard.fxml} (96%) create mode 100644 src/main/resources/view/itinerary/ItineraryPage.fxml create mode 100644 src/main/resources/view/itinerary/ItineraryPageCard.fxml create mode 100644 src/main/resources/view/journal/JournalPage.fxml create mode 100644 src/main/resources/view/journal/JournalPageCard.fxml rename src/main/resources/view/{ => trip}/TripPage.fxml (84%) rename src/main/resources/view/{ItineraryCard.fxml => trip/TripPageItineraryCard.fxml} (89%) rename src/main/resources/view/{JournalCard.fxml => trip/TripPageJournalCard.fxml} (91%) delete mode 100644 src/test/java/seedu/volant/homepage/logic/commands/AddCommandIntegrationTest.java delete mode 100644 src/test/java/seedu/volant/homepage/logic/commands/ClearCommandTest.java delete mode 100644 src/test/java/seedu/volant/homepage/logic/commands/CommandTestUtil.java delete mode 100644 src/test/java/seedu/volant/homepage/logic/commands/EditTripDescriptorTest.java delete mode 100644 src/test/java/seedu/volant/homepage/logic/parser/AddCommandParserTest.java delete mode 100644 src/test/java/seedu/volant/homepage/model/trip/EmailTest.java delete mode 100644 src/test/java/seedu/volant/homepage/model/trip/LocationTest.java delete mode 100644 src/test/java/seedu/volant/homepage/model/trip/PhoneTest.java delete mode 100644 src/test/java/seedu/volant/storage/JsonAdaptedTripTest.java delete mode 100644 src/test/java/seedu/volant/storage/JsonLocationBookStorageTest.java delete mode 100644 src/test/java/seedu/volant/testutil/EditPersonDescriptorBuilder.java delete mode 100644 src/test/java/seedu/volant/testutil/PersonBuilder.java delete mode 100644 src/test/java/seedu/volant/testutil/PersonUtil.java delete mode 100644 src/test/java/seedu/volant/testutil/TypicalPersons.java rename src/{test => testR}/data/ConfigUtilTest/EmptyConfig.json (100%) rename src/{test => testR}/data/ConfigUtilTest/ExtraValuesConfig.json (100%) rename src/{test => testR}/data/ConfigUtilTest/NotJsonFormatConfig.json (100%) rename src/{test => testR}/data/ConfigUtilTest/TypicalConfig.json (100%) rename src/{test => testR}/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json (100%) rename src/{test => testR}/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json (100%) rename src/{test => testR}/data/JsonAddressBookStorageTest/notJsonFormatAddressBook.json (100%) rename src/{test => testR}/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json (100%) rename src/{test => testR}/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json (100%) rename src/{test => testR}/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json (100%) rename src/{test => testR}/data/JsonUserPrefsStorageTest/EmptyUserPrefs.json (100%) rename src/{test => testR}/data/JsonUserPrefsStorageTest/ExtraValuesUserPref.json (100%) rename src/{test => testR}/data/JsonUserPrefsStorageTest/NotJsonFormatUserPrefs.json (100%) rename src/{test => testR}/data/JsonUserPrefsStorageTest/TypicalUserPref.json (100%) create mode 100644 src/testR/data/sandbox/serialize.json rename src/{test/java => testR/javaR}/seedu/volant/AppParametersTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/core/ConfigTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/core/VersionTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/core/index/IndexTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/util/AppUtilTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/util/CollectionUtilTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/util/ConfigUtilTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/util/FileUtilTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/util/JsonUtilTest.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/commons/util/StringUtilTest.java (100%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/LogicManagerTest.java (70%) create mode 100644 src/testR/javaR/seedu/volant/home/logic/commands/AddCommandIntegrationTest.java rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/AddCommandTest.java (64%) create mode 100644 src/testR/javaR/seedu/volant/home/logic/commands/ClearCommandTest.java rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/CommandResultTest.java (88%) create mode 100644 src/testR/javaR/seedu/volant/home/logic/commands/CommandTestUtil.java rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/DeleteCommandTest.java (71%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/EditCommandTest.java (60%) create mode 100644 src/testR/javaR/seedu/volant/home/logic/commands/EditTripDescriptorTest.java rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/ExitCommandTest.java (56%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/FindCommandTest.java (62%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/HelpCommandTest.java (56%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/commands/ListCommandTest.java (57%) create mode 100644 src/testR/javaR/seedu/volant/home/logic/parser/AddCommandParserTest.java rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/ArgumentTokenizerTest.java (99%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/CommandParserTestUtil.java (92%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/DeleteCommandParserTest.java (78%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/EditCommandParserTest.java (63%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/FindCommandParserTest.java (71%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/LocationBookParserTest.java (71%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/logic/parser/ParserUtilTest.java (87%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/ModelManagerTest.java (59%) rename src/{test/java/seedu/volant/homepage/model/LocationBookTest.java => testR/javaR/seedu/volant/home/model/TripListTest.java} (63%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/UserPrefsTest.java (84%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/tag/TagTest.java (94%) create mode 100644 src/testR/javaR/seedu/volant/home/model/trip/DateRangeTest.java create mode 100644 src/testR/javaR/seedu/volant/home/model/trip/LocationTest.java rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/trip/NameContainsKeywordsPredicateTest.java (75%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/trip/NameTest.java (97%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/trip/TripTest.java (51%) rename src/{test/java/seedu/volant/homepage => testR/javaR/seedu/volant/home}/model/trip/UniqueTripListTest.java (66%) create mode 100644 src/testR/javaR/seedu/volant/storage/JsonAdaptedTripTest.java rename src/{test/java => testR/javaR}/seedu/volant/storage/JsonSerializableLocationBookTest.java (91%) rename src/{test/java => testR/javaR}/seedu/volant/storage/JsonUserPrefsStorageTest.java (97%) create mode 100644 src/testR/javaR/seedu/volant/storage/JsonVolantStorageTest.java rename src/{test/java => testR/javaR}/seedu/volant/storage/StorageManagerTest.java (79%) rename src/{test/java => testR/javaR}/seedu/volant/testutil/Assert.java (100%) create mode 100644 src/testR/javaR/seedu/volant/testutil/EditTripDescriptorBuilder.java rename src/{test/java => testR/javaR}/seedu/volant/testutil/SerializableTestClass.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/testutil/TestUtil.java (77%) create mode 100644 src/testR/javaR/seedu/volant/testutil/TripBuilder.java rename src/{test/java/seedu/volant/testutil/AddressBookBuilder.java => testR/javaR/seedu/volant/testutil/TripListBuilder.java} (52%) create mode 100644 src/testR/javaR/seedu/volant/testutil/TripUtil.java rename src/{test/java => testR/javaR}/seedu/volant/testutil/TypicalIndexes.java (100%) create mode 100644 src/testR/javaR/seedu/volant/testutil/TypicalTrips.java rename src/{test/java => testR/javaR}/seedu/volant/ui/TestFxmlObject.java (100%) rename src/{test/java => testR/javaR}/seedu/volant/ui/UiPartTest.java (97%) rename src/{test => testR}/resources/view/UiPartTest/invalidFile.fxml (100%) rename src/{test => testR}/resources/view/UiPartTest/validFile.fxml (76%) rename src/{test => testR}/resources/view/UiPartTest/validFileWithFxRoot.fxml (100%) diff --git a/docs/tutorials/AddRemark.adoc b/docs/tutorials/AddRemark.adoc deleted file mode 100644 index 04c5131369b..00000000000 --- a/docs/tutorials/AddRemark.adoc +++ /dev/null @@ -1,425 +0,0 @@ -= Tutorial - Adding a new Command -:toc: macro -:site-section: DeveloperGuide -:imagesDir: ../images/add-remark -:stylesDir: ../stylesheets -:xrefstyle: full -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:warning-caption: :warning: -endif::[] - -toc::[] - -== Introduction - -In this tutorial, we'll walk you through the implementation of a new command -- `remark`. - -This command allows users of the AddressBook application to add optional remarks to people in their location book and edit it if required. -The command should have the format of `remark INDEX r/REMARK`. -An example of the command is `remark 2 r/Likes baseball`. - -We'll assume that you have already set up the development environment as outlined in the Developer's Guide. - -== Create a new `remark` command - -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`. - -Let's start by creating a new `RemarkCommand` class in the `src/main/java/seedu/location/logic/command` directory. - -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. - -.RemarkCommand.java -[source, java] ----- -package seedu.location.logic.commands; - -import seedu.location.model.Model; - -/** - * Changes the remark of an existing trip in the location book. - */ -public class RemarkCommand extends Command { - - public static final String COMMAND_WORD = "remark"; - - @Override - public CommandResult execute(Model model) { - return new CommandResult("Hello from remark"); - } -} ----- - -=== Hook `RemarkCommand` into the application - -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`. - -You can refer to the changes in this link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/7d04e49e364dad661cd88f462f01923fba972d2c#diff-5338391f3f6fbb4022c44add6590b74f[diff]. - -=== Run the application - -Run `Main#main` and try out your new `RemarkCommand`. -If everything went well, you should see something like this: - -.Output displayed -image::RemarkHello.png[] - -== Change `RemarkCommand` to throw an exception - -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 an `CommandException` to accurately reflect that our command is still a work in progress. - -.The relationship between RemarkCommand and Command -image::CommandInterface.png[] - -Following the convention in other commands, we add relevant messages as constants and use them. - -.RemarkCommand.java -[source, java] ----- - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the remark of the trip identified " - + "by the index number used in the last trip listing. " - + "Existing remark will be overwritten by the input.\n" - + "Parameters: INDEX (must be a positive integer) " - + "r/ [REMARK]\n" - + "Example: " + COMMAND_WORD + " 1 " - + "r/ Likes to swim."; - - public static final String MESSAGE_NOT_IMPLEMENTED_YET = "Remark command not implemented yet"; - - @Override - public CommandResult execute(Model model) throws CommandException { - throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET); - } ----- - -== Enhancing `RemarkCommand` - -Let's change `RemarkCommand` to parse input from the user. - -=== Make the command accept parameters - -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. - -[source, java] ----- -import static seedu.location.commons.util.CollectionUtil.requireAllNonNull; -//... -public class RemarkCommand extends Command { - //... - public static final String MESSAGE_ARGUMENTS = "Index: %1$d, Remark: %2$s"; - - private final Index index; - private final String remark; - - /** - * @param index of the trip in the filtered trip list to edit the remark - * @param remark of the trip to be updated to - */ - public RemarkCommand(Index index, String remark) { - requireAllNonNull(index, remark); - - this.index = index; - this.remark = remark; - } - @Override - public CommandResult execute(Model model) throws CommandException { - throw new CommandException(String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark)); - } - - @Override - public boolean equals(Object other) { - // short circuit if same object - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof RemarkCommand)) { - return false; - } - - // state check - RemarkCommand e = (RemarkCommand) other; - return index.equals(e.index) - && remark.equals(e.remark); - } -} ----- - -Your code should look something like link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/83dd9e6b03d6b83199ceb6f3b66166483155abed#diff-34ace715a8a8d2e5a66e71289f017b47[this] after you are done. - -=== Parse user input - -Now let's move on to writing a parser that will extract the index and remark from the input provided by the user. - -Create a `RemarkCommandParser` class in the `seedu.location.logic.parser` package. -The class must extend the `Parser` interface. - -.The relationship between Parser and RemarkCommandParser -image::ParserInterface.png[] - -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. - -[source, java] -.ArgumentTokenizer.java ----- -/** - * Tokenizes an arguments string and returns an {@code ArgumentMultimap} - * object that maps prefixes to their respective argument values. Only the - * given prefixes will be recognized in the arguments string. - * - * @param argsString Arguments string of the form: - * {@code preamble value value ...} - * @param prefixes Prefixes to tokenize the arguments string with - * @return ArgumentMultimap object that maps prefixes to their - * arguments - */ ----- - -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` : - -[source, java] -.ArgumentMultimap.java ----- -/** - * Returns the last value of {@code prefix}. - */ -public Optional getValue(Prefix prefix) { - List values = getAllValues(prefix); - return values.isEmpty() ? Optional.empty() : - Optional.of(values.get(values.size() - 1)); -} ----- - -This appears to be what we need to get a String of the remark. -But what about the Index? Taking a quick peek at existing an `Command`... - -[source, java] -.DeleteCommandParser.java ----- -Index index = ParserUtil.parseIndex(args); -return new DeleteCommand(index); ----- - -There appears to be another utility class that obtains an `Index` from the input provided by the user. - -Now that we have the know-how to extract the data that we need from the user's input, we can create a new instance of `RemarkCommand`. - -[source, java] -.RemarkCommandParser.java ----- -public RemarkCommand parse(String args) throws ParseException { - requireNonNull(args); - ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, - PREFIX_REMARK); - - Index index; - try { - index = ParserUtil.parseIndex(argMultimap.getPreamble()); - } catch (IllegalValueException ive) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, - RemarkCommand.MESSAGE_USAGE), ive); - } - - String remark = argMultimap.getValue(PREFIX_REMARK).orElse(""); - - return new RemarkCommand(index, remark); -} ----- - -NOTE: Don't forget to update `AddressBookParser` to use our new `RemarkCommandParser`! - -If you are stuck, check out the sample link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/efdcdf0e80cec9489f7b47e3f65824f4688ad8f7#diff-fc19ecee89c3732a62fbc8c840250508[here]. - -== Add `Remark` to the model - -Now that we have all the information that we need, let's lay the groundwork for some _persistent_ changes. -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 trip'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 trip. - -=== Add a new `Remark` class - -Create a new `Remark` in `trip`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code. - -A copy-paste and search-replace later, you should have something like link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/b7a47c50c8e5f0430d343a23d2863446b6ce9298#diff-af2f075d24dfcd333876f0fbce321f25[this]. -Note how `Remark` has no constrains and thus does not require input validation. - -=== Make use of `Remark` - -Let's change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. -These should be relatively simple changes. - -== Add a placeholder element for remark to the UI - -Without getting too deep into `fxml`, let's go on a 5 minute adventure to get some placeholder text to show up for each trip. - -Simply add -[source, java] -.PersonCard.java -``` -@FXML -private Label remark; -``` - -to link:https://github.com/nus-cs2103-AY1920S1/addressbook-level3/commit/2758455583f0101ed918a318fc75679270843a0d#diff-0c6b6abcfac8c205e075294f25e851fe[`seedu.location.ui.TripCard`]. -`@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. - -Then insert - -``` -