Leow Li Yong's Project Portfolio Page
Project: AutoM8
AutoM8 is a desktop app for an auto repair shop, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AutoM8 can get your auto repair shop management tasks done faster than traditional GUI apps.
Given below are my contributions to the project.
- New Feature: Added the IdGenerator class: #49
- Manages the auto generation of unique auto-incrementing IDs for the different entities in the application.
- Justification: Entities each are identified using a unique ID so it is crucial to ensure that IDs generated are unique.
- Consideration: Was a class with 100% static methods initially, but was changed to non-static after abstracting away data manipulation to the
Shop
class. Implmentation details can be found in the Developer Guide.
- New Feature: Added the ability to add entities to the Shop: #70
- New Feature: Sorting Entities: #92
- Entities can be sorted via a user specified parameter such as ID, name, email, date, etc.
- Justification: Sorting entities allows the user to view the entities in a more organized manner.
- Consideration: This was done via updating
SortedList
wrappers around the raw data with comparators.
- New Feature: Finding Entities: #108
- Entities can be found via user specified keywords. Entities matching the keywords will be displayed.
- Justification: This allows the user to view specific entities matching certain keywords.
- Consideration: This was achieved by having each class implement a
Findable
interface which facilitates checking for the presence of keywords in the entity. More details can be found in the Developer Guide.
- New Feature:
Shop
API: #150- Modified the
Shop
class to expose an API for data manipulation. - Justification: Commands were managing data relationships, calls to IdGenerator, and data manipulations directly. This was not ideal as it violated the Single Responsibility Principle. It was difficult to manage and almost impossible to debug as potential causes were spread over multiple classes and packages.
- Highlights: Shifted all the data manipulation logic to the
Shop
class. TheShop
class would automate all the data relationships and Id generation. This allowed the commands to focus on the user input and output, and would only have the responsibility of deciding whatShop
API to call. A large variety of known bugs were fixed after this refactoring and many undiscovered bugs were also fixed. - Consideration: Implementing the API required slowly considering all entity relationships and data manipulations. It was challenging to ensure that every API call had no logical errors and could only throw checked exceptions. However it was still significantly easier to manage and debug than the previous implementation. More implementation details can be found in the Developer Guide.
- Modified the
- Code contributed: RepoSense link
- Enhancements to existing features:
- Added
ParserUtil
functions to support parsing integers and other AutoM8 specific types. - Modified original AB3
list
command to work with all AutoM8 entities at the same time.
- Added
- Project management:
- Managed releases
v1.2
-v1.4
(3 releases) on GitHub
- Managed releases
- Documentation:
- User Guide:
- Added documentation for the features
addX
,find
andsortX
- Added documentation for the features
- Developer Guide:
- Added implementation details of the
add
feature. - Added implementation details of the
IdGenerator
class. - Added implementation details of the refactored
Shop
class. - Modified existing undo/redo documentation to reflect the new implementation.
- Added implementation details of the
- User Guide:
- Community:
- PRs reviewed (with non-trivial review comments): #93