MINDEF Duty Planner is a desktop application used to help military units in the Singapore Armed Forces organise and plan monthly duties for their servicemen. It has various features and functions for administrator (i.e. commander) as well as the duty personnel (i.e. servicemen). The user interacts with the application using a Command Line Interface (CLI) with a Graphic User Interface (GUI) created with JavaFX. It is written in Java, and has about 10kLoC.
The Duty Planner is modified and upgraded from SE-EDU Address Book 4.
-
Major enhancement: Creation of the duty package module
-
What it does: The duty package consists of classes (i.e. Duty, DutyMonth, DutySettings, DutyStorage) responsible for setting up the duties of a month and assigning them to persons, as well as contains vital functions needed for the duty features to be implemented.
-
Duty
: A class that characterizes the attributes of a duty including the exact date, points awarded, manpower needed and a list of person eventually being assigned to that duty. -
DutyMonth
: Represents a month in the calendar and is the main driver class behind the scheduling of duties. It instantiates all duties and assigns each duty to persons. Stores vital information such as the list of scheduled duties and the blocked dates of each person. -
DutySettings
: Contains information about the manpower needed and points assigned to duties based the day of the week. Enable modification to the the manpower needed and points assigned to each duty based on the day of the week. -
DutyStorage
: Accumulates and stores the duty points and duty records of all the persons.
-
-
Justification: The duty package provides the backend support for all duty-related features and commands.
-
Highlights: The package contain functions assessed by many commands (i.e. BlockDateCommmand, ViewCommand, ScheduleCommand, DutySettingCommand).
-
Credits: {Fellow teammate Yoon Ki Hyun for working together on the DutyMonth and Duty}
-
-
Major enhancement: Schedule and confirm command
-
What it does: The schedule command that invokes the schedule algorithm to generate a viable duty allocation for the upcoming month. The confirm command finalizes the schedule and updates the existing duty points of each person.
-
Justification: Enable duties to be scheduled to persons.
-
Highlight: Need to ensure that the command references the correct dutyMonth and duty points of each person do not get updated until confirm command is called.
-
-
Major enhancement: Settings command
-
What it does: Enable the administrator to adjust the desired manpower for duties based on the day of the week. Eanble the administrator to adjust the points to be awarded for doing duties based on the daty of the week.
-
Justification: Allows the user to have flexibility to change the duty allocation system.
-
Highlight: Need to ensure that the scheduling algorithm is compatible with adjustable duty points and duty capacities.
-
-
Minor enhancement: DateUtil common
-
What it does: A class that contains static methods to assist in validation of date parameters and other date related functions.
-
Justification: Contains commonly used functionalities that aids the developers and prevent duplicate code.
-
-
Code contributed:
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/duty/Duty.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/duty/DutyMonth.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/duty/DutySettings.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/duty/DutyStorage.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/DutyCalendar.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/commons/util/DateUtil.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/UserPrefs.java
-
https://github.com/yjpan47/main/blob/master/src/main/java/seedu/address/model/PersonnelDatabase.java
-
-
Project management:
-
Managed releases
v1.1
-
-
Documentation:
-
Major updates to the User Guide:
https://github.com/yjpan47/main/blob/master/docs/UserGuide.adoc -
Updated developer guide to include explanation of the schedule algorithm:
https://github.com/yjpan47/main/blob/master/docs/DeveloperGuide.adoc
-
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |