Anjali Agarwal's Project Portfolio Page
Project: CLInkedIn
CLInkedIn is a desktop address book application made for Recruiting and Hiring Managers. The user interacts with it using a CLI, and it has a GUI created with JavaFX.
Given below are my contributions to the project.
- New Feature: Create/Edit/Delete TagTypes
- What it does?
- CLInkedIn provides the user with 3 basic tag types: Skills, Degree, and Job Type. But if a user wish to add tags of other types they can create their own custom tag types.
- So using this feature a user can:
- Create a new tag type and provide a custom prefix for it. Example:
createTagType Grade gpa, where gpa is the prefix for the Grade tag type. - Edit an existing tag type. Example:
editTagType Grade-Marks gpa-m, this edits the existing Grade tag type to Marks and its prefix from gpa to m. - Delete an existing tag type. Example:
deleteTagType Skills, now Skills tag type will no longer be available for use.
- Create a new tag type and provide a custom prefix for it. Example:
- Implementation specifications:
- In order to keep track of the tag types available to the user and their respective prefix a static field
prefixMapofMapreference data type is created in theUniqueTagTypeMapclass. TheprefixMapmaps eachPrefixfor a tag type to its respectiveTagType. Moreover, to initially provide the user with 3 basic tag types another static fieldinitialTagTypeMapofMapreference data type was created. So when a user runs the application for the first time theprefixMapis initialised with thisinitialTagTypeMap. Furthermore, to store and retrieve the available tag types from the storage a static variableprefixMapis added to the address book that shares its reference with theprefixMapin theUniqueTagTypeMapand theJsonSerializableAddressBookis also updated for the same.
- In order to keep track of the tag types available to the user and their respective prefix a static field
- What it does?
- New Feature: Add/Delete Links
- What it does?
- A user can now also add/edit/delete links to various social media profiles/other websites to a candidate and can view the webpage by clicking on the icon of the relevant link for a candidate.
- So using this feature a user can:
- Add 1 or more links to a candidate. Example:
addLink 1 l/https://instagram.com/username l/https://github.com/usernameadds the links to person at index 1. - Edit existing links by replacing all existing links with new links. Example:
edit 2 l/https://telegram.com. - Delete all links of a candidate. Example:
deleteLink 2deletes all links of person at index 2.
- Add 1 or more links to a candidate. Example:
- Implementation specifications:
- The
Personclass has a field that stores aSetof links for the candidate. - The parser converts the input for links from String to a valid URL using java library for URL and creates a new instance of
Linkclass for each URL. Then theLinkclass generates the name of the platform if it is recognised by CLInkedIn, or else as general so that it can display the platform specific icon for the link in the GUI. - Furthermore, to store and retrieve the links from the storage, a
JsonAdaptedLinkclass is created that stores the links in String format and while reloading the application converts the String to the required URL type.
- The
- What it does?
- Enhancements to existing features:
- Extended the
addandeditcommand to support the newly addedLinkfeature.
- Extended the
-
Code contributed: RepoSense link
- Project management:
- Contributions beyond the project team:
- Documentation:
- User Guide:
- Added documentation for the different kinds of
tag typeandlinkcommands. - Updated documentation for
noteandratecommands, GUI snippets, and command summary.
- Added documentation for the different kinds of
- Developer Guide:
- Added details for the Target User Profile, Value Proposition, User Stories, and Use Cases.
- Added implementation details for the
Tag Type&Linkfeature. - Added
CreateTagTypeSequenceDiagram&AddLinkSequenceDiagramUML diagrams. - Updated
StorageClassDiagram&ModelClassDiagramUML Diagrams.
- User Guide: