Teo Chuan Kai - Project Portfolio Page
Overview
Libmgr is a desktop app for managing the inventory of libraries, optimised for use via a Command Line Interface (CLI). Designed for fast typists, it can help to augment the day-to-day tasks of a librarian and can help them to get tasks done in an efficient manner.
Summary of Contributions
Code Contributed
Click to view code contribution on RepoSense
Enhancements Implemented
-
Added subclasses that extend the main
Item
class by silin, which include theAudio
,Book
,Magazine
,Video
andMiscellaneous
classes. (#62) -
Added the
TextUI
class, handling inputs from the user and displaying messages from the application. (#15) -
Extended on silin’s
AddCommand
and all child classes (AddAudioCommand
,AddBookCommand
,AddMagazineCommand
,AddMiscellaneousCommand
,AddVideoCommand
) (#87). It allows users to creating new items of different categories (audio, book, magazine, video, miscellaneous) and insert them into the catalogue. -
Implemented
RemoveCommand
class (#31). Provides method to remove a specific item from the catalogue. -
Added
UnreserveCommand
(#92). Provides functionality to make available an item that has been previously reserved by some user, in the case where a previous reservation has been invalidated or cancelled, it allows the referenced item to be loaned out by other users. -
Implemented
Parser
class to handle user commands (#174). Identifies the specific command issued by the user and Separates the attributes or flags and the related values supplied by the user. It also handles invalid entries such as empty or duplicate attributes. -
Implemented
Storage
andJsonFactory
classes (#176). Thestorage
class acts as an interface thatlibmgr
uses to perform reading and writing operations to and fromdata.json
. Within this process, theJsonFactory
is used to serialize and deserialize the contents of the catalogue.
Contributions to the User Guide
- Created base format of the Markdown document including different section templates, table of contents and FAQ. (#84).
- Added usage for
rm
,res
andunres
commands. (#104). - Added command usage summary table (#171).
Contributions to the Developer Guide
- Created base format of the Markdown document including different sections and table of contents. (#191).
- Designed high-level architecture diagram for the program (#191).
- Added the following diagrams (#191).
- Application launch and overall component interaction sequence diagrams and accompanying descriptions.
- Data, storage and UI components
- Sequence and object diagram for usage of add command
add b t/1984 i/91 a/George Orwell
- Sequence diagram for operations involved when
data.json
is read from or written to.
Contributions to team-based-tasks
- Implemented skeleton code for the team project which included
ui
,commands
anddata
packages. - Helped in maintaining the issue tracker.
- Managed
v1.0
andv2.0
releases. - Incorporated
Jackson Databind
andJackson Datatype JSR310
to simplify serialization and deserialization of items within the catalogue. - Added assertions and logging.