Chan Jian Hao - Project Portfolio Page
Overview
AniChan is an all-rounded desktop application meant to improve the workflow efficiency and time management of anime translators. It has also been optimized for fast typists, as such the user will interact with it through a command-line interface.
Summary of Contributions
- New Feature: Added the ability to create
User.- What it does: On first execution, prompts user for his name and gender to create
Userprofile. - Justification: This feature allows program to know user better so that program may greet user appropriately as part of good user experience we hope to provide.
- Highlights: Notably,
Useris a subclass ofHumanabstract class. Other classes such asCharacterandVoiceActorinheritsHumanclass as part of our OOP practice when coding AniChan which stores lots of anime data which comes with lots of voice actors and characters.Userclass contains many interesting methods meant for controllingWorkspacefeature of AniChan.
- What it does: On first execution, prompts user for his name and gender to create
- New Feature: Added the ability to create, list, switch, and delete
Workspace.- What it does: Allows the user to create, list, select, and delete
Workspace. - Justification: This feature enables the user to segregate his translation work. As
WatchlistandBookmarkare contained in individualWorkspaces. - Highlights:
Workspaceworks closely with core components of AniChan such asUser,Watchlist,Bookmarkand notably,Storage. To ensure secure and safe creation ofWorkspacewhen program exits, layers of string validation and sanitization ensures no unexpected behaviors when creatingWorkspaceindatafolder.
- What it does: Allows the user to create, list, select, and delete
- New Feature: Added customized exception class,
AniException.- What it does: Allows application to throw custom exceptions specific to AniChan.
- Justification: There needs to be a way to handle exception which are caused by AniChan-related operations.
- Highlights: Made a special exception package and class which extends Java default
Exceptionclass.
- New Feature: Added logging class
AniLogger.- What it does: Logs information during AniChan runtime to both console and file system
data/AniChan.logfile. - Justification: There needs to be a way to handle logging for all the classes in AniChan without duplicating Java
loggereverywhere. - Highlights: Implemented method for all classes to easily get logger for their own logging usage. Standardized application-wide AniChan logging settings and level for both console and file system. AniLogger is fully capable of handling add and removals of console and file handlers and manage logs creation and exceptions, if any.
- What it does: Logs information during AniChan runtime to both console and file system
- New Feature: Implemented Workspace delete feature for
Storage.- What it does: Deletes
Workspaceon the file system whenWorkspaceis deleted in AniChan. - Justification: When
Workspaceis deleted in AniChan, the leftover folder and files indatashould be deleted as well. - Highlights: Implemented a safe recursive delete approach for
Workspacedeletion, where it searches recursively for leftoverWatchlist/Bookmarkdata to delete first before deleting the folder. Exceptions and input validation built-in for deletion to prevent file system related issues to crash the program or cause unexpected results.
- What it does: Deletes
-
Code Contributed: RepoSense Link
- Documentation:
- README.md:
- User Guide:
- Developer Guide:
- Contributed to writeup on
Userarchitecture and diagram: #254. - Contributed to
Workspacerelated user stories and manual testing guide: #285. - Documented
Workspaceimplementation and its diagrams: #206. - Documented the section on ‘Documentation, Logging, Testing, and DevOps’: #195.
- Formatting & Grammar fixes and improvements: #254, #302, #310.
- Contributed to writeup on
- Team-based Tasks
- Created team organization and GitHub repository.
- Contributed to input sanitization and validation of the overall program.
- Refactored common code found in
MainandUi, and assisted to delete redundant imports and variables #152, #217, #256. - Setting up GitHub pages and Gradle.
- Maintaining the issue tracker.
- Setup of team’s Telegram & Discord channel for communication.
- Implemented additional CI checks for repository quality: #179.
- Assisted in team’s request for Java libraries: #43, #78, #111.
- Increased code coverage: #150, #221.
- Beyond Project Team Tasks
- Tools: