EstateEase is an advanced desktop application designed to streamline residential property management for real estate listing agents in Singapore. Engineered for efficiency, it combines the precision of a Command Line Interface (CLI) with the versatility of a Graphical User Interface (GUI). For those proficient in typing, EstateEase enables quicker and more effective residential property management than conventional GUI-based applications.
This project is based on the AddressBook-Level3 project created by the SE-EDU initiative.
Ensure you have Java 11
or above installed in your Computer.
Download the latest EstateEase.jar
from here.
Copy the file to the folder you want to use as the home folder for your EstateEase.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar EstateEase.jar
command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
Type the command in the command box and press Enter to execute it. e.g. typing help
and pressing Enter will open the help window.
Some example commands you can try:
list
: Lists all contacts.
addSeller n/John Doe p/98765432 e/johnd@example.com type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/999999999
:
Adds a Seller
named John Doe
with a House
to EstateEase.
delete 3
: Deletes the 3rd contact shown in the current list.
matchBuyer Alex Yeoh
: Display Seller
details with House
that match the Budget
and HousingType
of the Buyer
named Alex Yeoh
in EstateEase.
clear
: Deletes all contacts.
exit
: Exits the app.
Refer to the Features below for details of each command.
BUDGET
must be a positive number with at most 17 digits, including any decimal points, and less than 1 trillion.PRICE
must be a positive number with at most 17 digits, including any decimal points, and less than 1 trillion.INDEX
must be positive with a maximum value equal to the number of people stored in the app or 2147483647, whichever is smaller.PHONE
must be at least 3 digits long and at most 15 digits long to account for international constraints. Phone numbers entered should be no shorter than 3 characters and no longer than 15 characters.Notes about the command format:
Words in UPPER_CASE
are the parameters to be supplied by the user.
e.g. in addBuyer n/NAME
, NAME
is a parameter which can be used as addBuyer n/John Doe
.
Items in square brackets are optional.
e.g n/NAME [e/EMAIL]
can be used as n/John Doe e/johnny@doe.com
or as n/John Doe
.
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE
, p/PHONE n/NAME
is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as help
, list
, exit
and clear
) will be ignored.
e.g. if the command specifies help 123
, it will be interpreted as help
.
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
help
Shows a message explaning how to access the help page.
Format: help
addBuyer
Adds a Buyer
to EstateEase.
Format: addBuyer n/NAME p/PHONE e/EMAIL budget/BUDGET type/PREFERRED_HOUSING_TYPE
Note:
BUDGET
and PREFERRED_HOUSING_TYPE
are the housing requirement preferences for every Buyer
, so that Buyer
and Seller
can be matched immediately if their preference matched.BUDGET
value should not exceed $1 trillion.Buyer
cannot have the same name as a Seller
, because a Buyer
cannot be a Seller
, they must be unique.Examples:
addBuyer n/James p/98765432 e/james@gmail.com budget/20000 type/Hdb
addBuyer n/James p/98765432 e/james@gmail.com budget/20000 type/Condominium
addBuyer n/James p/98765432 e/james@gmail.com budget/20000 type/Landed
addSeller
Adds a Seller
to EstateEase.
Format: addSeller n/NAME p/PHONE e/EMAIL type/HOUSING_TYPE street/STREET [blk/BLOCK] [level/LEVEL] unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE
Note:
Seller
will add a House
to his/her list of houses, so that Seller
and Buyer
can be matched immediately if their preference matched.Seller
cannot have the same name as a Buyer
, because a Seller
cannot be a Buyer
, they must be unique.Block
and Level
depends on the Housing Type
.
Housing Type
is a Condominium
, Block
is optional but Level
is compulsory.Housing Type
is a Landed
, Block
and Level
must not exist.Housing Type
is a Hdb
, Block
and Level
are compulsory.Example 1
Case: Add seller with name, phone, email, housing type of
Hdb
, street, block, level, unit number, postal code and housing price.Input:
addSeller n/John Doe p/98765432 e/johnd@example.com type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/999999999
Output:
New seller added= John Doe; Phone= 98765432; Email= johnd@example.com
Example 1 will be presented in EstateEase as follows:
Example 2
Case: Add seller with name, phone, email, housing type of
Landed
, unit number, postal code and housing price.Input:
addSeller n/John Koe p/98765432 e/johnd@example.com type/Landed street/Clementi Ave 2 unitNo/25 postal/578578 price/10000
Output:
New seller added= John Koe; Phone= 98765432; Email= johnd@example.com
Other possible examples (Commands assumed to be standalone):
addSeller n/John Doe p/98765432 e/johnd@example.com type/Condominium street/Clementi Ave 2 blk/N/A level/02 unitNo/25 postal/578578 price/10000
addSeller n/John Doe p/98765432 e/johnd@example.com type/Condominium street/Clementi Ave 2 level/02 unitNo/25 postal/578578 price/10000
Example 1
Case: Missing compulsory details.
Input:
addSeller
Output:
Invalid command format! addSeller: Adds a seller to EstateEase. Parameters: n/NAME p/PHONE e/EMAIL type/HOUSING_TYPE street/STREET blk/BLOCK level/LEVEL unitNo/UNIT NUMBER postal/POSTAL CODE price/PRICE Example: addSeller n/John Doe p/98765432 e/johnd@example.com type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/999999999
Example 2
Case: Duplicate seller (seller and buyer cannot be same name).
Input:
addSeller n/John Koe p/98765432 e/johnd@example.com type/Landed street/Clementi Ave 2 unitNo/25 postal/578578 price/10000
Output:
This person already exists in EstateEase
Example 3
Case: Duplicate house.
Input:
addSeller n/John Kokomelon p/98765432 e/johnd@example.com type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/999999999
Output:
This house already exists in EstateEase
view INDEX
Views the detail of a Person
in EstateEase. The index provided must be a positive number from 1 to the number of entries present.
Format: view INDEX
Note:
INDEX
.list
followed by view 2
views the details of the 2nd person in EstateEase.find Foy
(sample name) followed by view 1
views the details of the 1st person in the results of the find
command.Examples:
view 1
view 2
editSeller
Edits an existing Seller
in EstateEase.
Format: editSeller INDEX [n/NAME] [p/PHONE] [e/EMAIL]
Note:
INDEX
. The index refers to the index number shown in the displayed person list.INDEX
must be a positive integer 1, 2, 3, …, and should not exceed 2147483647.INDEX
must be pointing to a Seller
and not a Buyer
.NAME
value of the seller should not have a duplicate in EstateEase.Example 1
Case: Edit a seller's phone number and email.
Input:
editSeller 1 p/91234567 e/johndoe@example.com
Output:
Edited Person(Seller): Bavid Li; Phone= 91234567; Email= johndoe@example.com
Example 2
Case: Edit a seller name (no duplicate).
Input:
editSeller 1 n/David Newman
Output:
Edited Person(Seller): David Newman; Phone= 91234567; Email= johndoe@example.com
Example 1
Case: Edit a seller's name to an existing person in EstateEase.
Input:
editSeller 3 n/David Newman
Output:
This person already exists in EstateEase.
Example 2
Case: Edit a
buyer
while usingeditSeller
command.Input:
editSeller 2 n/John Doe
Output:
The person you are trying to edit is not a seller.
Example 3
Case: Edit a seller without any parameters.
Input:
editSeller 3
Output:
At least one field to edit must be provided.
Example 4
Case: Edit a seller with invalid
INDEX
.Input:
editSeller 9999999 n/Bob Freeman
Output:
The person index provided is invalid.
editBuyer
Edits an existing Buyer
in EstateEase.
Format: editBuyer INDEX [n/NAME] [p/PHONE] [e/EMAIL] [type/PREFERRED_HOUSING_TYPE] [budget/BUDGET]
Note:
editSeller
command, except the specified INDEX
must be pointing to a Buyer
and not a Seller
.BUDGET
value should not exceed $1 trillion.Examples:
Example 1
Case: Edit a buyer's phone number, email, preferred housing type, and budget.
Input:
editBuyer 1 p/91234567 e/johndoe@example.com type/Landed budget/15000000
Output:
Edited Person(Buyer): Alex Yeoh; Phone= 91234567; Email= johndoe@example.com; Preferred Housing Type= Landed; Budget= 15000000
Example 1
Case: Edit a buyer's budget to a non-positive number.
Input:
editBuyer 1 budget/-200000
Output:
Budget should be a positive number.
Example 2
Case: Edit a
seller
while usingeditBuyer
command.Input:
editBuyer 2 n/John Buyer
Output:
The person you are trying to edit is not a buyer..
Example 3
Case: Edit a buyer's preferred housing type that's not valid.
Input:
editBuyer 1 type/Bungalow
Output:
HousingType should only be Landed, Hdb or Condominium.
addHouse
Adds a house to a specific seller.
Format:
Add House (Hdb):addHouse n/NAME type/HOUSING_TYPE street/STREET blk/BLOCK level/LEVEL unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE
Add House (Landed): addHouse n/NAME type/HOUSING_TYPE street/STREET unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE
Add House (Condominium):addHouse n/NAME type/HOUSING_TYPE street/STREET [blk/BLOCK] level/LEVEL unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE
Tip: A Hdb must have blk and level in the command. A condominium must have level in the command. Condominiums without blocks can have block represented by "N/A", or by completely omitting the blk/ prefix. A landed house must NOT have blk or level.
Note: Even if the house type is different, if all other details (except Price) are the same, they are considered as the same house. Different Hdbs and Condominiums are allowed to have the same Postal Code. While landed houses are not supposed to have that functionality, such checks will only be introduced in future versions.
Example 1
Case: Add a Condominium that does not have a block
Input:
addHouse n/John Doe type/Condominium street/Clementi Ave 2 blk/N/A level/02 unitNo/25 postal/578578 price/10000
Output:
New house added!
Example 2
Case: Add a Condominium that has a block
Input:
addHouse n/John Doe type/Condominium street/Clementi Ave 2 level/02 unitNo/25 postal/578578 price/10000
Output:
New house added!
Remarks: Condominiums with no blocks are allowed to either have or exclude the blk/ aspect of the command. If included when the Condominium has no block, the value must be N/A.
Example 3
Case: Add a Landed
Input:
addHouse n/John Doe type/Landed street/Clementi Ave 2 unitNo/25 postal/578578 price/10000
Output:
New house added!
Remarks: Landed must not have blk or level as arguments.
Example 4
Case: Add a Hdb
Input:
addHouse n/John Doe type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/999999999
Output:
New house added!
Example 1
Case: Missing compulsory fields.
Input:
addHouse
Output:
Invalid command format! addHouse: Adds a house to a Seller. Indicate N/A for nonexistent fields. Parameters: n/NAME type/HOUSING_TYPE street/STREET blk/BLOCK level/LEVEL unitNo/UNIT NUMBER postal/POSTAL CODE price/PRICE Example: addHouse n/John Doe type/Condominium street/Clementi Ave 2 blk/N/A level/02 unitNo/25 postal/578578 price/99999
Example 2
Case: Duplicate categories with valid compulsory fields.
Input:
addHouse n/John Doe type/Condominium type/Hdb street/Clementi Ave 2 blk/N/A level/02 unitNo/25 postal/578578 price/99999
Output:
Multiple values specified for the following single-valued field(s): type/
matchBuyer
Shows a list of sellers and their houses that match the budget and preferred housing type of a specified buyer.
Format: matchBuyer FULL_NAME
Tip: Ensure you use the buyer's full name when entering the command.
Note:
Important:
Example 1
Case: Matching sellers to a buyer with the full name "Helix Doe".
Input:
matchBuyer Helix Doe
Output:
1 house(s) listed!
Example 1 will be presented in EstateEase as follows:
Example 1
Case: Buyer with the specified name not found.
Input:
matchBuyer Alex
Output:
The specified buyer was not found.
Example 2
Case: Specified name is a seller.
Input:
matchBuyer Alex Yeoh
Output:
The specified person is not a buyer.
deleteHouse
Deletes a house from a specific seller.
Format: deleteHouse n/NAME type/HOUSING_TYPE street/STREET [blk/BLOCK] [level/LEVEL] unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE
Tip: The exact House restrictions applied in addHouse apply here too.
Note: A seller with one house can have his house deleted. The seller would have no houses to his name then but would still exist.
Examples: Largely similar to addHouse commands, except the addHouse command word is now deleteHouse.
list
Shows a list of all persons in EstateEase.
Format: list
find
Finds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
hans
will match Hans
Hans Bo
will match Bo Hans
Han
will not match Hans
OR
search).
e.g. Hans Bo
will return Hans Gruber
, Bo Yang
Example 1
Case: Find people named John.
Input:
find John
Output:
3 persons listed!
Here's an example of how it looks like
delete
Deletes the specified person from EstateEase.
Format: delete INDEX
INDEX
.Examples:
list
followed by delete 2
deletes the 2nd person in EstateEase.find Betsy
followed by delete 1
deletes the 1st person in the results of the find
command.clear
Clears all entries from EstateEase.
Format: clear
exit
Exits the program.
Format: exit
EstateEase data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
EstateEase data are saved automatically as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.
Caution:
If your changes to the data file makes its format invalid, EstateEase will override the existing data file with an empty data file in the next successful command execution. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause EstateEase to behave in unexpected ways. Therefore, edit the data file only if you are confident that you can update it correctly.
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous EstateEase home folder.
Action | Format, Examples |
---|---|
Add Buyer | addBuyer n/NAME p/PHONE e/EMAIL budget/BUDGET type/PREFERRED_HOUSING_TYPE e.g., addBuyer n/James p/98765432 e/james@gmail.com budget/20000 type/Hdb |
Add Seller | addSeller n/NAME p/PHONE e/EMAIL type/HOUSING_TYPE street/STREET [blk/BLOCK] [level/LEVEL] unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE e.g., Add Seller with Hdb: addSeller n/John Doe p/98765432 e/johnd@example.com type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/999999999 Add Seller with Landed: addSeller n/John Koe p/98765432 e/johnd@example.com type/Landed street/Clementi Ave 2 unitNo/25 postal/578578 price/10000 Add Seller with Condominium: addSeller n/John Doe p/98765432 e/johnd@example.com type/Condominium street/Clementi Ave 2 level/02 unitNo/25 postal/578578 price/10000 Take note that the format of adding a Seller is the same as adding a House , but with additional field of phone and email . Please refer to Add House. |
View | view INDEX e.g., view 1 |
Add House | Add House (Hdb):addHouse n/NAME type/HOUSING_TYPE street/STREET blk/BLOCK level/LEVEL unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE Add House (Landed): addHouse n/NAME type/HOUSING_TYPE street/STREET unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE Add House (Condominium): addHouse n/NAME type/HOUSING_TYPE street/STREET [blk/BLOCK] level/LEVEL unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE e.g., Add House (Hdb): addHouse n/John Doe type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/10000 Add House (Landed): addHouse n/John Doe type/Landed street/Clementi Ave 2 unitNo/25 postal/578578 price/10000 Add House (Condominium): addHouse n/John Doe type/Condominium street/Clementi Ave 2 level/02 unitNo/25 postal/578578 price/10000 |
Delete House | deleteHouse n/NAME type/HOUSING_TYPE street/STREET [blk/BLOCK] [level/LEVEL] unitNo/UNIT_NUMBER postal/POSTAL_CODE price/HOUSE_PRICE e.g., Delete House (Hdb) deleteHouse n/John Doe type/Hdb street/Clementi Ave 2 blk/311 level/02 unitNo/25 postal/578578 price/10000 Delete House (Landed): deleteHouse n/John Doe type/Landed street/Clementi Ave 2 unitNo/25 postal/578578 price/10000 Delete House (Condominium): deleteHouse n/John Doe type/Condominium street/Clementi Ave 2 level/02 unitNo/25 postal/578578 price/10000 Take note that the format of deleting a House is the same as adding a House . Please refer to Add House. |
Match Buyer | matchBuyer FULL_NAME e.g., matchBuyer Alex Yeoh |
Edit Seller | editSeller INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] e.g., editSeller 1 n/James Lee e/jameslee@example.com |
Edit Buyer | editBuyer INDEX [n/NAME] [p/PHONE] [e/EMAIL] [type/PREFERRED_HOUSING_TYPE] [budget/BUDGET] e.g., editBuyer 1 p/88888888 e/buyer@example.com type/Landed budget/5000000 |
List | list |
Find | find KEYWORD [MORE_KEYWORDS] e.g., find James Jake |
Delete | delete INDEX e.g., delete 3 |
Clear | clear |
Exit | exit |
Help | help |
ID | Term | Definitions |
---|---|---|
1 | CLI | Abbreviation for Command Line Interface, a system that lets users operate the software through typed commands. Users input instructions and receive textual responses from the application. |
2 | GUI | Stands for Graphical User Interface, which enables users to interact with the application through visual elements like icons, buttons, and menus. |
3 | Mainstream OS | The common operating systems including Windows, Linux, and MacOS. |
4 | Java | A programming language required to run EstateEase. For installation guidelines or to check if Java is already installed on your device, refer to the FAQ section. |
5 | Index | Represents the position of a person within the displayed list. |
6 | Hdb | Hdb refers to Housing Development Board flats, which are public housing units in Singapore designed to be affordable and accessible to the general populace. |
7 | Condominium | A condominium is a type of private residence in a building or community complex with shared amenities such as pools, gyms, and security. |
8 | Landed | Landed property refers to residential real estate that includes both the house and the land on which it stands. |
9 | Buyer | An individual interested in purchasing a house. |
10 | Seller | An individual looking to sell a house, who may own anywhere from zero to multiple properties. |
11 | House | Refers to a property owned by a seller, defined by its price and type, which are used by EstateEase to match with a buyer's preferences. |
12 | JSON | Short for JavaScript Object Notation, a format used for storing and transmitting data. |
13 | Budget | Refers to the amount a buyer is willing to pay for a house. |
14 | Price | Refers to the amount a seller is willing to sell the house for. |
15 | Preferred Housing Type | The type of house a buyer is seeking. |
16 | Housing Type | The type of house being sold by the seller. |
17 | Person | A person can be classified as either a buyer or a seller. |