Role: Developer

Responsibilities: Developing, Testing

PROJECT: Student Planner


Overview

Student Planner is a all-in-one desktop manager application that allows students to manage their contacts, tasks, events and expenses. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

Summary of contributions

  • Main feature implemented: Added various commands to enable users to manage Task Book

    • What it does: allows user to better manage their tasks by providing the following commands:

      • AddTaskCommand: user is able to create new task.

      • ListTaskCommand: user is able to access tasks by priority or deadlines.

      • UpdateTaskCommand: user is able to update tasks.

      • DeleteTaskCommand: user is able to delete tasks

    • Justification: This feature improves the product significantly as a user can track and manage the tasks easily.

  • Code contributed: [Overview]

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Adding a task: task

Adds a task to the schedule planner
Format: task n/NAME b/BODY s/START_DATETIME e/END_DATETIME [t/TAG]…​ p/PRIORITY

  • The BODY field contains details or remarks of a task.

  • A task can only have its start DATE (without specific TIME, format: DD/MM(_HH:mm)).

  • But its end valid DataTime should contain DATE & TIME (format: DD/MM_HH:mm).

  • We only accept February 28th as a valid date, i.e. 28/2 valid, 29/2 invalid.

  • Task priority can only be HIGH/high, MED/med or LOW/low,

A task can have any number of tags (including 0).
By default, the tasks are listed by descending order of priority i.e. HIGH, MED, LOW.

Examples:

  • task n/Submit Assignment b/CG2027 Assign2 s/18/10 e/25/10_14:00 p/HIGH t/Hardcopy

  • task n/Submit Quiz b/MA1508E Quzi11 s/29/10_00:00 e/4/11_22:00 p/MED t/IVLE

Listing all tasks : listTask

Shows a list of all tasks from task book in the student planner according to the deadline (end DateTime).
Format: listTask

Editing a task : updateTask

Update an existing task in the student planner.
Format: updateTask INDEX [n/NAME] [b/BODY] [s/START_DATETIME] [e/END_DATETIME] [t/TAG]…​ [p/PRIORITY]

  • Edits the task at the specified INDEX. The index refers to the index number shown in the displayed task list. The index must be a positive integer 1, 2, 3, …​

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

  • When editing tags, the existing tags of the task will be removed i.e adding of tags is not cumulative.

  • You can remove all the task’s tags by typing t/ without specifying any tags after it.

Examples:

  • updateTask 1 b/Need two pens
    Edits the body of the 1st task to be Need two pens.

  • updateTask 2 t/
    Edits the 2nd task by clearing all existing tags.

Deleting a task : deleteTask

Deletes the specified task from the task book in the student planner.
Format: deleteTask INDEX

  • Deletes the task at the specified INDEX.

  • The index refers to the index number shown in the displayed task list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • listTask
    deleteTask 2
    Deletes the 2nd task from the task book.

Contributions to the Developer Guide

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.

Tasks (CRUD) feature

Current Implementation

The tasks' CRUD mechanism is facilitated by AddTaskCommand,listTaskCommand,findTaskCommand,UpdateTaskCommand,DeleteTaskCommand. It extends Command and implement the following operation:

  • Command#AddTaskCommand() — Create a new task to Student Planner

  • Command#ListTaskCommand() — View existing task list

  • Command#UpdateTaskCommand() — Update existing tasks from history

  • Command#DeleteTaskCommand() — Remove existing tasks from history

These operations are exposed in the Model interface as Model#hasTask(),Model#addTask(),Model#listTask(),Model#updateTask() and Model#deleteTask() respectively.

Given below is an example usage scenario and how the CRUD mechanism behaves at each step.

Step 1. The user launches the application for the first time. The Student Planner will be initialized with the initial task book state.

taskStartingStateListDiagram

Step 2. The user executes task t/submission …​ command to add a new submission task to the student planner. The task command calls Model#addTask() which returns a task to be shown in the task list.

taskCommand1StateListDiagram

Step 3. The user then decides to executes updateTask 2 …​ command to update an existing task. The updateTask command calls Model#updateTask(), causing a modified task to be saved.

The following sequence diagram shows how the updateTask 2 e/13/11_22:59 operation works:

updateTaskEventHandlingSD

Step 4. The user executes listTask command to view the existing task list, which calls Model#listTask(). The listTask command does not modify the task book, the taskBookStateList remains unchanged.

Step 5. The user now decides that the task added was a mistake, and decides to remove that task by executing the deleteTask 6 command to delete the 6th task in the task list of the student planner. The deleteTask command will call Model#deleteTask(), causing the modified state of the task book after the deleteTask 6 command executes to be saved in the taskBookStateList.

The following sequence diagram shows how the deleteTask 6 operation works:

deleteTaskEventHandlingSD
  • Note: Manual Testing portion below

Creating a task

  1. Creating a new task to the task book

    1. Prerequisites: The task must not already exist in student planner

    2. Test case: task n/Submission b/CG2027 Assign3 s/17/10_17:00 e/24/10_14:00 p/med
      Expected: A new task is added to the task book panel, and a success message will be shown in the result display panel.

    3. Test case (If a task with name of submission and body of CG2027 Assign3 is already existed in student planner): task n/Submission b/CG2027 Assign3 s/17/10_17:00 e/24/10_14:00 p/med
      Expected: No task is added, and a duplicate task message is shown in the result display panel.

    4. Test case: task n/Submission b/CG2027 Assign3 s/17/10 e/24/10 p/med
      Expected: No task is added. Error details shown in the result display panel.

Listing all tasks

  1. Listing all the tasks in the student planner.

    1. Prerequisites: User has entered some tasks. Multiple tasks in the list.

    2. Test case: listTask
      Expected: All tasks are listed according to their deadline (in ascending order) in the task book panel.

Updating an existing task

  1. Updating the name/body of a task

    1. Prerequisites: User has entered some tasks. Multiple tasks in the list.

    2. Test case: updateTask 1 n/Submission b/CG2027 Assign3
      Expected: The body/detail of first task is updated in student planner, and a success message is shown in the result display panel.

    3. Test case (If a task with name of submission and body of CG2027 Assign3 is already existed in student planner): updateTask 1 n/Submission b/CG2027 Assign3
      Expected: No task is updated, and a duplicate task message is shown in the result display panel.

    4. Test case:`updateTask 1 n/`
      Expected: No task is updated. Error details of invalid command is shown in the result display panel.

    5. Other incorrect updateTask commands to try: updateTask, updateTask 1 b/, updateTask x …​ (where x is larger than the list size)
      Expected: Similar to previous.

  2. Updating the startDateTime or endDateTime of a task

    1. Prerequisites: User has entered some tasks. Multiple tasks in the list.

    2. Test case: updateTask 1 e/30/11_21:59
      Expected: The endDateTime of first task is updated in the student planner, and a success message is shown in the result display panel.

    3. Test case: updateTask 1 e/30/11
      Expected: No task is updated. Error detail of invalid endDateTime format is shown in the result display panel.

    4. Test case: updateTask 1 e/32/11_21:59
      Expected: No task is updated. Error detail of invalid endDateTime format is shown in the result display panel.

    5. Other incorrect updateTask commands to try: updateTask 1 s/, updateTask 1 e/, updateTask x …​ (where x is larger than the list size)
      Expected: No task is updated. Error details of invalid command is shown in the result display panel.

  3. Updating the priority of a task

    1. Prerequisites: User has entered some tasks. Multiple tasks in the list.

    2. Test case: updateTask 1 p/low
      Expected: The priority if first task is updated to low in the student planner. A success message is shown in the result display panel.

    3. Test case: updateTask 1 p/h
      Expected: No task is updated. Error detail of invalid priority format is shown in the result display panel.

    4. Test case: updateTask 1 p/
      Expected: No task is updated. Error details shown in the result display panel.

  4. Updating the tags of a task

    1. Prerequisites: User has entered some tasks. Multiple tasks in the list.

    2. Test case: updateTask 1 t/hardcopy
      Expected: The tag field of first task is updated in the student planner. A success message is shown in the result display panel.

    3. Test case: updateTask 1 t/
      Expected: The tag field of first task is cleared in the student planner. A success message is shown in the result display panel.

Deleting a task

  1. Deleting a task while all tasks are listed

    1. Prerequisites: User has entered some tasks. Multiple tasks in the list.

    2. Test case: deleteTask 1
      Expected: First task is deleted from the list, and a success message is shown in the result display panel. Task list is updated.

    3. Test case: deleteTask 0
      Expected: No task is deleted. Error details shown in the result display panel. Task list remains the same.

    4. Test case (If 5 tasks exist in the student planner, i.e. task list size is 5 ): deleteTask 6
      Expected: No task is deleted. Error details shown in the result display panel. Task list remains the same.

    5. Other incorrect deleteTask commands to try: deleteTask, deleteTask -1
      Expected: Similar to previous.