Schuyler Tay - Project Portfolio Page
Overview
TermiNUS is a CLI (command line interface) program for NUS students who wish to consolidate their NUS academic needs such as schedules, questions and notes for the modules that they are taking. With TermiNUS, it aims to aid students and improve their learning experiences while studying in NUS.
Summary of Contributions
- New Feature: Added the ability to parse user commands to execute the required actions
- What it does: Allows parsing of the user input so that the program knows what action to perform. The feature must also support multi-step commands and oneshot commands simutaneously.
- Justification: Being able to parse multi-step commands and oneshot commands allows for catering to advance users as well as new users. The key functionality is that regardless of multi-step or oneshot, the user should be able perform the intended action accurately so that they manage their academic material better.
- Highlights: The challenge in this implementation, is ensuring that a single command parser can handle multiple styles of parsing, while ensuring the same functionality. Other addition constraints was that a switch statement would not suffice for a dynamic parsing system as the arguments could always differ. With all of these in consideration, we implmemented the parsing system using a HashMap instead. This however, brought about certain limitations such as having a Common Command class and arguments could not be initalized in the constructor of the specific Command.
- New Feature: Added the ability to create, view, delete, and update modules.
- What it does: Allows the user to create, view, delete, and update modules.
- Justification: This feature provides the user with a way to categorizes all their academic material (Notes, Links, Questions) into different modules so that this helps them be more organized.
- Highlights: This features makes changes to the list of modules which are required to correctly access the academic material relating to that module. Careful consideration is required to ensure that any modifications to the list of modules must be kept in sync with the file system.
- New Feature: Added the ability to access each module’s workspace.
- What it does: Allows the user to access a specific module workspace, to perform any actions to that module’s academic material.
- Justification: This features enable the user to enter a specific module’s workspace so that they are able make the required changes without affecting any other module’s academic material.
- Highlights: The challenge with implementing this feature was in passing the module between the Command Parsers and Commands. The Command Parser has to active set the attribute to ensure that the Command it will be execute will know what is the current module’s workspace. This was difficult to pass around as the original implementation of the Command and Command Parser did not cater for this.
- New Feature: Added the ability to export notes as PDF.
- What it does: Allows the user to export the notes in a module’s workspace into a PDF format.
- Justification: This features provides users the capability to convert their existing notes to a PDF format so that can transfer their notes easily to other devices and view they in a collated manner.
- Highlights: This features performs checks on notes to see if their is at least a single note and use IText PDF to create PDF files containing all the notes within the existing module’s workspace.
-
Code Contributed: RepoSense Link.
- Documentation
- User Guide:
- Developer Guide:
- Team-based Tasks
- Beyond Project Team Tasks
- Reported bugs and offered suggestions for a team in PE-D: PE-D Issues
- Reviewed other teams’ User Guide and Developer Guide.