Eola-Z's Project Portfolio Page
Project: NetworkBook
NetworkBook is a desktop address book application that School of Computing students can use to track and network with peers. The user interacts with it using a CLI, and has a GUI created with JavaFX. It is written in Java, and has about 20 kLoC.
Here are my contributions to the project.
- New Features:
- Added checks for duplicate contact names. The application ensures that multiple contacts with the same name cannot be created.
- Added specialisations and courses to contact details. Courses, in particular, have start and end dates to indicate when a contact has started/finished taking a specific course. These optional fields also enable the user to further refine their search.
- Added filter commands for courses, specialisations, graduation year, and tags. Each filter command is parsed through a global parser which then disseminates into specific parsers. Each filter also has its own set of predicates to filter against each person.
- Enhancements:
- Improve command result messages to give better feed back to the user. So now, users can better understand that they’re formatting the command incorrectly, or they’ve left a required field blank, and so on.
- Code contributed: tP Dashboard Link
- Bug fixes: Conducted bug fixes for:
- Json file storage not properly storing course dates
- Correcting behavior of several commands to match UG specification
- Fix a runtime error caused by
ArgumentMultiMap
- Documentation:
- User Guide:
- Added documentation for the features
remove duplicates,courseandspecialisation - Added an
Aboutsection, giving an overview of how to start using the application and documented new features per version. - Provided documentation for
filtercommand, specifying the various parameters that the command accepts, as well as providing detailed instructions on how to use thefilterby course command with thetakenparameter.
- Added documentation for the features
- Developer Guide
- Added documentation for the
Logiccomponent of the DG to further explain the classes used in the application, such asArgumentMultiMapandCliSyntax - Designed UML Diagrams to demonstrate the logical flow of command parser and the internal workings of the filter command parser
- An Activity Diagram is used to illustrate the inner workings of
CommandParser. An input string is passed toCommandParserwhich deciphers which parser the string should be passed onto to generate a specific class ofCommand, based on the identifying prefix of the command. If the prefix of the input string doesn’t exist, throw an error. - A sequence diagram is used to demonstrate how
FilterCommandParserinfers the type ofFilterCommandto generate.
- An Activity Diagram is used to illustrate the inner workings of
- Added documentation for the
- User Guide:
- Team-based tasks:
- Community tasks:
Here are some extracts from my contributions to the user guide:
- Description of
specialisation:-
You can add a specialisation to an existing contact.
A new specialisation will be added to the contact’s list of specialisations, and no new contact will be created. Specialisations are displayed in the order they are added. - Format:
add /spec [specialisation] /index [index]
-
- Description of
filter:-
You can use the
filtercommand to filter your list of contacts, temporarily hiding contacts that don’t contain certain keywords for easy viewing. If the list is currently sorted (usingsort, the filtered list will be sorted. - Format:
filter /by [field] /with [term] /taken true/false
-
- UI mockups:
- Created the UI mockups in the user guide to emulate
the application’s behavior in
1.1.
- Created the UI mockups in the user guide to emulate
the application’s behavior in