Project: PetCode

  • New Feature: Extended the add person command to three categories: add buyer, deliverer command and supplier command.
    • What it does: allows the user to add persons according to their roles.
    • Justification: This feature is the core feature of this app since all other features are based on it. The user cannot do further manipulation of data without adding it.
    • Highlights: This enhancement defines the paradigm of operations on contacts. That is, every person category has its own command word extension for every command, such as add-s and delete-b. It guides subsequent implementations of other commands.
  • New Feature: Added the add order command and add pet command.
    • What it does: allows the user to add an order to a buyer and add a pet to a supplier. Even more convenient, the user can choose to add as many orders as possible when adding a buyer, or add as many pets as possible when adding a supplier.
    • Justification: This helps the user organise his/her business by keeping track of orders placed and pets available for sale.
    • Highlights: There are a tremendous number of prefixes and attributes to handle, which was not easy.
  • New Feature: Added the match command.
    • What it does: allow user to find out which pet for sale is the best fit for an order placed by a buyer.
    • Justification: To maximise utility and profit, the user needs to find out the most suitable pet to sell to a buyer according to the buyer’s demand.
    • Highlights: The algorithm is a score evaluation algorithm that involves some complex calculations. The weight of each field is carefully chosen.
  • Functionality: Implemented many parser utility methods.
    • What it does: provides convenient utility methods to parse strings to other objects and validate data by a variety of rules.
    • Justification: Many commands rely on and make use of these methods for convenience, such as the add commands, the edit commands, the find commands and the filter commands.
    • Highlights: There are many constraints to consider. For example, some data cannot be negative, some can only be alphanumeric, and some cannot be blank. Multiplicity should be well considered too.
  • Functionality: Wrote data models.
    • What it does: these data models, such as Pet, Age, UniqueOrderList, and DateOfBirth abstract real-world objects and provide computational paradigms to mimic their interactions.
    • Justification: Without these data models, it would be extremely troublesome to manipulate data.
    • Highlights: The SOLID principles and OOP were employed thoroughly.
  • Functionality: Added the unique ID system.
  • Functionality: Discovered a variety of bugs and fixed them. For examples, #308 , #304 , #299 , #296
  • Code contributed: RepoSense link
  • Project management:
    • Managed releases v1.2 - v1.3(trial) (2 releases) on GitHub.
    • Assigned teammates to different issues and kept track of their progress.
    • Maintained and updated the official and unofficial meeting minutes after every meeting.
    • Managed milestones, changed their due dates, and closed them to wrap-up.
    • Did final submission of the JAR file, the UG, the DG, and the PPP.
  • Enhancements to existing features:
    • Let the GUI window fit different screen sizes (Pull requests #296)
    • Deleted useless classes like AddCommandParser and decoupled some classes for higher robustness.
  • Documentation:
    • User Guide:
      • Adding a buyer, Adding a deliverer, Adding a supplier, Adding a pet to a supplier, Adding an order to a buyer, Prefix Summary, FAQs, Other miscellaneous parts and proofreading
    • Developer Guide:
      • Target user profile, Value proposition, User stories, Use cases, Match command implementation, Unique ID implementation, Other miscellaneous parts and proofreading
  • Community:
    • Created the team’s organization and team repo
    • Managed issues and allocated tasks to members
    • Set up CodeCov repo
    • PRs reviewed (with non-trivial review comments): #145 , #174
    • Contributed to forum discussions (examples: #153 , #73)
    • Reported bugs and suggestions for other teams in the class ( examples: #183 , #187 , #176 , #172)
  • Tools:
    • Used JavaFX to develop the UI.