Skip to the content.

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

  1. Added subclasses that extend the main Item class by silin, which include the Audio, Book, Magazine, Video and Miscellaneous classes. (#62)

  2. Added the TextUI class, handling inputs from the user and displaying messages from the application. (#15)

  3. 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.

  4. Implemented RemoveCommand class (#31). Provides method to remove a specific item from the catalogue.

  5. 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.

  6. 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.

  7. Implemented Storage and JsonFactory classes (#176). The storage class acts as an interface that libmgr uses to perform reading and writing operations to and from data.json. Within this process, the JsonFactory is used to serialize and deserialize the contents of the catalogue.

Contributions to the User Guide

  1. Created base format of the Markdown document including different section templates, table of contents and FAQ. (#84).
  2. Added usage for rm, res and unres commands. (#104).
  3. Added command usage summary table (#171).

Contributions to the Developer Guide

  1. Created base format of the Markdown document including different sections and table of contents. (#191).
  2. Designed high-level architecture diagram for the program (#191).
  3. 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

  1. Implemented skeleton code for the team project which included ui, commands and data packages.
  2. Helped in maintaining the issue tracker.
  3. Managed v1.0 and v2.0 releases.
  4. Incorporated Jackson Databind and Jackson Datatype JSR310 to simplify serialization and deserialization of items within the catalogue.
  5. Added assertions and logging.

Review/mentoring contributions