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/ and v/.
    • 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.
  • 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/ and ed/ for date, and sa/ and ea/ 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 with StartDate and EndDate, and StartAge and EndAge. 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 both sd/ and ed/ or sa/ and ea/ 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.
  • 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.
  • Enhancements implemented:
    • Added lower case allowance for Variant names in edit, add and find. (#108)
    • Abstracted predicates to check for whether each prefix applies to a Person, creating a FindPredicate from further abstracted PersonContainsAgePredicate, PersonContainsDatePredicate, PersonContainsNamePredicate, PersonContainsPostalPredicate, PersonContainsVariantsPredicate and RangeContainsPersonPredicate, and further abstracted ParserUtil to include PredicateUtil. (#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 and Range. (#264), (#267)
  • Documentation:
    • User Guide
      • Added documentation for the prefix find, find-by-date-range and find-by-age-range. (#151)
      • Added more pictures for each of the available DHT commands. (#171)
    • Developer Guide
      • Added UML sequence diagram forfind-by-prefix command and activity diagram for find-by-range command. (#104), (#280)
      • Added use cases for find. (#290)
  • Community: