Wei Jie's Project Portfolio Page
Project: Insurance4Insurance (I4I)
Insurance4Insurance (I4I) is a desktop app for insurance agents to manage clients.
It is optimized for use via a CLI, while still having the benefits of a GUI.
It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project.
- New Feature: Added the ability to archive clients.
- What it does: The feature allows the insurance agent to add active clients into the archive. The opposite can be done as well; archived clients can be made active again. To support the archiving feature, insurance agents can also view the archive, as well as to switch back to view the active clients.
- Justification: This feature improves the product significantly because an insurance agent can add clients which are not currently relevant to the insurance agent into the archive. The presence of a separate view of the archive prevents the insurance agent from getting distracted by archived clients. This is different from deleting a client, as it handles for the case when the archived client turning active again in future.
- Highlights and Challenges:
- This enhancement affects existing commands (such as
ListCommand
andAddCommand
). For example, theListCommand
was edited as its behavior would be different in the archive mode and active mode. A new commandlist r/
was added to allow the insurance agent to view the archive. The originallist
command was also edited to show active clients only instead of all available clients. - This enhancement affects commands to be added in the future.
Future considerations of
FindCommand
was also discussed and potentially resolved in the Developer Guide here, as bothFindCommand
andArchiveCommand
useJava
’sPredicate
s, which may be a potential source of conflict. - Updating the UI when the insurance agent switches between the archive mode and active mode was one of the more challenging aspects of the feature.
This required the knowledge of the Observer Design Pattern, where the UI listens to changes in the archive/active mode.
The UI aspect of this feature is very different from the usual tasks of adding commands and parsers; much research was done to find the right class (such as
BooleanProperty
) and reading documentation to find the right method to use. - This enhancement required an in-depth analysis of design alternatives and weighing their costs and benefits.
An initial detailed proposal was suggested to save the archive in a separate
.json
file, using appropriate additional classes and methods. However, this would be very time-consuming as care needs to be taken to ensure that the implementation of the reading and saving of the 2 different storages, and updating of the models are correct. Given the tight timeline and limitations of a 3-person team, the current implementation of storing the active and archived clients in the same file was decided instead. More details of the analysis can be found in the Developer Guide here. - The feature is complete, as both archiving and unarchiving (the reverse) are implemented, in addition to viewing the archive.
- This enhancement affects existing commands (such as
-
Code contributed: RepoSense link
- Enhancements to existing features:
- Documentation:
- User Guide:
- Developer Guide:
- Contributions to team-based tasks:
- Community: