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
User
profile. - 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,
User
is a subclass ofHuman
abstract class. Other classes such asCharacter
andVoiceActor
inheritsHuman
class as part of our OOP practice when coding AniChan which stores lots of anime data which comes with lots of voice actors and characters.User
class contains many interesting methods meant for controllingWorkspace
feature 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
Watchlist
andBookmark
are contained in individualWorkspaces
. - Highlights:
Workspace
works closely with core components of AniChan such asUser
,Watchlist
,Bookmark
and notably,Storage
. To ensure secure and safe creation ofWorkspace
when program exits, layers of string validation and sanitization ensures no unexpected behaviors when creatingWorkspace
indata
folder.
- 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
Exception
class.
- New Feature: Added logging class
AniLogger
.- What it does: Logs information during AniChan runtime to both console and file system
data/AniChan.log
file. - Justification: There needs to be a way to handle logging for all the classes in AniChan without duplicating Java
logger
everywhere. - 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
Workspace
on the file system whenWorkspace
is deleted in AniChan. - Justification: When
Workspace
is deleted in AniChan, the leftover folder and files indata
should be deleted as well. - Highlights: Implemented a safe recursive delete approach for
Workspace
deletion, where it searches recursively for leftoverWatchlist
/Bookmark
data 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
User
architecture and diagram: #254. - Contributed to
Workspace
related user stories and manual testing guide: #285. - Documented
Workspace
implementation 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
Main
andUi
, 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: