Aeron Toh's Project Portfolio Page
Project: DengueHotspotTracker (DHT)
DengueHotspotTracker (DHT) is a desktop app for managing dengue cases. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 15 kLoC.
Given below are my contributions to the project.
- New Feature: Added the ability to use prefixes to find people in the dengue case list.
- What it does: allows the user to use prefixes along with the find command, the prefixes are optional but there
should at least be one of the following prefix
n/
,a/
,d/
,p/
andv/
. - Justification: This feature improves the product significantly because an NEA staff can search for matching cases in the case list beyond just the name and postal code.
- Highlights: This enhancement affects existing commands. It required an in-depth analysis of design alternatives especially on how to check for each prefix as they are optional. The implementation required some workaround with the postal code as we needed to keep the original functionality of find, which allowed for substrings of the original postal, but our check for validity for all postal codes allowed only valid 6 digits postal codes.
- What it does: allows the user to use prefixes along with the find command, the prefixes are optional but there
should at least be one of the following prefix
- New Feature: Added the ability to find by date and age ranges to find people in the dengue case list.
- What it does: Allows the user to find cases by a specified date and age ranges using the prefixes
sd/
anded/
for date, andsa/
andea/
for age. - Justification: This feature improves the product significantly because an NEA staff may realistically require to search for cases that happened in a specific date range and age range to use for data analytics.
- Highlights: This enhancement affects existing commands. It required a team member (Valerie) and I to decide on a
design option to accommodate for date ranges as she also needed it for her delete command. The implementation required
some abstraction by making a new
Range
class along withStartDate
andEndDate
, andStartAge
andEndAge
. One difficulty faced was on checking the validity of the dates, such as if the start date came after end date. Another difficulty faced was on deciding on whether to make it mandatory for bothsd/
anded/
orsa/
andea/
to be present. We ended up deciding only requiring one of the prefix for the function to operate, by taking all dates after the given start date/age to be filtered, or all dates before the given end date/age to be filtered.
- What it does: Allows the user to find cases by a specified date and age ranges using the prefixes
-
Code contributed: RepoSense link
- Project Management:
- Managed pull request reviews for
v1.3
-v1.4
(2 milestones) on GitHub. - Handled bug/smoke testing for
v1.3
-v1.4
. - Facilitated task assignment to be completed before milestone deadlines.
- Managed pull request reviews for
- Enhancements implemented:
- Added lower case allowance for
Variant
names inedit
,add
andfind
. (#108) - Abstracted predicates to check for whether each prefix applies to a Person, creating a
FindPredicate
from further abstractedPersonContainsAgePredicate
,PersonContainsDatePredicate
,PersonContainsNamePredicate
,PersonContainsPostalPredicate
,PersonContainsVariantsPredicate
andRangeContainsPersonPredicate
, and further abstractedParserUtil
to includePredicateUtil
. (#120) - Edited the help window to contain more than a link to the User Guide. (#66)
- Edited the help window’s UI to be more appealing and appropriate to our application and change application icon. (#156)
- Edited
find
to match all inputs given instead of any matching to better match the functionality of our application. (#120) - Edited
find
to allow for spaces in the name. (#128) - Added test cases for
FindCommand
,FindCommandParser
,SubPostal
,FindPredicate
,PersonContainsAgePredicate
,PersonContainsDatePredicate
,PersonContainsNamePredicate
,PersonContainsPostalPredicate
,PersonContainsVariantsPredicate
,RangeContainsPersonPredicate
andRange
. (#264), (#267)
- Added lower case allowance for
- Documentation:
- User Guide
- Developer Guide
- Community: