tp

Donovan Neo Jia Jie - Project Portfolio Page

Overview of Project

MangaTantou is a desktop Command Line Interface (CLI) application intended for editors of manga publishing companies. It aims to provide a one-stop-shop for all their author and manga management needs.

MangaTantou boasts three main features:

  1. Managing a team of authors by adding and deleting entries.
  2. Managing the manga written by these authors.
  3. Viewing the above details in a well-formatted table.

As a computing student, this course project has exposed me to programming in Java, as well as OOP principles. Furthermore, it has given me invaluable experience in the whole software development life cycle. From defining our target audience and problem statement, to generating user stories, and actually working together as a development team to build, test, and deploy a functioning Java application. This has given me the opportunity to apply and hone the theoretical knowledge learned from the textbook on a real-life product.

Summary of Contributions

Code Contribution

Refer to this link for my code contributions (functional and test code).

Enhancements Implemented

Argument Extraction with RegEx

I found that the previous method of parsing user inputs was very strict (it required users to enter flags in a fixed order e.g. sales -a -m -q -p), and it also had trouble when flags were included in the provided arguments, or there were redundant spaces in the input. In trying to improve this function, I had the idea of using RegEx. I came up with a pattern that can extract the relevant information after a specified flag. More details can be found in the codebase. Now, users have much more flexibility in entering commands and names.

Viewing Data with view

Initially, we had a simple view system in which every item in the list was printed with the item number prepended. This was adequate for v1.0, when we did not have deadline or sales information for manga. When we added those, we just appended the extra information to the end. This made the lists hard to read, especially if the entries had different lengths. As such, I looked into presenting the information in a tabular form. There are plenty of third-party libraries that can achieve this, but I wanted to try my hand at writing one from scratch. My system allows developers to customize the order of the columns easily, with user support for selective inclusion of columns via the use of flags. It is also easily reusable for other lists, not just those utilized in MangaTantou.

Data Storage

I used the Gson JSON de/serializer to store data to standardize the way the information is presented in the data file. It decouples the reading of data from our parser. Gson’s default settings initially did not work with the way our project stores data (due to circular references between Author and Manga). Additionally, the default deserializers did not provide the user with enough details about errors in the data file. Therefore, I implemented a custom class attribute exclusion strategy to ignore the reference causing issues. I also wrote custom deserializers for the different data classes used in MangaTantou so that error messages could be shown to the user, allowing them to pinpoint where they went wrong in manually editing their data file.

Contributions to the UG

Contributions to the DG

Contributions to Team-Based Tasks

Review/Mentoring Contributions

Here are some prominent PRs opened by my teammates I reviewed: #42, #53, #54, #63, #87, #98, and #109. I also answered teammates’ queries on my own PRs: #44.

Contributions Beyond the Project Team

I reviewed another teams’ DG (#8) and provided detailed suggestions for them to improve.

I also reported a bug in the course website (#11), and asked some theoretical questions on the course forum that would help others in their understanding (#33 and #41).