Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
48f39eb
Level-0
HYCGreenBU Feb 6, 2025
ab993ab
Level-1
HYCGreenBU Feb 6, 2025
07a7b0c
Level-1
HYCGreenBU Feb 6, 2025
f7d1a76
Level 2
HYCGreenBU Feb 6, 2025
831d116
Level-2
HYCGreenBU Feb 6, 2025
a1511a8
Level-3
HYCGreenBU Feb 6, 2025
57d2187
Level-4 + code abstraction of Todo, Task, Deadline and Event + Additi…
Jonathan2745 Feb 7, 2025
6c70014
added .runtest.bat file for testing
Jonathan2745 Feb 13, 2025
2cb933b
Level-5
Jonathan2745 Feb 13, 2025
b55d25c
added ArrayList<Task> and Level-5
Jonathan2745 Feb 21, 2025
a19da34
Level-7
Jonathan2745 Feb 21, 2025
17f8b69
removed user data from git push
Jonathan2745 Mar 5, 2025
f7e39c3
added classes - not implemented yet
Jonathan2745 Mar 5, 2025
0a8bc50
7.1
Jonathan2745 Mar 8, 2025
04e26d7
Merge pull request #1 from Jonathan2745/branch-Level-7
Jonathan2745 Mar 8, 2025
c5ef628
A-Assertions
Jonathan2745 Mar 8, 2025
5c4b5e5
A-CodeQuality
Jonathan2745 Mar 8, 2025
e16dc6e
Merge pull request #2 from Jonathan2745/branch-A-Assertions
Jonathan2745 Mar 8, 2025
0b70080
Merge branch 'master' into branch-A-CodeQuality
Jonathan2745 Mar 8, 2025
95e0b5a
Merge pull request #3 from Jonathan2745/branch-A-CodeQuality
Jonathan2745 Mar 8, 2025
c17a112
added level-8
Jonathan2745 Mar 8, 2025
6cf9f40
Level-9
Jonathan2745 Mar 11, 2025
ff5d6c7
Added A-JavaDoc
Jonathan2745 Mar 12, 2025
922a9b2
Merge pull request #4 from Jonathan2745/branch-Level-9
Jonathan2745 Mar 12, 2025
7f7c47d
A-UserGuide
Jonathan2745 Mar 12, 2025
66f2146
Merge pull request #5 from Jonathan2745/branch-Level-9
Jonathan2745 Mar 12, 2025
ad1e2a1
editted A-UserGuide
Jonathan2745 Mar 12, 2025
aa75453
Merge pull request #6 from Jonathan2745/branch-Level-9
Jonathan2745 Mar 12, 2025
6130536
added minor bug fixing, file creation and error responses
Jonathan2745 Mar 12, 2025
65a5c5d
Merge branch 'master' into branch-Level-9
Jonathan2745 Mar 12, 2025
635922b
Merge pull request #7 from Jonathan2745/branch-Level-9
Jonathan2745 Mar 12, 2025
d0d692d
added bug fix for missing data folder
Jonathan2745 Mar 12, 2025
34dc388
ascii art bug
Jonathan2745 Mar 12, 2025
48bb30c
ascii art bug
Jonathan2745 Mar 12, 2025
2161a47
ascii art bug
Jonathan2745 Mar 12, 2025
3d376b2
edittde user guide
Jonathan2745 Mar 12, 2025
04640b1
testing userguide
Jonathan2745 Mar 12, 2025
649909e
testing userguide
Jonathan2745 Mar 12, 2025
e417e4b
testing userguide
Jonathan2745 Mar 12, 2025
552f814
minor changes to JavaDoc
Jonathan2745 Mar 13, 2025
6ab34c8
Merge pull request #8 from Jonathan2745/branch-A-JavaDoc
Jonathan2745 Mar 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,9 @@ bin/

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT

#Compiled class file
*.class

# userdata
/data/
203 changes: 177 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,177 @@
# Duke project template

This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it.

## Setting up in Intellij

Prerequisites: JDK 17, update Intellij to the most recent version.

1. Open Intellij (if you are not in the welcome screen, click `File` > `Close Project` to close the existing project first)
1. Open the project into Intellij as follows:
1. Click `Open`.
1. Select the project directory, and click `OK`.
1. If there are any further prompts, accept the defaults.
1. Configure the project to use **JDK 17** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).<br>
In the same dialog, set the **Project language level** field to the `SDK default` option.
1. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:
```
Hello from
____ _
| _ \ _ _| | _____
| | | | | | | |/ / _ \
| |_| | |_| | < __/
|____/ \__,_|_|\_\___|
```

**Warning:** Keep the `src\main\java` folder as the root folder for Java files (i.e., don't rename those folders or move Java files to another folder outside of this folder path), as this is the default location some tools (e.g., Gradle) expect to find Java files.
# BobChungus - User Guide

## Overview

BobChungus is a command-line based application intended as a Task Management System. It aims to help users manage their active tasks in the form of **todos**, **deadlines** and **events**.

---

## Commands

#### Notes about the Command Format

<div style="border: 1px solid #2196F3; background-color: #BBDEFB; padding: 10px; border-radius: 5px;">

- Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in TASK_DESCRIPTION is a parameter which can be replaced with the description of the task to be added
<br>

- Parameters <strong> must </strong> be in the specified order.
e.g. if the command specifies TASK_DESCRIPTION followed by TASK_DATE,
TASK_DATE followed by TASK_DESCRIPTION is <strong> NOT </strong> acceptable and will cause issues.
<br>

- Extraneous parameters for commands that do not take in parameters (such as list and bye) will cause errors.
e.g. if the command specifies bye 123, it will be create an error.
<br>

- If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.

</div>

---

### List of Commnads

---

### **Exiting the program:** `bye`

**Description:** Exits the program. Saves all Tasks within `TaskList` before exitting.

- **Use Case:** When the user is done, they can type `bye` to exit the program.
- **Format:** `bye`

### **Display all Tasks:** `list`

**Description:** Displays the list of tasks.

- **Use Case:** When the user wants to view all tasks in their list.
- **Format:** `list`

### **Create new `Todo` task:** `todo`

**Description:** Adds a new to-do task.

- **Use Case:** The user provides a description for the to-do task.
- **Arguments:** Task description (e.g., `todo Buy groceries`)
- **Format:** `todo TASK_DESCRIPTION`

### **Create new `deadline` task:** `deadline`

**Description:** Adds a new deadline task.

- **Use Case:** The user provides a task description and a deadline date.
- **Arguments:** Task description followed by `/by` and the deadline date (e.g., `deadline Finish assignment /by 15-03-2025`).
- **Format:** `deadline TASK_DESCRIPTION /by DD-MM-YYYY`

### **Create new `event` task:** `event`

**Description:** Adds a new event task.

- **Use Case:** The user provides an event description and start and end date.
- **Arguments:** Event description followed by `/from` (start date) and `/to` (end date) (e.g., `event Conference /from 20-03-2025 /to 22-03-2025`).
- **Format:** `event TASK_DESCRIPTION /from TASK_START_DATE(dd-MM-yyyy) /to TASK_END_DATE(dd-MM-yyyy)`

---

<div style="border: 1px solid #2196F3; background-color: #BBDEFB; padding: 10px; border-radius: 5px;">
<strong>Note:</strong> Tasks are stored within the program 0-indexed, but are displayed and interacted with by users 1-indexed.
</div>

---

### **Delete a Task:** `delete`

**Description:** Deletes a task by index.

- **Use Case:** The user provides the index of the task to be deleted.
- **Arguments:** Task index (e.g., `delete 2` to delete the second task in the list).
- **Format:** `delete TASK_INDEX`

### **Mark a task as complete:** `mark`

**Description:** Marks a task as completed.

- **Use Case:** The user provides the index of the task to mark as done.
- **Arguments:** Task index (e.g., `mark 3` to mark the third task as done).
- **Format:** `mark TASK_INDEX`

### **Mark a task as not complete:** `unmark`

**Description:** Marks a task as not completed.

- **Use Case:** The user provides the index of the task to mark as not done.
- **Arguments:** Task index (e.g., `unmark 1` to unmark the first task).
- **Format:** `unmark TASK_INDEX`

### **Find a task:** `find`

**Description:** Finds tasks with a specific keyword in their description.

- **Use Case:** The user provides a keyword to search for in the task descriptions.
- **Arguments:** Keyword to search for (e.g., `find meeting`).
- **Format:** `find TASK_DESCRIPTION`

### **Saving your data**

BobChungus' `TaskList` data is saved in the hard disk automatically after exiting with the `bye` command.
There is no need to save manually.

### **Editing Saved data**

BobChungus' `TaskList` Data is automatically saved as a `.txt` file at `[JAR file location]/data/userTasks.txt`. Advanced users are welcome to update data directly by editing that data file.

<div style="border: 1px solid #FF9800; background-color: #FFEB3B; padding: 10px; border-radius: 5px;">
<strong>Caution:</strong> If your changes to the data file makes its format invalid, BobChungus will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.

Furthermore, certain edits can cause BobChungus to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.

</div>

---

## Command Summary

| Command | Description | Arguments | Format |
| ---------- | ----------------------------------------- | ------------------------------------- | -------------------------------------------------- |
| `bye` | Exits the program | None | `bye` |
| `list` | Lists all tasks | None | `list` |
| `todo` | Adds a to-do task | Task description | `todo Buy groceries` |
| `deadline` | Adds a deadline task | Task description /by date | `deadline Submit report /by 18-03-2025` |
| `event` | Adds an event task | Event description /from date /to date | `event Conference /from 20-03-2025 /to 22-03-2025` |
| `delete` | Deletes a task by index | Task index | `delete 2` |
| `mark` | Marks a task as completed | Task index | `mark 3` |
| `unmark` | Marks a task as not completed | Task index | `unmark 1` |
| `find` | Finds tasks by keyword in the description | Search keyword | `find meeting` |

---

## FAQs

### 1. **What happens if I enter an invalid command?**

- If you enter a command that is not recognized, the program will throw an exception and display an error message indicating that the command is invalid.

### 2. **What if I forget to include the arguments for a command like `todo` or `deadline`?**

- The program will throw an exception (`MissingTodoArgumentException`, `MissingDeadlineArgumentException`, etc.) and inform you that you are missing required arguments.

### 3. **What format should the dates be in?**

- All dates should be in the format `dd-MM-yyyy`, for Format, example `15-03-2025`.

---

## Notes on Editing Data

- The commands are case-insensitive, meaning you can type commands in any letter case (e.g., `todo`, `TODO`, `ToDo`).
- Ensure that the date format for commands like `deadline` and `event` is strictly followed (`dd-MM-yyyy`).
- You can modify the task list and storage handling by editing the `TaskList` and `Storage` classes.

---

## Known Issues

- **Date parsing errors**: If a date is not in the correct format (`dd-MM-yyyy`), a `DateTimeParseException` will be thrown.
- **Index errors**: Deleting or marking tasks by index requires the index to be valid; otherwise, an exception may occur if the user enters an invalid index.
1 change: 1 addition & 0 deletions data/userTasks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
todo|done|testing
Loading