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
,course
andspecialisation
- Added an
About
section, giving an overview of how to start using the application and documented new features per version. - Provided documentation for
filter
command, specifying the various parameters that the command accepts, as well as providing detailed instructions on how to use thefilter
by course command with thetaken
parameter.
- Added documentation for the features
- Developer Guide
- Added documentation for the
Logic
component of the DG to further explain the classes used in the application, such asArgumentMultiMap
andCliSyntax
- 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 toCommandParser
which 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
FilterCommandParser
infers the type ofFilterCommand
to 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
filter
command 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