Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
68c58c1
Add Gradle support
May 24, 2020
03523ec
Bump gradle and lib version
Eclipse-Dominator Aug 5, 2023
81a9c53
build.gradle: Prevent generating a second JAR file
aureliony Jul 16, 2024
11d0bf9
Rename to JacobMalon and created greet
jingchun19 Jan 23, 2025
2cf2359
level 0 changes
jingchun19 Jan 23, 2025
321f212
Echo created
jingchun19 Jan 23, 2025
0d03347
Level 2 changes Add, List
jingchun19 Jan 23, 2025
513be4a
Level 3
jingchun19 Jan 31, 2025
386f7f9
Level-4
jingchun19 Jan 31, 2025
653f912
Test file
jingchun19 Jan 31, 2025
cda0e05
Handle Errors, mark and todo
jingchun19 Jan 31, 2025
62d65d5
delete function
jingchun19 Jan 31, 2025
cd3efa6
Test changes
jingchun19 Feb 3, 2025
33812cb
main edit
jingchun19 Feb 3, 2025
6fc9f51
Added text file
jingchun19 Feb 3, 2025
f8f83f1
save function
jingchun19 Feb 3, 2025
cb7f2b9
Added date management, works for YYYY-MM-DD
jingchun19 Feb 4, 2025
cb64741
Date format
jingchun19 Feb 4, 2025
7b5cfdd
Update .gitignore
jingchun19 Feb 5, 2025
14dadab
Create .gitattributes
jingchun19 Feb 5, 2025
d672aa5
JavaDoc
jingchun19 Feb 5, 2025
07a17c5
Merge branch 'master' of https://github.com/jingchun19/ip
jingchun19 Feb 5, 2025
4911b09
Gradle files
jingchun19 Feb 5, 2025
82071ab
Issues with Junit testing
jingchun19 Feb 5, 2025
e4b1266
jar file
jingchun19 Feb 5, 2025
fb2d684
find function
jingchun19 Feb 5, 2025
93709e0
Add caches/ to .gitignore
jingchun19 Feb 14, 2025
9915392
gradle
jingchun19 Feb 14, 2025
04ccdf4
Save changes for daemon log file
jingchun19 Feb 14, 2025
2a7b4f8
Add daemon/ to .gitignore
jingchun19 Feb 14, 2025
5dc28f3
Remove daemon files from tracking
jingchun19 Feb 14, 2025
396de7a
Update Task.java
jingchun19 Feb 14, 2025
8e8c9dc
Ignore caches, daemon, native, and wrapper directories
jingchun19 Feb 14, 2025
ded377e
branch level 10 changes
jingchun19 Feb 14, 2025
166dc60
Commit changes on branch-level-10
jingchun19 Feb 14, 2025
798892a
gitignore
jingchun19 Feb 14, 2025
1c43022
Merge branch 'branch-level-10'
jingchun19 Feb 14, 2025
8e7bd15
Coding Standards
jingchun19 Feb 15, 2025
691bcf2
Level-9 changes
jingchun19 Feb 15, 2025
931f455
JavaDoc
jingchun19 Feb 15, 2025
16ea19b
Merge branch-A-CodingStandard with --no-ff
jingchun19 Feb 15, 2025
b2cb1b7
Merge branch-A-JavaDoc with --no-ff
jingchun19 Feb 15, 2025
144f880
Merge branch 'branch-Level-9'
jingchun19 Feb 15, 2025
495ac91
added native caches and daemon file to gitignore
jingchun19 Feb 15, 2025
ba6d104
Remove daemon log file from tracking
jingchun19 Feb 15, 2025
4762469
Remove daemon folder from tracking
jingchun19 Feb 15, 2025
5e7a2a2
Ignore caches and wrapper directories
jingchun19 Feb 15, 2025
9a9d523
Remove runtest.sh
jingchun19 Feb 15, 2025
14f271f
Test for Deadline and Task
jingchun19 Feb 15, 2025
413d8c6
GFMD added
jingchun19 Feb 15, 2025
e706ac4
Implement assertions
jingchun19 Feb 15, 2025
dd03c80
Improve code quality
jingchun19 Feb 15, 2025
6fffb3e
Merge pull request #3 from jingchun19/branch-A-CodeQuality
jingchun19 Feb 15, 2025
dfbe2df
Merge pull request #2 from jingchun19/branch-A-Assertions
jingchun19 Feb 15, 2025
1591b6c
Add assertions to improve code robustness
jingchun19 Feb 15, 2025
522df82
Improve code quality of task management classes
jingchun19 Feb 15, 2025
fd40f1c
Pull from origin
jingchun19 Feb 15, 2025
572482b
Add duplicate task detection
jingchun19 Feb 15, 2025
3c28492
Update User Guide in docs/README.md
jingchun19 Feb 15, 2025
bf6197a
Added UI.png
jingchun19 Feb 16, 2025
d46cebe
Corrected save and load file
jingchun19 Feb 16, 2025
cc8b843
Added closing by saying bye
jingchun19 Feb 16, 2025
91da910
Update test files for task storage and formatting
jingchun19 Feb 16, 2025
38842bf
Standardize date/time handling across application
jingchun19 Feb 16, 2025
443b0bd
standardize: Unify date/time handling across app
jingchun19 Feb 16, 2025
406c3c8
feat: Add persistent storage for tasks
jingchun19 Feb 16, 2025
3a186bc
docs: Update error messages with clear examples
jingchun19 Feb 16, 2025
789b364
test: Add validation tests for date/time formats
jingchun19 Feb 16, 2025
4d013e6
refactor: Extract date formatter to utility class
jingchun19 Feb 16, 2025
a6d7afc
fix: Rename UI.png to Ui.png for standard compliance
jingchun19 Feb 16, 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
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,24 @@
/.gradle/
/build/
src/main/resources/docs/
caches/
wrapper/
daemon/
native/

# Ignore compiled Java class files
*.class

# MacOS custom attributes files created by Finder
.DS_Store
*.iml
bin/
/native/
/caches/
/daemon/

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

# Data files
/data/
2 changes: 2 additions & 0 deletions .tmp/gradle-worker-classpath9979931208124703051txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-cp
"C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\7.6.2\\workerMain\\gradle-worker.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\build\\classes\\java\\test;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\build\\classes\\java\\main;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\build\\resources\\main;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-fxml\\17.0.7\\dac7ac058b9c66a8a759dbf2d0ae4557749f3063\\javafx-fxml-17.0.7-win.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-fxml\\17.0.7\\a686a637faa5c7fd95be464f75124414643b6ccd\\javafx-fxml-17.0.7-mac.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-fxml\\17.0.7\\88571e5fa666c2d5bb560cc44d5b6158a7b9c8e5\\javafx-fxml-17.0.7-linux.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-controls\\17.0.7\\bf1cb6a3c81e190d56fd84aeeb0fc36d44f9be70\\javafx-controls-17.0.7-win.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-controls\\17.0.7\\9526295ad4cbee60dd2121802eb17a57d493e4d5\\javafx-controls-17.0.7-mac.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-controls\\17.0.7\\caeb9696d8901c66c9990ff337df884e1867d5b8\\javafx-controls-17.0.7-linux.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-controls\\17.0.7\\e5bc7891b9e2a389aeac4a5dcabf1130e852bf0c\\javafx-controls-17.0.7.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-graphics\\17.0.7\\43ca0f3861f1e3a2cda4a6a7b8746bbf5bcbe754\\javafx-graphics-17.0.7-win.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-graphics\\17.0.7\\d5463ebc0f524d0225a6613877c381abfcd81918\\javafx-graphics-17.0.7-mac.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-graphics\\17.0.7\\c2029cf4a359ddb5fe0dec9d11407ea97940e06a\\javafx-graphics-17.0.7-linux.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-graphics\\17.0.7\\55eca64e65d90976f9d054dceb3921f4d08f4e8b\\javafx-graphics-17.0.7.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-base\\17.0.7\\2b79238d65ff33212eafb04acc6acbb7cd0a3300\\javafx-base-17.0.7-win.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-base\\17.0.7\\2c983af31f7a8525a7730336295e084c42e51598\\javafx-base-17.0.7-mac.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-base\\17.0.7\\9f27959208043d012b99019a0a9d53d63bf40c56\\javafx-base-17.0.7-linux.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.openjfx\\javafx-base\\17.0.7\\5ba6d336d0e9a4134d96bb402890f5570c4562ae\\javafx-base-17.0.7.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.junit.platform\\junit-platform-engine\\1.10.0\\276c4edcf64fabb5a139fa7b4f99330d7a93b804\\junit-platform-engine-1.10.0.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.junit.platform\\junit-platform-commons\\1.10.0\\d533ff2c286eaf963566f92baf5f8a06628d2609\\junit-platform-commons-1.10.0.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.junit.jupiter\\junit-jupiter-engine\\5.10.0\\90587932d718fc51a48112d33045a18476c542ad\\junit-jupiter-engine-5.10.0.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.junit.jupiter\\junit-jupiter-api\\5.10.0\\2fe4ba3d31d5067878e468c96aa039005a9134d3\\junit-jupiter-api-5.10.0.jar;C:\\Users\\Jing Chun\\Desktop\\CS2103T\\ip\\caches\\modules-2\\files-2.1\\org.opentest4j\\opentest4j\\1.3.0\\152ea56b3a72f655d4fd677fc0ef2596c3dd5e6e\\opentest4j-1.3.0.jar"
56 changes: 56 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '7.1.2'
}

repositories {
mavenCentral()
}

dependencies {
String javaFxVersion = '17.0.7'

testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0'
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 {
mainClass.set("myapp.Launcher")
}

shadowJar {
archiveBaseName = "JacobMalon"
archiveClassifier = null
archiveFileName = 'JacobMalon.jar'
}

run{
standardInput = System.in
}
152 changes: 138 additions & 14 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,154 @@
# Duke User Guide
# JacobMalon Task Manager

// Update the title above to match the actual product name
A desktop task management application optimized for users who prefer typing over mouse interactions. If you can type fast, JacobMalon can help you manage tasks more efficiently than traditional GUI apps.

// Product screenshot goes here
## Quick Start

// Product intro goes here
1. Ensure you have Java 17 or above installed.
2. Download the latest `JacobMalon.jar` from [here](releases/latest).
3. Run the command: `java -jar JacobMalon.jar`

## Adding deadlines
## Features

// Describe the action and its outcome.
### Notes about Command Format
* Words in UPPER_CASE are parameters you need to provide
* Parameters can be in any order
* Dates should be in the format: `d/M/yyyy HHmm` (e.g., `2/12/2023 1800`)

// Give examples of usage
### 1. Adding Tasks
You can add three types of tasks:

Example: `keyword (optional arguments)`
a) **Todo Task**
```
todo DESCRIPTION
todo read book
```

b) **Deadline Task**
```
deadline DESCRIPTION /by DATE_TIME
deadline return book /by 2/12/2023 1800
```

c) **Event Task**
```
event DESCRIPTION /from START_DATE_TIME /to END_DATE_TIME
event team meeting /from 2/12/2023 1400 /to 2/12/2023 1600
```

### 2. Viewing Tasks

a) **List all tasks**
```
list
```

b) **Find tasks by keyword**
```
find KEYWORD
find book
```

### 3. Managing Tasks

a) **Mark task as done**
```
mark INDEX
mark 1
```

b) **Mark task as not done**
```
unmark INDEX
unmark 1
```

// A description of the expected outcome goes here
c) **Delete task**
```
delete INDEX
delete 1
```

### 4. Exiting the Program
```
expected output
bye
```

## Feature ABC
## Duplicate Task Detection

The application will warn you when you try to add a duplicate task:
* For todos: Same description
* For deadlines: Same description and deadline
* For events: Same description, start time, and end time

## Data Storage

* Tasks are automatically saved after each command
* Data is stored in `list.txt` in the same directory as the application
* The file is automatically loaded when you start the application

## FAQ

**Q: How do I transfer my tasks to another computer?**
A: Copy the `list.txt` file to the same directory as the JacobMalon.jar on the new computer.

**Q: What happens if I enter an invalid date format?**
A: The application will show an error message. Remember to use the format: d/M/yyyy HHmm

## Command Summary

| Command | Format | Example |
|---------|---------|---------|
| Add todo | `todo DESCRIPTION` | `todo read book` |
| Add deadline | `deadline DESCRIPTION /by DATE_TIME` | `deadline return book /by 2/12/2023 1800` |
| Add event | `event DESCRIPTION /from START /to END` | `event meeting /from 2/12/2023 1400 /to 2/12/2023 1600` |
| List | `list` | `list` |
| Find | `find KEYWORD` | `find book` |
| Mark done | `mark INDEX` | `mark 1` |
| Mark not done | `unmark INDEX` | `unmark 1` |
| Delete | `delete INDEX` | `delete 1` |
| Exit | `bye` | `bye` |

// Feature details
## Development

### Project Structure

```
src
├── main
│ ├── java
│ │ └── myapp
│ │ ├── JacobMalon.java
│ │ ├── Main.java
│ │ └── taskscommand
│ │ ├── Task.java
│ │ ├── ToDo.java
│ │ ├── Deadline.java
│ │ └── Event.java
│ └── resources
│ └── view
│ └── MainWindow.fxml
└── test
└── java
└── taskscommand
├── TaskTest.java
└── DeadlineTest.java
```

### Running Tests

```bash
./gradlew test
```

### Building JAR

```bash
./gradlew shadowJar
```

The JAR file will be created in `build/libs/JacobMalon.jar`

## Feature XYZ
## License

// Feature details
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
Binary file added docs/Ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading