Lee Joon Jie's Project Portfolio Page
Project: CANdidates
CANdidates is a powerful contact management desktop App optimised for job recruiters to manage job applicants and job listings. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 25 kLoC.
Given below are my contributions to the project
-
Code contributed: RepoSense link
- New Feature: URL Link Information field
- What it is for: A field used to represent a URL link to a candidate’s profile such as his/her LinkedIn or Github page. It is an optional input field for candidates since not all candidates have an online profile page. Internally, it is represented as a UrlLink object.
- Justification: This Information field allows job recruiters to have easy access to the URL link to profiles and resumes of candidates.
- Highlight: This field was the first information field that was optional for candidates and also have no default value. It was a challenge to implement as I had to consider how to make it reflect no value while adhering to good coding practices. I wanted to avoid using null values for this as using nulls can be “overwhelmingly likely to cause errors” as said by Brian Goetz, Java’s language architect. Hence, I decided to utilise Java’s Optional class to contain UrlLink in an Optional object for safer results.
- Hightlight: It was also a challenge to validate the format of URL links as there are numerous possibilities. I decided to use a third party library, Apache Commons Validator, to validate the format for this.
- New Feature: Blacklist Information field
- What it is for: A field used to represent the blacklist status of candidates, i.e whether a candidate has been blacklisted.
- Justification: This Information field allows job recruiters to keep track of candidates who have been blacklisted and have bad records.
This field is also useful when used as input for the Sort and Find features.
- Project management:
- In charge of looking after code quality and ensuring adherence to coding standards such as SLAP and KISS principles
- Regularly reviewed pull requests to ensure good code quality and coding standards
- Manage release of Candidates.jar v1.4
- Enhancements to existing features:
- Modified AddressBookParser class of AB3 to be able to parse new commands of CANdidates (Pull requests #86)
- Implemented editing of candidates and jobs:
add can
andadd job
(Pull requests #86, #90) - Implemented deleting of candidates and jobs:
delete can
anddelete job
(Pull requests #86, #90) - Implemented clearing of candidates and jobs:
clear can
andclear job
(Pull requests #86, #90) - Added command summary table to Help Window (Pull requests #260)
- Created several test classes used to test new Information fields and new commands, improved code coverage by %7.80 in one PR (Example Pull requests #97, #119, #121)
- Documentation:
- User Guide:
- Wrote documentation for Editing a candidate:
edit can
and Editing a job:edit job
(Pull requests #160) - Wrote documentation for Deleting a candidate:
delete can
and Deleting a job:delete job
(Pull requests #160) - Wrote documentation for Clearing all candidate entries:
clear can
and Clearing all job entries:clear job
(Pull requests #160) - Wrote documentation for Detecting duplicate entries (Pull requests #228)
- Wrote Section 2.1 Understanding this Document (Pull requests #333)
- Wrote some portions of the Introduction, Preface, FAQ, Command Summary and Glossary (Example Pull Requests #70, #298, #304, #333)
- Wrote documentation for Editing a candidate:
- Developer Guide:
- Updated the Design of the Model component including the UML diagram along with team mate Amelia Tan (Pull requests #139)
- Wrote documentation for implementation of Edit feature including sequence diagram (Pull requests #133)
- Updated Product Scope with Target user profile and Value proposition (Pull requests #226)
- Updated Instructions for Manual Testing with tests for Adding a candidate, Editing a candidate, Detecting duplicate candidates, Deleting a candidate and Clearing all entries (Pull requests #276)
- User Guide:
- Community:
- Tools:
- Integrated a third party library (Apache Commons Validator) to the project used to check the validity of the format of URL links in the UrlLink class (#119)