Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fahim Tajwar] iP #377

Open
wants to merge 84 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
556af3f
Add Gradle support
May 24, 2020
7fb3c62
Started with chatbot that imitates user commands, and exits on 'bye'.
Jan 19, 2023
585628d
Added 'add' and 'list' functionality. Converted if-else-if tree to ne…
Jan 19, 2023
749cb50
Added Task class. Changes to Duke.java to store and print Task objects.
Jan 19, 2023
b1e0b2a
Added 'mark' and 'unmark' functionality.
Jan 19, 2023
37c96bf
Added line of text when calling 'list' command.
Jan 19, 2023
f7de89a
Added ToDo, Event and Deadline tasks as subclasses of Task.
Jan 19, 2023
1574507
Performed automated Text UI testing.
Jan 19, 2023
22a6ad8
Added exception handling for empty args, invalid command, bad indexes…
Jan 19, 2023
d62dc45
Added a DukeException class, as a parent class of all Duke-specific e…
Jan 19, 2023
2b0a112
Added delete functionality with exception handling.
Jan 19, 2023
f41e8e9
Style changes, add prevTask file detection.
Feb 1, 2023
8d23902
Add data.txt file reading functionality.
Feb 1, 2023
4e1ff5e
Remove save/load functionality from Duke.java (transfer to FileHandle…
Feb 2, 2023
a388982
Add FileHandler.java for save/load functionality.
Feb 2, 2023
349a0fc
Store Deadline dates as java.time.LocalDate.
Feb 3, 2023
a3cb086
Merge branch 'branch-Level-7'
Feb 3, 2023
85f2b1f
Extract all command line handling from Duke.java into UI.java.
Feb 4, 2023
7bf0c8d
Rename FileHandler.java to Storage.java
Feb 4, 2023
7effb96
Fix a bug where entering an invalid date created a Deadline with "by"…
Feb 4, 2023
9b3cf3f
Created separate welcome() method for welcome message.
Feb 4, 2023
8a7e229
Redesign to maintain OO principles.
Feb 8, 2023
f2ccca6
Group all classes into packages.
Feb 8, 2023
57565ad
Merge commit '556af3f47a96b32898ab4cdbd65b16486a4871e8'
Feb 12, 2023
af428b8
Add Gradle support.
Feb 12, 2023
8393433
Add JUnit testcases for TaskList.java.
Feb 12, 2023
bc50cb9
Modify TaskList.java to create new tasks.txt in the beginning if not …
Feb 12, 2023
3f4922b
Make all backend classes package-private.
Feb 13, 2023
914347b
Add Javadoc comments to duke.exceptions and duke.tasks package classes.
Feb 13, 2023
41b42ef
Modify TaskListTest to clear tasks.txt before testing.
Feb 13, 2023
97c39aa
Modify classes in duke.backend to conform to our Coding Standards.
Feb 13, 2023
020b0cc
Make Event start and end times private.
Feb 13, 2023
0c9f275
Modify duke.tasks classes to follow Coding Standard.
Feb 13, 2023
f3ae32d
Modify duke.exceptions classes to follow Coding Standard.
Feb 13, 2023
23f3ff2
Add Javadoc comments to duke.exceptions and duke.tasks package classes.
Feb 13, 2023
0c74c26
Modify TaskListTest to clear tasks.txt before testing.
Feb 13, 2023
9244628
Merge branch 'branch-A-JavaDoc'
Feb 14, 2023
48cbe28
Merge branch 'branch-A-codingStandard'. Resolved coding standards.
Feb 14, 2023
6c20142
Fully Resolved merge conflicts between A-JavaDoc, A-codingStandard an…
Feb 14, 2023
59489b0
Resolve some remaining merge conflicts in duke.exceptions.
Feb 14, 2023
dcdfadf
Add FIND keyword functionality.
Feb 14, 2023
30f927c
Add comments for UI:find() method.
Feb 14, 2023
e8e9f16
Set up Checkstyle for the project.
Feb 14, 2023
d90ccb8
Fix Checkstyle violations.
Feb 14, 2023
1af69e9
Create GUI
Feb 17, 2023
b0532a9
Add duke.commands package, containing all different types of commands.
Feb 18, 2023
d0b8fd2
Add functionality: close Duke on sending "bye" command.
Feb 18, 2023
3ec344e
Fix CheckStyle Violations.
Feb 18, 2023
b1b68cc
Use assertions to ensure correct indexes are passed during Delete and…
Feb 18, 2023
a2106a0
Merge pull request #2 from fahim-tazz/branch-A-codingStandard
fahim-tazz Feb 18, 2023
fa9494c
Merge pull request #3 from fahim-tazz/branch-Level-9
fahim-tazz Feb 18, 2023
0173c39
Merge pull request #4 from fahim-tazz/branch-A-CheckStyle
fahim-tazz Feb 18, 2023
a531450
Merge pull request #5 from fahim-tazz/branch-Level-10
fahim-tazz Feb 18, 2023
02c62a7
Merge pull request #6 from fahim-tazz/branch-A-Assertions
fahim-tazz Feb 18, 2023
76b459f
Add functionality: Detect tasks with duplicate names.
Feb 18, 2023
e5a54ba
Delete dead class Ui.java.
Feb 18, 2023
eda9529
Merge branch 'branch-A-CodeQuality'
Feb 19, 2023
6ac9078
Rename Duke to Jarvis.
Feb 19, 2023
1b3c45f
Add welcome message when GUI is first opened.
Feb 19, 2023
eee9720
'list' now says 'no items in list' when called on an empty list.
Feb 19, 2023
c651eb9
Change User and Chatbot profile pictures.
Feb 19, 2023
bd2f74e
Rename Jarvis to Chad.
Feb 19, 2023
3c98b99
Tweak Chad's responses.
Feb 19, 2023
f330f66
Change GUI background color.
Feb 19, 2023
f9dc729
Fix infinite recursion on 'bye' command.
Feb 19, 2023
3289ea2
Add JUnit tests for Parser.
Feb 20, 2023
e7a2ca3
Remove redundant Sout debug messages from Storage.java.
Feb 20, 2023
f1fd6f3
Set Gradle to build without checkstyle.
Feb 20, 2023
503133b
Fix NullPointerException in all Make commands.
Feb 20, 2023
e9ff01c
Add all exception handling to Parser.java.
Feb 20, 2023
96cb503
Merge tag 'A-MoreErrorHandling'
Feb 20, 2023
1113aee
Change window label to "Chad - Your Personal DIgital Assistant".
Feb 20, 2023
6c30c20
Add UI screenshot to docs folder.
Feb 20, 2023
67b82ba
Update README.md to include full User Guide.
fahim-tazz Feb 20, 2023
dbcd44f
Add save functionality when window is closed by [X] button.
Feb 20, 2023
ee130c6
Reduce app closing delay after sending 'bye' command.
Feb 20, 2023
ba43f57
Fix issue with not creating file. [Only works for command line execut…
Feb 20, 2023
3c82330
Update docs/README.md quick start to show how to launch through comma…
Feb 20, 2023
2371311
Add user guide as README to root directory.
Feb 20, 2023
a5d30e0
Add Error Handling for invalid arguments for delete command.
Feb 20, 2023
5ba3415
Fix hyperlink formatting in root/README.md
fahim-tazz Feb 20, 2023
a69ed15
Update README.md on root folder.
fahim-tazz Feb 20, 2023
d6d6a06
Update README.md
fahim-tazz Feb 20, 2023
0ee4cbe
Cleanup code.
Feb 20, 2023
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
95 changes: 71 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,71 @@
# 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 11, 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 11** (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.
3. 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
____ _
| _ \ _ _| | _____
| | | | | | | |/ / _ \
| |_| | |_| | < __/
|____/ \__,_|_|\_\___|
```
# Chad Personal Assistant User Guide

## Features

- Maintain a list of Tasks, Deadlines and Events.
- View your list at any time with a simple command `list`.
- Mark each item as Done or Not Done.
- Delete obsolete tasks.

## Quick Start Guide
1. Download the latest Chad version from [here](https://github.com/fahim-tazz/ip/releases).
2. Open your Terminal/Command Prompt.
3. Type `cd Downloads` (or wherever the `chad.jar` file is stored).
4. Type in `java -jar chad.jar`.
5. Type in commands to use Chad.
6. Enjoy!

---

## Usage

### `list` - List all current tasks.

Lists down all current tasks saved by Chad.
- T, D and E represent Todo, Deadline and Event tasks respectively.
- `[ ]` and `[X]` show whether a task is `Not Done` or `Done`, respectively.


### `todo [task name]` - Add a new Todo item.

Adds a new Todo task to your list.

### `deadline [task name] /by [due date YYYY-MM-DD]` - Add a new Deadline item.

Adds a new Deadline task to your list.
- The name should be followed by a ` /by ` keyword.
- The due date should come after the ` by `, and be in the format `YYYY-MM-DD`.

### `event [event name] /from [start time] /to [end time]` - Add a new Event item.

Adds a new Event to your list.
- The name should be followed by a ` /from ` keyword.
- The start time should come after the ` /from ` keyword, followed by ` /to `.
- The end time should come after the ` /to ` keyoword.
- Start and End times do not have any format constraints.

### `mark [task no.]` - Marks a task as done.

Marks the task at that serial number as done.
- Task numbers start from 1, and follow the ordering shown by the `list` command.

### `unmark [task no.]` - Marks a task as NOT done.

Marks the task at that serial number as NOT done.
- Task numbers start from 1, and follow the ordering shown by the `list` command.

### `delete [task no.]` - Removes a task from the list.

Permanently deletes the task at that serial number from the list.
- Task numbers start from 1, and follow the ordering shown by the `list` command.
- Deleted tasks CANNOT be recovered.

### `find [search phrase]` - Finds any task that matches with the search phrase.

Searches for any task that contains the search phrase.
- Search is CASE-SENSITIVE. `laundry` will NOT match with a task named `Do Laundry`.

### `bye` - Saves the current tasks and exits Chad.

Saves the current task list on your computer, and exits Chad. Tasks will be retrieved the next time you open Chad.
- You can also exit by clicking the [X] button on the Chad window. Don't worry, Chad will save your tasks no matter what!
65 changes: 65 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '5.1.0'
id 'checkstyle'
}

repositories {
mavenCentral()
}

checkstyle {
sourceSets = []
}

dependencies {
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0'

String javaFxVersion = '11'

implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux'
}

test {
useJUnitPlatform()

testLogging {
events "passed", "skipped", "failed"

showExceptions true
exceptionFormat "full"
showCauses true
showStackTraces true
showStandardStreams = false
}
}

application {
mainClassName = "chad.frontend.Main"
}

shadowJar {
archiveBaseName = "chad"
archiveClassifier = null
}

run{
standardInput = System.in
}

checkstyle {
toolVersion = '10.2'
}
Loading