Zhi Hong's Project Portfolio Page
Project: Foster Family
This is a desktop application for managing animal foster families. Our target audience are the foster managers of animal shelters who currently do not have a good logistical workflow to keep track of their fosterers. 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.
Given below are my contributions to the project.
-
Code contributed: RepoSense link
-
New Feature: Designed and created a new Profile UI, to be used for
view,editandaddcommands.- What it does: Displays all information regarding a Person, and allows the user to edit them.
- Checks user input, and does not accept invalid inputs.
- Checks the overall
Personobject based on all fields provided, and does not accept invalid combinations. - If there are errors, gives descriptive textual feedback as well as highlighting the problematic field(s).
- In editing, allows the user to either confirm their changes or cancel and revert them.
- Justification: A far more natural interface than long one-liners otherwise required of the
editandaddcommands. - Highlights:
- This involves a lot of JavaFX, and UI responsiveness in JavaFX is quite awkward.
- Design needed to be agreed upon in advance, since the UI is invoked by other commands written by teammates.
- Uses a simple Event Listener system, which is also used internally.
- Uses an Enum to refer to text fields of the Person. Rows in the UI are dynamically generated from these Enums, and focus can be requested of any specific field through a
setFocusmethod by passing in an enum value. - Dynamically handles any number of tags, and allows newlines for tags and notes.
- Pull requests: #89, #93
- What it does: Displays all information regarding a Person, and allows the user to edit them.
- Small modification: Added text notes to each
Person, integrated with Profile UI.- Bundled with Profile UI feature.
- Enhanced feature:
findcommand overhauled to include expressive search.- What it does: Allows users to write keywords joined by
&and/.- Parses parentheses correctly, and implicitly closes them if possible.
- Searches every field of each
Person. - Allows double-quotes
"for exact string match.
- Justification: Makes the
findcommand more practical. - Highlights:
- Includes an expression parser.
- Dynamically handles any fields and values reported by
Person, including tags. - Includes thorough testing with a lot of edge cases.
- Pull requests: #68, #83, #90
- What it does: Allows users to write keywords joined by
- Documentation:
- User Guide:
- Added documentation for the feature
list.
- Added documentation for the feature
- Developer Guide:
- Added user story for
listfeature. - Modified class diagram for
UIto include Profile UI. - Added implementation details of the
viewfeature (Profile UI). - Added class diagram for
viewfeature. - Added sequence diagram for
viewfeature. - Added implementation details of the
listfeature. - Added class diagram for
listfeature. - Added sequence diagram for
listfeature. - Added sequence diagram for lower level details of
listfeature. - Added object diagram for example of
listfeature. - Added sequence diagram for example of
listfeature.
- Added user story for
- Pull requests: #28, #83, #140, #151
- User Guide: