Tan Jun Wei's Project Portfolio Page
Project: PocketEstate
PocketEstate enables easy organisation of mass clientele property information through sorting of information by price, location and housing type, that may otherwise be difficult to manage.
Given below are my contributions to the project:
Code contributed: RepoSense link
New Features & Enhancements
- New Feature: Added new models
Property
andAppointment
, and all their attributes.- What it does: Each
Property
models a property listing, storing several attributes including the address, postal code, deadline to sell and client information of the property. EachAppointment
models a scheduled meeting, storing several attributes including meeting date and time. - Justification: The core functionality of our application is heavily reliant on both of these models, as our application is about organizing both property and appointment data.
- Highlights: Each
Property
may contain several optional attributes, such as remarks, tags and client’s information. Each attribute also has nicely formatted output to be shown to the user in the GUI.
- What it does: Each
- Enhancement: Implemented parsing support for all attributes of
Property
andAppointment
.- What it does: Performs strict input validation on user input arguments for each of the attributes of both
Property
andAppointment
. Ensure that user input for each field is correctly validated. Upon invalid inputs, descriptive error messages are shown to user. - Justification: The creation and storage of every
Property
andAppointment
is heavily dependent on the correct parsing of user input. Without ensuring correct parsing of user input commands, the application will not be able to store the data of the user accurately. - Highlights: Strict but yet flexible regex validation on user input for client’s asking price, allowing for optional dollar sign and optional commas separating the numbers for greater ease of inputting large prices. Strict validation is also performed on user input date and time arguments, with error messages tailored to incorrect input format and invalid dates and times. The implementation was challenging as it required knowledge of regular expressions to construct all the validation regex.
- What it does: Performs strict input validation on user input arguments for each of the attributes of both
- Enhancement: Added the ability to add properties and appointments through the two different
add
commands.- What it does: Allows the user to add a property or appointment to the application.
- Justification: These basic core commands are required for users to add new information to the application.
- Highlights: Provides greater convenience for fast typists by allowing for a range of attributes (both mandatory and optional) to be entered in one shot.
- Additional Enhancements:
- Added check to prevent addition of property with passed deadline and appointment with passed meeting date and time
- Removed all traces of original addressbook that were not needed (#133)
- Added icons to application GUI for easier differentiation between property types
- Added application icon
- Wrote additional tests (#299, #62, #66)
Project management
- Managed releases
v1.2
,v1.2.1
,v1.3
,v1.3.1
,v1.4
(5 releases) on GitHub
Documentation
- User Guide:
- Developer Guide:
- Added implementation details of the
Property
component. (#182, #215, #219) - Added implementation details of the
Appointment
component. (#182) - Updated Non-Functional Requirements section (#28)
- Updated Architecture sequence diagram, Ui class diagram, Logic class diagram, Model class diagram (#142, #151, #156, #182)
- Formatted table of contents with numbering for each section (#323)
- Added implementation details of the
Community
- PRs reviewed (with non-trivial review comments): (#132, #202, #191, #195, #84)
- Initiated forum discussions tagged with
must-see
labels (examples: #224, #257, #276) - Provided tips through forum discussions (examples: Moving tags to different commits, Enabling soft wraps in IntelliJ)
- Provided help through forum discussions (examples: #5, #30, #53)
- Fixed a bug in the original AB3 Logic class diagram (issue: #257)