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
MassDelete
command (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
MassBlacklist
command (Pull request: #66)- What it does: Allows users to either blacklist or unblacklist all contacts within a certain index range.
- Justification: Similar to the
MassDelete
command, this command makes it more convenient for the user to work with groups of contacts. - Highlights: The
MassBlacklist
command functions rather differently from theBlacklist
command (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 fromBlacklist
into theMassBlacklist
command.
- New Feature: Added
Remark
field 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
Tag
feature is inadequete in this regard due to its restrictive formatting (e.g. does not allow spaces). TheRemark
field provides a way for the user to note down these special considerations. - Highlights: Since the
Person
class in our project contains more fields than that of the original AddressBook Level 3 (Such asBlacklist
andModeOfContact
), 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
Sort
command (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
Sort
command requires a deep understanding of the entire codebase as new code will have to be introduced in theUniquePersonList
class, 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
Comparable
interface inName
andEmail
to facilitate the implementation ofPersonComparator
class to compare 2 persons (Pull request: #22)
- Implemented the
- Documentation:
- User Guide:
- Developer Guide:
- Community: