Pan JingBin's Project Portfolio Page
Project: SpamEZ
SpamEZ is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). It helps users to classify contacts based on their details in order to facilitate effective and efficient information dissemination to a large audience.
Given below are my contributions to the project.
- New Feature: Added
MassDeletecommand (Pull request: #50)- What it does: Allows users to delete all contacts within a certain index range.
- Justification: This command allows the user to delete large sections of the contact list without having to delete each contact one-by-one. This significantly increases convenience when the user has a large number of contacts.
- Highlights: The input format uses the hyphen symbol (-) to separate between the start index and the end index. Since the address book is not able to parse the hyphen symbol by default, entirely new methods will need to be written.
- New Feature: Added
MassBlacklistcommand (Pull request: #66)- What it does: Allows users to either blacklist or unblacklist all contacts within a certain index range.
- Justification: Similar to the
MassDeletecommand, this command makes it more convenient for the user to work with groups of contacts. - Highlights: The
MassBlacklistcommand functions rather differently from theBlacklistcommand (which only blacklist one contact at a time) since that command “toggles” the blacklist status instead of setting the status to blacklist or unblacklist. Thus significant modifications need to be made to adapt the code fromBlacklistinto theMassBlacklistcommand.
- New Feature: Added
Remarkfield toPerson(Pull request: #26)- What it does: Allows users to assign an optional remark to each contact.
- Justification: Many students will have special considerations. For example, some students
may be suspended or on leave of absence. The
Tagfeature is inadequete in this regard due to its restrictive formatting (e.g. does not allow spaces). TheRemarkfield provides a way for the user to note down these special considerations. - Highlights: Since the
Personclass in our project contains more fields than that of the original AddressBook Level 3 (Such asBlacklistandModeOfContact), significant modifications have to be made to the tutorial implementation ofRemark. Frequent communication between team members are also needed to ensure that the different fields work properly when integrated, especially when the app is reading from a JSON file.
- New Feature: Added
Sortcommand (Pull requests: #22, #47)- What it does: Allows users to sort the contact list by name in alphabetical order.
- Justification: In NUS, many administrative procedures are performed based on alphabetical order (such as the seating plan for examinations). This command makes it more convenient for the user to perform such procedures.
- Highlights: Implementing the
Sortcommand requires a deep understanding of the entire codebase as new code will have to be introduced in theUniquePersonListclass, which is at the lowest level of abstraction.
-
Code contributed: RepoSense Link
- Project management:
- Assisted in keeping track of deadlines and deliverables.
- Enhancements to existing features:
- Implemented the
Comparableinterface inNameandEmailto facilitate the implementation ofPersonComparatorclass to compare 2 persons (Pull request: #22)
- Implemented the
- Documentation:
- User Guide:
- Developer Guide:
- Community: