From 556af3f47a96b32898ab4cdbd65b16486a4871e8 Mon Sep 17 00:00:00 2001 From: damithc Date: Mon, 25 May 2020 00:58:18 +0800 Subject: [PATCH 01/44] Add Gradle support --- build.gradle | 41 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58695 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 183 +++++++++++++++++++++++ gradlew.bat | 103 +++++++++++++ text-ui-test/runtest.sh | 0 6 files changed, 332 insertions(+) create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat mode change 100644 => 100755 text-ui-test/runtest.sh diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..885198fcfa --- /dev/null +++ b/build.gradle @@ -0,0 +1,41 @@ +plugins { + id 'java' + id 'application' + id 'com.github.johnrengelman.shadow' version '5.1.0' +} + +repositories { + mavenCentral() +} + +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' +} + +test { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed" + + showExceptions true + exceptionFormat "full" + showCauses true + showStackTraces true + showStandardStreams = false + } +} + +application { + mainClassName = "seedu.duke.Duke" +} + +shadowJar { + archiveBaseName = "duke" + archiveClassifier = null +} + +run{ + standardInput = System.in +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f3d88b1c2faf2fc91d853cd5d4242b5547257070 GIT binary patch literal 58695 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..b7c8c5dbf5 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000..2fe81a7d95 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..62bd9b9cce --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/text-ui-test/runtest.sh b/text-ui-test/runtest.sh old mode 100644 new mode 100755 From e2dc23cacc5a07f9454074d8f7bf844492c343ae Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Thu, 19 Jan 2023 17:30:39 +0800 Subject: [PATCH 02/44] first commit --- src/main/java/Duke.java | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..d828206ada 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,22 @@ +import java.util.Locale; +import java.util.Objects; +import java.util.Scanner; + public class Duke { public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); + + Scanner sc = new Scanner(System.in); + System.out.print("Hello! I'm Duke\n"); + System.out.print("What can I do for you?\n"); + + String str= ""; + + while (!Objects.equals(str, "bye".toLowerCase(Locale.ROOT))) { + str = sc.nextLine().toLowerCase(); + System.out.print(str+'\n'); + } + } + + } From 9db8e00ae977d8181ff8b827c7d99935f0a9e7bc Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Thu, 19 Jan 2023 18:24:10 +0800 Subject: [PATCH 03/44] Revert "first commit" This reverts commit e2dc23cacc5a07f9454074d8f7bf844492c343ae. --- src/main/java/Duke.java | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index d828206ada..5d313334cc 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,22 +1,10 @@ -import java.util.Locale; -import java.util.Objects; -import java.util.Scanner; - public class Duke { public static void main(String[] args) { - - Scanner sc = new Scanner(System.in); - System.out.print("Hello! I'm Duke\n"); - System.out.print("What can I do for you?\n"); - - String str= ""; - - while (!Objects.equals(str, "bye".toLowerCase(Locale.ROOT))) { - str = sc.nextLine().toLowerCase(); - System.out.print(str+'\n'); - } - + String logo = " ____ _ \n" + + "| _ \\ _ _| | _____ \n" + + "| | | | | | | |/ / _ \\\n" + + "| |_| | |_| | < __/\n" + + "|____/ \\__,_|_|\\_\\___|\n"; + System.out.println("Hello from\n" + logo); } - - } From 20ce1ef0121218c829fa39388d91bc26d8c9e631 Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Thu, 19 Jan 2023 18:32:52 +0800 Subject: [PATCH 04/44] Level 1 Commit --- src/main/java/Duke.java | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..af3ab24292 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,24 @@ +import java.util.Locale; +import java.util.Objects; +import java.util.Scanner; + public class Duke { public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); + + + Scanner sc = new Scanner(System.in); + System.out.println("Hello! I'm Duke\n"); + System.out.println("What can I do for you?\n"); + + while (true) { + String a = sc.nextLine().toLowerCase(); + if (Objects.equals(a, "bye".toLowerCase())) { + System.out.println("Bye. Hope to see you again soon!"); + return; + } else { + System.out.println(a); + } + + } } } From e9480919d4fb3cd5733948fde26875704f14de24 Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Thu, 19 Jan 2023 19:02:36 +0800 Subject: [PATCH 05/44] second commit --- src/main/java/Duke.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index af3ab24292..7d9aada63a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,22 +1,26 @@ -import java.util.Locale; -import java.util.Objects; -import java.util.Scanner; +import java.util.*; public class Duke { public static void main(String[] args) { - Scanner sc = new Scanner(System.in); System.out.println("Hello! I'm Duke\n"); System.out.println("What can I do for you?\n"); + List lst = new ArrayList<>(); + while (true) { String a = sc.nextLine().toLowerCase(); - if (Objects.equals(a, "bye".toLowerCase())) { + if (Objects.equals(a, "bye")) { System.out.println("Bye. Hope to see you again soon!"); return; + } else if (Objects.equals(a, "list")) { + for (int i = 1; i <= lst.size(); i ++){ + System.out.println(i + ". " + lst.get(i - 1)); + } } else { - System.out.println(a); + lst.add(a); + System.out.println("added: " + a); } } From 89bdac53434a7df443dba8e208f32e04dd8aba43 Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Tue, 31 Jan 2023 00:10:58 +0800 Subject: [PATCH 06/44] level 3 commit --- src/main/java/Duke.java | 35 ++++++++++++++++++++++++++++------- src/main/java/Task.java | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 src/main/java/Task.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 7d9aada63a..fdd47b84a5 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,5 +1,6 @@ import java.util.*; + public class Duke { public static void main(String[] args) { @@ -7,22 +8,42 @@ public static void main(String[] args) { System.out.println("Hello! I'm Duke\n"); System.out.println("What can I do for you?\n"); - List lst = new ArrayList<>(); + List lst = new ArrayList<>(); + + while (true) { - String a = sc.nextLine().toLowerCase(); - if (Objects.equals(a, "bye")) { + String input = sc.nextLine().toLowerCase(); + String[] inputArr = input.split(" "); + String action = inputArr[0]; + + if (action.equals("bye")) { System.out.println("Bye. Hope to see you again soon!"); return; - } else if (Objects.equals(a, "list")) { + } else if (action.equals("list")) { // list for (int i = 1; i <= lst.size(); i ++){ System.out.println(i + ". " + lst.get(i - 1)); } - } else { - lst.add(a); - System.out.println("added: " + a); + } else if (action.equals("mark")) { + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + Task currTask = lst.get(taskNum - 1); + currTask.mark(); + System.out.println("Nice! I've marked this task as done" + '\n' + currTask); + } else if (action.equals("unmark")) { + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + Task currTask = lst.get(taskNum - 1); + currTask.unMark(); + System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); + }else { // add task + Task newTask = new Task(input); + lst.add(newTask); + System.out.println("added: " + input); } } } + } + diff --git a/src/main/java/Task.java b/src/main/java/Task.java new file mode 100644 index 0000000000..3593f105cf --- /dev/null +++ b/src/main/java/Task.java @@ -0,0 +1,32 @@ +import java.util.*; + +public class Task { + protected String description; + protected boolean isDone; + + public Task(String description) { + this.description = description; + this.isDone = false; + } + + public String getStatusIcon() { + return (isDone ? "X": " "); + } + + public String getDescription() { + return this.description; + } + + public void mark() { + this.isDone = true; + } + + public void unMark() { + this.isDone = false; + } + + @Override + public String toString() { + return "[" + this.getStatusIcon() + "]" + this.description; + } +} From 7b40056d3276b6cbafc2e3dbff4a2bd21ba8fb2c Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Tue, 31 Jan 2023 01:03:26 +0800 Subject: [PATCH 07/44] Level 4 commit --- src/main/java/Deadline.java | 13 +++++++++++ src/main/java/Duke.java | 46 +++++++++++++++++++++++++++++++++---- src/main/java/Event.java | 16 +++++++++++++ src/main/java/Task.java | 2 +- src/main/java/Todo.java | 11 +++++++++ 5 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/Event.java create mode 100644 src/main/java/Todo.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 0000000000..b2c31eaa11 --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,13 @@ +public class Deadline extends Task{ + + String dueDate; + public Deadline(String description, String dueDate) { + super(description); + this.dueDate = dueDate; + } + + @Override + public String toString() { + return "[D]" + super.toString() + " (" + this.dueDate + ')'; + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index fdd47b84a5..20a0992bfb 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -14,29 +14,65 @@ public static void main(String[] args) { while (true) { String input = sc.nextLine().toLowerCase(); - String[] inputArr = input.split(" "); + String[] inputArr = input.split(" ", 2); String action = inputArr[0]; if (action.equals("bye")) { System.out.println("Bye. Hope to see you again soon!"); return; - } else if (action.equals("list")) { // list + } + + else if (action.equals("list")) { // list + System.out.println("Here are the tasks in your list:"); for (int i = 1; i <= lst.size(); i ++){ System.out.println(i + ". " + lst.get(i - 1)); } - } else if (action.equals("mark")) { + } + + else if (action.equals("mark")) { String details = inputArr[1]; int taskNum = Integer.parseInt(details); Task currTask = lst.get(taskNum - 1); currTask.mark(); System.out.println("Nice! I've marked this task as done" + '\n' + currTask); - } else if (action.equals("unmark")) { + } + + else if (action.equals("unmark")) { String details = inputArr[1]; int taskNum = Integer.parseInt(details); Task currTask = lst.get(taskNum - 1); currTask.unMark(); System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); - }else { // add task + } + + else if (action.equals("todo")) { + String details = inputArr[1]; + Todo newTodo = new Todo(details); + lst.add(newTodo); + System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' +"Now you have " + lst.size() + " tasks in the list"); + } + + else if (action.equals("deadline")) { + String[] detailsAndDate = inputArr[1].split(" /by "); + String details = detailsAndDate[0]; + String date = detailsAndDate[1]; + Deadline newDeadline = new Deadline(details, date); + lst.add(newDeadline); + System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' +"Now you have " + lst.size() + " tasks in the list"); + } + + else if (action.equals("event")) { + String[] detailsAndTime = inputArr[1].split(" /from "); + String details = detailsAndTime[0]; + String[] Time = detailsAndTime[1].split(" /to "); + String To = Time[0]; + String From = Time[1]; + Event newEvent = new Event(details, To, From); + lst.add(newEvent); + System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' +"Now you have " + lst.size() + " tasks in the list"); + } + + else { // add task Task newTask = new Task(input); lst.add(newTask); System.out.println("added: " + input); diff --git a/src/main/java/Event.java b/src/main/java/Event.java new file mode 100644 index 0000000000..7eced4c9d8 --- /dev/null +++ b/src/main/java/Event.java @@ -0,0 +1,16 @@ +public class Event extends Task { + + String From; + String To; + public Event(String description, String From, String To) { + super(description); + this.From = From; + this.To = To; + } + + @Override + public String toString() { + return "[E]" + super.toString() + " (from: " + this.From + " to: " + this.To + ")"; + + } +} diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 3593f105cf..1a4bf712cc 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -27,6 +27,6 @@ public void unMark() { @Override public String toString() { - return "[" + this.getStatusIcon() + "]" + this.description; + return "[" + this.getStatusIcon() + "] " + this.description; } } diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java new file mode 100644 index 0000000000..931cfd4f9e --- /dev/null +++ b/src/main/java/Todo.java @@ -0,0 +1,11 @@ +public class Todo extends Task { + + public Todo(String description) { + super(description); + } + + @Override + public String toString() { + return "[T]" + super.toString(); + } +} From 81c9a07f15b0223d92a84ed8e80ba8f5ad8d00b4 Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Tue, 31 Jan 2023 01:38:18 +0800 Subject: [PATCH 08/44] Level 5 Commit --- src/main/java/Duke.java | 116 ++++++++++++++----------------- src/main/java/DukeException.java | 11 +++ text-ui-test/EXPECTED.TXT | 18 +++-- text-ui-test/input.txt | 5 ++ 4 files changed, 81 insertions(+), 69 deletions(-) create mode 100644 src/main/java/DukeException.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 20a0992bfb..bd444c33a4 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -13,69 +13,61 @@ public static void main(String[] args) { while (true) { - String input = sc.nextLine().toLowerCase(); - String[] inputArr = input.split(" ", 2); - String action = inputArr[0]; - - if (action.equals("bye")) { - System.out.println("Bye. Hope to see you again soon!"); - return; - } - - else if (action.equals("list")) { // list - System.out.println("Here are the tasks in your list:"); - for (int i = 1; i <= lst.size(); i ++){ - System.out.println(i + ". " + lst.get(i - 1)); + try { + String input = sc.nextLine().toLowerCase(); + String[] inputArr = input.split(" ", 2); + String action = inputArr[0]; + + if (action.equals("bye")) { + System.out.println("Bye. Hope to see you again soon!"); + return; + } else if (action.equals("list")) { // list + System.out.println("Here are the tasks in your list:"); + for (int i = 1; i <= lst.size(); i++) { + System.out.println(i + ". " + lst.get(i - 1)); + } + } else if (action.equals("mark")) { + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + Task currTask = lst.get(taskNum - 1); + currTask.mark(); + System.out.println("Nice! I've marked this task as done" + '\n' + currTask); + } else if (action.equals("unmark")) { + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + Task currTask = lst.get(taskNum - 1); + currTask.unMark(); + System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); + } else if (action.equals("todo")) { + String[] actionAndDetails = input.split(" ", 2); + if (actionAndDetails.length == 1) { + throw new DukeException("OOPS!!! The description of a todo cannot be empty."); + } + String details = actionAndDetails[1]; + Todo newTodo = new Todo(details); + lst.add(newTodo); + System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " + lst.size() + " tasks in the list"); + } else if (action.equals("deadline")) { + String[] detailsAndDate = inputArr[1].split(" /by "); + String details = detailsAndDate[0]; + String date = detailsAndDate[1]; + Deadline newDeadline = new Deadline(details, date); + lst.add(newDeadline); + System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + lst.size() + " tasks in the list"); + } else if (action.equals("event")) { + String[] detailsAndTime = inputArr[1].split(" /from "); + String details = detailsAndTime[0]; + String[] Time = detailsAndTime[1].split(" /to "); + String To = Time[0]; + String From = Time[1]; + Event newEvent = new Event(details, To, From); + lst.add(newEvent); + System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + lst.size() + " tasks in the list"); + } else { + throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); } - } - - else if (action.equals("mark")) { - String details = inputArr[1]; - int taskNum = Integer.parseInt(details); - Task currTask = lst.get(taskNum - 1); - currTask.mark(); - System.out.println("Nice! I've marked this task as done" + '\n' + currTask); - } - - else if (action.equals("unmark")) { - String details = inputArr[1]; - int taskNum = Integer.parseInt(details); - Task currTask = lst.get(taskNum - 1); - currTask.unMark(); - System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); - } - - else if (action.equals("todo")) { - String details = inputArr[1]; - Todo newTodo = new Todo(details); - lst.add(newTodo); - System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' +"Now you have " + lst.size() + " tasks in the list"); - } - - else if (action.equals("deadline")) { - String[] detailsAndDate = inputArr[1].split(" /by "); - String details = detailsAndDate[0]; - String date = detailsAndDate[1]; - Deadline newDeadline = new Deadline(details, date); - lst.add(newDeadline); - System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' +"Now you have " + lst.size() + " tasks in the list"); - } - - else if (action.equals("event")) { - String[] detailsAndTime = inputArr[1].split(" /from "); - String details = detailsAndTime[0]; - String[] Time = detailsAndTime[1].split(" /to "); - String To = Time[0]; - String From = Time[1]; - Event newEvent = new Event(details, To, From); - lst.add(newEvent); - System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' +"Now you have " + lst.size() + " tasks in the list"); - } - - else { // add task - Task newTask = new Task(input); - lst.add(newTask); - System.out.println("added: " + input); + } catch (DukeException e) { + System.out.println(e.getMessage()); } } diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java new file mode 100644 index 0000000000..d39c6d4e6b --- /dev/null +++ b/src/main/java/DukeException.java @@ -0,0 +1,11 @@ +public class DukeException extends Exception{ + + public DukeException(String message) { + super(message); + } + + public String getMessage() { + return super.getMessage(); + } + +} diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 657e74f6e7..0259ffbdd5 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,7 +1,11 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| - +Got it. I've added this task: +[T][ ] borrow book +Now you have 1 tasks in the list +Here are the tasks in your list: +1. [T][ ] borrow book +Got it. I've added this task: +[D][ ] return book (sunday) +Now you have 2 tasks in the list +Got it. I've added this task: +[E][ ] project meeting (from: mon 2pm to: 4pm) +Now you have 3 tasks in the list \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb2..dea479ceb4 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1,5 @@ +todo borrow book +list +deadline return book /by Sunday +event project meeting /from Mon 2pm /to 4pm + From 7214d967796815a7b3230ba973e7ceb33fafdaa5 Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Tue, 31 Jan 2023 01:44:07 +0800 Subject: [PATCH 09/44] Level 6 commit --- src/main/java/Duke.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index bd444c33a4..689e28e202 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -63,7 +63,13 @@ public static void main(String[] args) { Event newEvent = new Event(details, To, From); lst.add(newEvent); System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + lst.size() + " tasks in the list"); - } else { + } else if (action.equals("delete")) { + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + Task currTask = lst.get(taskNum - 1); + lst.remove(taskNum - 1); + System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + lst.size() + " tasks in the list"); + }else { throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); } } catch (DukeException e) { From cf92c42df76acba874ccbc4dad9defc006579926 Mon Sep 17 00:00:00 2001 From: bryanongjxairetec Date: Mon, 6 Feb 2023 18:20:45 +0800 Subject: [PATCH 10/44] Level 7 Commit --- data/duke.txt | 6 ++++ src/main/java/Duke.java | 72 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 data/duke.txt diff --git a/data/duke.txt b/data/duke.txt new file mode 100644 index 0000000000..b0e42c2d8e --- /dev/null +++ b/data/duke.txt @@ -0,0 +1,6 @@ +[T][ ] benji +[D][X] hello (6pm) +[T][X] test +[T][ ] walaaao +[D][X] walao (4fewajp) +[E][ ] hello (from: 2pm to: 5pm) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 689e28e202..5b512ee05a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,19 +1,81 @@ import java.util.*; +import java.io.File; +import java.io.IOException; +import java.io.FileWriter; +import java.io.FileNotFoundException; + public class Duke { - public static void main(String[] args) { - Scanner sc = new Scanner(System.in); + private static void writeToFile(String filePath, String text) throws IOException{ + File f = new File(filePath); + f.createNewFile(); + FileWriter fw = new FileWriter(filePath, false); + fw.write(text); + fw.close(); + } + + private static String getUpdatedList(List lst) { + String res = ""; + for (int i = 0; i < lst.size(); i ++) { + res += lst.get(i).toString(); + res += '\n'; + } + return res; + } + + public static void main(String[] args) throws FileNotFoundException { + System.out.println("Hello! I'm Duke\n"); System.out.println("What can I do for you?\n"); + /* task list */ List lst = new ArrayList<>(); + /* load duke.txt into task list */ + File f = new File("./data/duke.txt"); + Scanner scannerTxtFile = new Scanner(f); + while (scannerTxtFile.hasNext()) { + String txt = scannerTxtFile.nextLine(); + if (txt.substring(1,2).equals("T")) { + String details = txt.substring(7); + Task t = new Todo(details); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + lst.add(t); + } else if (txt.substring(1,2).equals("D")) { + String[] detailsAndDueDate = txt.substring(7).split(" \\("); + String details = detailsAndDueDate[0]; + String dueDate = detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1); + Task t = new Deadline(details, dueDate); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + lst.add(t); + } else if (txt.substring(1,2).equals("E")) { + String[] detailsAndDate = txt.substring(7).split(" \\("); + String details = detailsAndDate[0]; + String[] tmp = detailsAndDate[1].split(" to: "); + String to = tmp[1].substring(0, tmp[1].length() - 1); + String from = tmp[0].split("from: ")[1]; + Task t = new Event(details, from, to); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + lst.add(t); + } + } + scannerTxtFile.close(); + + /* take in user input */ + Scanner sc = new Scanner(System.in); while (true) { try { + String input = sc.nextLine().toLowerCase(); String[] inputArr = input.split(" ", 2); String action = inputArr[0]; @@ -72,6 +134,12 @@ public static void main(String[] args) { }else { throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); } + String updatedList = getUpdatedList(lst); + try { + writeToFile("./data/duke.txt", updatedList); + } catch (IOException e){ + System.out.println("oops!"); + } } catch (DukeException e) { System.out.println(e.getMessage()); } From 5a3100fa7a19b8a2cca3d89a846cf9b3dc778589 Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Tue, 7 Feb 2023 20:55:50 +0800 Subject: [PATCH 11/44] Revert "Level 7 Commit" This reverts commit cf92c42df76acba874ccbc4dad9defc006579926. --- data/duke.txt | 6 ---- src/main/java/Duke.java | 72 ++--------------------------------------- 2 files changed, 2 insertions(+), 76 deletions(-) delete mode 100644 data/duke.txt diff --git a/data/duke.txt b/data/duke.txt deleted file mode 100644 index b0e42c2d8e..0000000000 --- a/data/duke.txt +++ /dev/null @@ -1,6 +0,0 @@ -[T][ ] benji -[D][X] hello (6pm) -[T][X] test -[T][ ] walaaao -[D][X] walao (4fewajp) -[E][ ] hello (from: 2pm to: 5pm) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5b512ee05a..689e28e202 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,81 +1,19 @@ import java.util.*; -import java.io.File; -import java.io.IOException; -import java.io.FileWriter; -import java.io.FileNotFoundException; - public class Duke { + public static void main(String[] args) { - private static void writeToFile(String filePath, String text) throws IOException{ - File f = new File(filePath); - f.createNewFile(); - FileWriter fw = new FileWriter(filePath, false); - fw.write(text); - fw.close(); - } - - private static String getUpdatedList(List lst) { - String res = ""; - for (int i = 0; i < lst.size(); i ++) { - res += lst.get(i).toString(); - res += '\n'; - } - return res; - } - - public static void main(String[] args) throws FileNotFoundException { - + Scanner sc = new Scanner(System.in); System.out.println("Hello! I'm Duke\n"); System.out.println("What can I do for you?\n"); - /* task list */ List lst = new ArrayList<>(); - /* load duke.txt into task list */ - File f = new File("./data/duke.txt"); - Scanner scannerTxtFile = new Scanner(f); - while (scannerTxtFile.hasNext()) { - String txt = scannerTxtFile.nextLine(); - if (txt.substring(1,2).equals("T")) { - String details = txt.substring(7); - Task t = new Todo(details); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - lst.add(t); - } else if (txt.substring(1,2).equals("D")) { - String[] detailsAndDueDate = txt.substring(7).split(" \\("); - String details = detailsAndDueDate[0]; - String dueDate = detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1); - Task t = new Deadline(details, dueDate); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - lst.add(t); - } else if (txt.substring(1,2).equals("E")) { - String[] detailsAndDate = txt.substring(7).split(" \\("); - String details = detailsAndDate[0]; - String[] tmp = detailsAndDate[1].split(" to: "); - String to = tmp[1].substring(0, tmp[1].length() - 1); - String from = tmp[0].split("from: ")[1]; - Task t = new Event(details, from, to); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - lst.add(t); - } - } - scannerTxtFile.close(); - - /* take in user input */ - Scanner sc = new Scanner(System.in); while (true) { try { - String input = sc.nextLine().toLowerCase(); String[] inputArr = input.split(" ", 2); String action = inputArr[0]; @@ -134,12 +72,6 @@ public static void main(String[] args) throws FileNotFoundException { }else { throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); } - String updatedList = getUpdatedList(lst); - try { - writeToFile("./data/duke.txt", updatedList); - } catch (IOException e){ - System.out.println("oops!"); - } } catch (DukeException e) { System.out.println(e.getMessage()); } From 58a445a560d54f99afffe90f839682d533fd2716 Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Tue, 7 Feb 2023 21:27:45 +0800 Subject: [PATCH 12/44] added date feature --- data/duke.txt | 3 +-- src/main/java/Deadline.java | 9 ++++++--- src/main/java/Duke.java | 13 ++++++++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/data/duke.txt b/data/duke.txt index b0e42c2d8e..99de416904 100644 --- a/data/duke.txt +++ b/data/duke.txt @@ -1,6 +1,5 @@ [T][ ] benji -[D][X] hello (6pm) [T][X] test [T][ ] walaaao -[D][X] walao (4fewajp) [E][ ] hello (from: 2pm to: 5pm) +[D][ ] hello (02/01/2019) diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index b2c31eaa11..bc393ac2f1 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,13 +1,16 @@ +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + public class Deadline extends Task{ - String dueDate; - public Deadline(String description, String dueDate) { + LocalDate dueDate; + public Deadline(String description, LocalDate dueDate) { super(description); this.dueDate = dueDate; } @Override public String toString() { - return "[D]" + super.toString() + " (" + this.dueDate + ')'; + return "[D]" + super.toString() + " (" + this.dueDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) + ')'; } } diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5b512ee05a..e47f43a567 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,9 +1,13 @@ +import java.time.format.DateTimeFormatter; import java.util.*; import java.io.File; import java.io.IOException; import java.io.FileWriter; import java.io.FileNotFoundException; +import java.time.LocalDate; +import java.time.format.DateTimeParseException; + public class Duke { @@ -48,7 +52,8 @@ public static void main(String[] args) throws FileNotFoundException { } else if (txt.substring(1,2).equals("D")) { String[] detailsAndDueDate = txt.substring(7).split(" \\("); String details = detailsAndDueDate[0]; - String dueDate = detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); Task t = new Deadline(details, dueDate); if (txt.substring(4, 5).equals("X")) { t.mark(); @@ -112,7 +117,7 @@ public static void main(String[] args) throws FileNotFoundException { } else if (action.equals("deadline")) { String[] detailsAndDate = inputArr[1].split(" /by "); String details = detailsAndDate[0]; - String date = detailsAndDate[1]; + LocalDate date = LocalDate.parse(detailsAndDate[1]); Deadline newDeadline = new Deadline(details, date); lst.add(newDeadline); System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + lst.size() + " tasks in the list"); @@ -141,7 +146,9 @@ public static void main(String[] args) throws FileNotFoundException { System.out.println("oops!"); } } catch (DukeException e) { - System.out.println(e.getMessage()); + System.out.println(e.getMessage()); + } catch (DateTimeParseException e) { + System.out.println("Date format should be in YYYY-MM-DD!"); } } From 1b624008279ac9fee32b79834c3b22ceb9ed7653 Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Mon, 13 Feb 2023 14:54:23 +0800 Subject: [PATCH 13/44] Added classes Parser, Storage, TaskList and Ui --- data/duke.txt | 4 + src/main/java/Duke.java | 141 ++++++++---------------------------- src/main/java/Parser.java | 52 +++++++++++++ src/main/java/Storage.java | 75 +++++++++++++++++++ src/main/java/TaskList.java | 85 ++++++++++++++++++++++ src/main/java/Ui.java | 16 ++++ 6 files changed, 262 insertions(+), 111 deletions(-) create mode 100644 src/main/java/Parser.java create mode 100644 src/main/java/Storage.java create mode 100644 src/main/java/TaskList.java create mode 100644 src/main/java/Ui.java diff --git a/data/duke.txt b/data/duke.txt index 99de416904..29cb94043e 100644 --- a/data/duke.txt +++ b/data/duke.txt @@ -3,3 +3,7 @@ [T][ ] walaaao [E][ ] hello (from: 2pm to: 5pm) [D][ ] hello (02/01/2019) +[T][ ] hello +[E][ ] hello (from: 6pm to: 5pm) +[T][ ] test2 +[D][ ] test2 (01/01/2015) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 165ea2e027..bccaa829e6 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,133 +1,52 @@ -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.io.File; -import java.io.IOException; -import java.io.FileWriter; import java.io.FileNotFoundException; - -import java.time.LocalDate; +import java.io.IOException; +import java.util.*; import java.time.format.DateTimeParseException; public class Duke { - public static void main(String[] args) throws FileNotFoundException { - - System.out.println("Hello! I'm Duke\n"); - System.out.println("What can I do for you?\n"); - - List lst = new ArrayList<>(); - - /* load duke.txt into task list */ - File f = new File("./data/duke.txt"); - Scanner scannerTxtFile = new Scanner(f); - while (scannerTxtFile.hasNext()) { - String txt = scannerTxtFile.nextLine(); - if (txt.substring(1,2).equals("T")) { - String details = txt.substring(7); - Task t = new Todo(details); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - lst.add(t); - } else if (txt.substring(1,2).equals("D")) { - String[] detailsAndDueDate = txt.substring(7).split(" \\("); - String details = detailsAndDueDate[0]; - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); - LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); - Task t = new Deadline(details, dueDate); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - lst.add(t); - } else if (txt.substring(1,2).equals("E")) { - String[] detailsAndDate = txt.substring(7).split(" \\("); - String details = detailsAndDate[0]; - String[] tmp = detailsAndDate[1].split(" to: "); - String to = tmp[1].substring(0, tmp[1].length() - 1); - String from = tmp[0].split("from: ")[1]; - Task t = new Event(details, from, to); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - lst.add(t); - } + private Storage storage; + private TaskList tasks; + private Ui ui; + + public Duke(String filePath) { + ui = new Ui(); + storage = new Storage(filePath); + try { + tasks = new TaskList(storage.load()); + } catch (DukeException e) { + ui.showLoadingError(); + tasks = new TaskList(); } - scannerTxtFile.close(); - /* take in user input */ - Scanner sc = new Scanner(System.in); + } + public void run() { + ui.greet(); + Scanner sc = new Scanner(System.in); while (true) { try { - String input = sc.nextLine().toLowerCase(); - String[] inputArr = input.split(" ", 2); - String action = inputArr[0]; - - if (action.equals("bye")) { - System.out.println("Bye. Hope to see you again soon!"); - return; - } else if (action.equals("list")) { // list - System.out.println("Here are the tasks in your list:"); - for (int i = 1; i <= lst.size(); i++) { - System.out.println(i + ". " + lst.get(i - 1)); - } - } else if (action.equals("mark")) { - String details = inputArr[1]; - int taskNum = Integer.parseInt(details); - Task currTask = lst.get(taskNum - 1); - currTask.mark(); - System.out.println("Nice! I've marked this task as done" + '\n' + currTask); - } else if (action.equals("unmark")) { - String details = inputArr[1]; - int taskNum = Integer.parseInt(details); - Task currTask = lst.get(taskNum - 1); - currTask.unMark(); - System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); - } else if (action.equals("todo")) { - String[] actionAndDetails = input.split(" ", 2); - if (actionAndDetails.length == 1) { - throw new DukeException("OOPS!!! The description of a todo cannot be empty."); - } - String details = actionAndDetails[1]; - Todo newTodo = new Todo(details); - lst.add(newTodo); - System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " + lst.size() + " tasks in the list"); - } else if (action.equals("deadline")) { - String[] detailsAndDate = inputArr[1].split(" /by "); - String details = detailsAndDate[0]; - LocalDate date = LocalDate.parse(detailsAndDate[1]); - Deadline newDeadline = new Deadline(details, date); - lst.add(newDeadline); - System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + lst.size() + " tasks in the list"); - } else if (action.equals("event")) { - String[] detailsAndTime = inputArr[1].split(" /from "); - String details = detailsAndTime[0]; - String[] Time = detailsAndTime[1].split(" /to "); - String To = Time[0]; - String From = Time[1]; - Event newEvent = new Event(details, To, From); - lst.add(newEvent); - System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + lst.size() + " tasks in the list"); - } else if (action.equals("delete")) { - String details = inputArr[1]; - int taskNum = Integer.parseInt(details); - Task currTask = lst.get(taskNum - 1); - lst.remove(taskNum - 1); - System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + lst.size() + " tasks in the list"); - }else { - throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); + String input = sc.nextLine(); + if (input.equals("bye")) { + Parser.parse(input,tasks); + break; } + Parser.parse(input, tasks); + storage.save(tasks); } catch (DukeException e) { System.out.println(e.getMessage()); - } catch (DateTimeParseException e) { - System.out.println("Date format should be in YYYY-MM-DD!"); } - } } + public static void main(String[] args) throws FileNotFoundException { + + new Duke("./data/duke.txt").run(); + + } + } diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java new file mode 100644 index 0000000000..6dcdd8fd33 --- /dev/null +++ b/src/main/java/Parser.java @@ -0,0 +1,52 @@ +public class Parser { + private static Ui ui = new Ui(); + + public static void parse(String userInput, TaskList lst) throws DukeException { + + String[] inputArr = userInput.split(" ", 2); + + if (userInput.equals("bye")) { + ui.exit(); + } else if (userInput.equals("list")) { + + lst.printTaskList(); + + } else if (userInput.startsWith("mark")) { + + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + lst.markTask(taskNum); + + } else if (userInput.startsWith("unmark")) { + + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + lst.unmarkTask(taskNum); + + } else if (userInput.startsWith("todo")) { + + String details = inputArr[1]; + lst.addTask(details, "todo"); + + } else if (userInput.startsWith("deadline")) { + + String details = inputArr[1]; + lst.addTask(details, "deadline"); + + } else if (userInput.startsWith("event")) { + + String details = inputArr[1]; + lst.addTask(details, "event"); + + } else if (userInput.startsWith("delete")) { + + String details = inputArr[1]; + int taskNum = Integer.parseInt(details); + lst.deleteTask(taskNum); + + } else { + throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); + } + } +} + diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java new file mode 100644 index 0000000000..ca8aa39df5 --- /dev/null +++ b/src/main/java/Storage.java @@ -0,0 +1,75 @@ +import java.util.Scanner; +import java.util.ArrayList; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +public class Storage { + String filePath; + ArrayList loadedTasks = new ArrayList<>(); + + public Storage (String filePath) { + this.filePath = filePath; + } + + public ArrayList load() throws DukeException { + File f = new File(filePath); + try { + Scanner scannerTxtFile = new Scanner(f); + while (scannerTxtFile.hasNext()) { + String txt = scannerTxtFile.nextLine(); + if (txt.substring(1, 2).equals("T")) { + String details = txt.substring(7); + Task t = new Todo(details); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + loadedTasks.add(t); + } else if (txt.substring(1, 2).equals("D")) { + String[] detailsAndDueDate = txt.substring(7).split(" \\("); + String details = detailsAndDueDate[0]; + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); + Task t = new Deadline(details, dueDate); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + loadedTasks.add(t); + } else if (txt.substring(1, 2).equals("E")) { + String[] detailsAndDate = txt.substring(7).split(" \\("); + String details = detailsAndDate[0]; + String[] tmp = detailsAndDate[1].split(" to: "); + String to = tmp[1].substring(0, tmp[1].length() - 1); + String from = tmp[0].split("from: ")[1]; + Task t = new Event(details, from, to); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + loadedTasks.add(t); + } + } + scannerTxtFile.close(); + } catch (FileNotFoundException e) { + System.out.println("File could not be found"); + } + + return this.loadedTasks; + } + + public void save(TaskList tasks) throws DukeException { + try { + File f = new File(filePath); + f.createNewFile(); + FileWriter fw = new FileWriter(filePath, false); + fw.write(tasks.tasksToStringFormat()); + fw.close(); + } catch (IOException e) { + System.out.println("error writing into file"); + } + } +} \ No newline at end of file diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java new file mode 100644 index 0000000000..e6b3dfca6a --- /dev/null +++ b/src/main/java/TaskList.java @@ -0,0 +1,85 @@ +import java.io.IOException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.time.format.DateTimeParseException; + +public class TaskList { + private ArrayList tasks = new ArrayList<>(); + + public TaskList (ArrayList tasks) { + for (Task t : tasks) { + this.tasks.add(t); + } + } + + public TaskList () { + + } + public void addTask(String details, String taskType) { + if (taskType.equals("todo")) { + try { + if (details.equals("")) { + throw new DukeException("OOPS!!! The description of a todo cannot be empty."); + } + Todo newTodo = new Todo(details); + tasks.add(newTodo); + System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + } catch (DukeException e) { + System.out.println(e.getMessage()); + } + } else if (taskType.equals("deadline")) { + try { + String[] detailsAndDate = details.split(" /by "); + String description = detailsAndDate[0]; + LocalDate date = LocalDate.parse(detailsAndDate[1]); + Deadline newDeadline = new Deadline(description, date); + tasks.add(newDeadline); + System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + } catch (DateTimeParseException e) { + System.out.println("Please input date in YYYY-MM-DD format!"); + } + } else if (taskType.equals("event")) { + String[] detailsAndTime = details.split(" /from "); + String description = detailsAndTime[0]; + String[] Time = detailsAndTime[1].split(" /to "); + String To = Time[0]; + String From = Time[1]; + Event newEvent = new Event(description, To, From); + tasks.add(newEvent); + System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + } + } + public void printTaskList() { + System.out.println("Here are the tasks in your list:"); + for (int i = 1; i <= tasks.size(); i++) { + System.out.println(i + ". " + tasks.get(i - 1)); + } + } + + public void markTask (int index) { + Task currTask = tasks.get(index - 1); + currTask.mark(); + System.out.println("Nice! I've marked this task as done" + '\n' + currTask); + } + + public void unmarkTask (int index) { + Task currTask = tasks.get(index - 1); + currTask.unMark(); + System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); + } + + public void deleteTask (int index) { + Task currTask = tasks.get(index - 1); + tasks.remove(index - 1); + System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + } + + public String tasksToStringFormat() { + String res = ""; + for (int i = 0; i < tasks.size(); i ++) { + res += tasks.get(i).toString(); + res += '\n'; + } + return res; + } +} diff --git a/src/main/java/Ui.java b/src/main/java/Ui.java new file mode 100644 index 0000000000..224a8ab95c --- /dev/null +++ b/src/main/java/Ui.java @@ -0,0 +1,16 @@ +public class Ui { + + + + public void greet() { + System.out.println("Hello! I'm Duke" + "\n" + "What can I do for you?"); + } + + public void exit() { + System.out.println("Bye. Hope to see you again soon!"); + } + + public void showLoadingError() { + System.out.println("There was an error in loading your file"); + } +} From 7f63b95d6cfe81ddff65cba148fac4d99a3cd133 Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Mon, 13 Feb 2023 15:54:42 +0800 Subject: [PATCH 14/44] Moved classes to a single packed "duke" --- src/main/java/{ => duke}/Deadline.java | 2 ++ src/main/java/{ => duke}/Duke.java | 8 ++------ src/main/java/{ => duke}/DukeException.java | 2 ++ src/main/java/{ => duke}/Event.java | 2 ++ src/main/java/{ => duke}/Parser.java | 2 ++ src/main/java/{ => duke}/Storage.java | 1 + src/main/java/{ => duke}/Task.java | 3 +-- src/main/java/{ => duke}/TaskList.java | 3 ++- src/main/java/{ => duke}/Todo.java | 2 ++ src/main/java/{ => duke}/Ui.java | 1 + 10 files changed, 17 insertions(+), 9 deletions(-) rename src/main/java/{ => duke}/Deadline.java (96%) rename src/main/java/{ => duke}/Duke.java (83%) rename src/main/java/{ => duke}/DukeException.java (92%) rename src/main/java/{ => duke}/Event.java (95%) rename src/main/java/{ => duke}/Parser.java (98%) rename src/main/java/{ => duke}/Storage.java (99%) rename src/main/java/{ => duke}/Task.java (96%) rename src/main/java/{ => duke}/TaskList.java (99%) rename src/main/java/{ => duke}/Todo.java (93%) rename src/main/java/{ => duke}/Ui.java (96%) diff --git a/src/main/java/Deadline.java b/src/main/java/duke/Deadline.java similarity index 96% rename from src/main/java/Deadline.java rename to src/main/java/duke/Deadline.java index bc393ac2f1..15d203396b 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -1,3 +1,5 @@ +package duke; + import java.time.LocalDate; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/Duke.java b/src/main/java/duke/Duke.java similarity index 83% rename from src/main/java/Duke.java rename to src/main/java/duke/Duke.java index bccaa829e6..c3ad13d62c 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,9 +1,5 @@ -import java.io.FileNotFoundException; -import java.io.IOException; +package duke; import java.util.*; -import java.time.format.DateTimeParseException; - - public class Duke { @@ -42,7 +38,7 @@ public void run() { } } - public static void main(String[] args) throws FileNotFoundException { + public static void main(String[] args) { new Duke("./data/duke.txt").run(); diff --git a/src/main/java/DukeException.java b/src/main/java/duke/DukeException.java similarity index 92% rename from src/main/java/DukeException.java rename to src/main/java/duke/DukeException.java index d39c6d4e6b..32cf2aa4a9 100644 --- a/src/main/java/DukeException.java +++ b/src/main/java/duke/DukeException.java @@ -1,3 +1,5 @@ +package duke; + public class DukeException extends Exception{ public DukeException(String message) { diff --git a/src/main/java/Event.java b/src/main/java/duke/Event.java similarity index 95% rename from src/main/java/Event.java rename to src/main/java/duke/Event.java index 7eced4c9d8..6b406f2f8b 100644 --- a/src/main/java/Event.java +++ b/src/main/java/duke/Event.java @@ -1,3 +1,5 @@ +package duke; + public class Event extends Task { String From; diff --git a/src/main/java/Parser.java b/src/main/java/duke/Parser.java similarity index 98% rename from src/main/java/Parser.java rename to src/main/java/duke/Parser.java index 6dcdd8fd33..db48a48214 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/duke/Parser.java @@ -1,3 +1,5 @@ +package duke; + public class Parser { private static Ui ui = new Ui(); diff --git a/src/main/java/Storage.java b/src/main/java/duke/Storage.java similarity index 99% rename from src/main/java/Storage.java rename to src/main/java/duke/Storage.java index ca8aa39df5..d43e303610 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/duke/Storage.java @@ -1,3 +1,4 @@ +package duke; import java.util.Scanner; import java.util.ArrayList; diff --git a/src/main/java/Task.java b/src/main/java/duke/Task.java similarity index 96% rename from src/main/java/Task.java rename to src/main/java/duke/Task.java index 1a4bf712cc..57240b7939 100644 --- a/src/main/java/Task.java +++ b/src/main/java/duke/Task.java @@ -1,5 +1,4 @@ -import java.util.*; - +package duke; public class Task { protected String description; protected boolean isDone; diff --git a/src/main/java/TaskList.java b/src/main/java/duke/TaskList.java similarity index 99% rename from src/main/java/TaskList.java rename to src/main/java/duke/TaskList.java index e6b3dfca6a..efc1e4af1d 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -1,4 +1,5 @@ -import java.io.IOException; +package duke; + import java.time.LocalDate; import java.util.ArrayList; import java.time.format.DateTimeParseException; diff --git a/src/main/java/Todo.java b/src/main/java/duke/Todo.java similarity index 93% rename from src/main/java/Todo.java rename to src/main/java/duke/Todo.java index 931cfd4f9e..402f6766e9 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/duke/Todo.java @@ -1,3 +1,5 @@ +package duke; + public class Todo extends Task { public Todo(String description) { diff --git a/src/main/java/Ui.java b/src/main/java/duke/Ui.java similarity index 96% rename from src/main/java/Ui.java rename to src/main/java/duke/Ui.java index 224a8ab95c..cc6c5b3a8e 100644 --- a/src/main/java/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,3 +1,4 @@ +package duke; public class Ui { From 3b342e4e7eb0bf1a74bf3b73af14cf1ead2182dc Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Mon, 13 Feb 2023 16:07:04 +0800 Subject: [PATCH 15/44] Add gradle files --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 885198fcfa..0bdc254568 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClassName = "duke.Duke" } shadowJar { From 66cf00517a6d1d46578729fc435281ffc35b45cc Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Mon, 13 Feb 2023 18:34:30 +0800 Subject: [PATCH 16/44] add JUnit Testing (for addition of todo, events and deadlines) --- src/main/java/duke/TaskList.java | 1 + src/test/java/duke/DeadlineTest.java | 13 +++++++++++++ src/test/java/duke/EventTest.java | 14 ++++++++++++++ src/test/java/duke/ToDoTest.java | 13 +++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 src/test/java/duke/DeadlineTest.java create mode 100644 src/test/java/duke/EventTest.java create mode 100644 src/test/java/duke/ToDoTest.java diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index efc1e4af1d..c07bad9ae5 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -78,6 +78,7 @@ public void deleteTask (int index) { public String tasksToStringFormat() { String res = ""; for (int i = 0; i < tasks.size(); i ++) { + res += Integer.toString(i + 1) + ". "; res += tasks.get(i).toString(); res += '\n'; } diff --git a/src/test/java/duke/DeadlineTest.java b/src/test/java/duke/DeadlineTest.java new file mode 100644 index 0000000000..8787b2fe6a --- /dev/null +++ b/src/test/java/duke/DeadlineTest.java @@ -0,0 +1,13 @@ +package duke; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class DeadlineTest { + @Test + public void TestAdditionOfDeadlineToTaskList() { + TaskList tasks = new TaskList(); + tasks.addTask("test task /by 2023-01-02", "deadline"); + assertEquals("1. [D][ ] test task (02/01/2023)\n", tasks.tasksToStringFormat()); + } +} diff --git a/src/test/java/duke/EventTest.java b/src/test/java/duke/EventTest.java new file mode 100644 index 0000000000..5e0d986061 --- /dev/null +++ b/src/test/java/duke/EventTest.java @@ -0,0 +1,14 @@ +package duke; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EventTest { + @Test + public void TestAdditionOfEventToTaskList() { + TaskList tasks = new TaskList(); + tasks.addTask("test task /from 2pm /to 6pm", "event"); + assertEquals("1. [E][ ] test task (from: 2pm to: 6pm)\n", tasks.tasksToStringFormat()); + } + +} diff --git a/src/test/java/duke/ToDoTest.java b/src/test/java/duke/ToDoTest.java new file mode 100644 index 0000000000..eed3a35b68 --- /dev/null +++ b/src/test/java/duke/ToDoTest.java @@ -0,0 +1,13 @@ +package duke; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ToDoTest { + @Test + public void TestAdditionOfToDoToTaskList() { + TaskList tasks = new TaskList(); + tasks.addTask("test task", "todo"); + assertEquals("1. [T][ ] test task\n", tasks.tasksToStringFormat()); + } +} \ No newline at end of file From 7304d67b04125d6dbd5a9362c46292a702937d48 Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Tue, 14 Feb 2023 00:11:45 +0800 Subject: [PATCH 17/44] Added java docs --- data/duke.txt | 9 --- src/main/java/META-INF/MANIFEST.MF | 3 + src/main/java/duke/Deadline.java | 17 ++++- src/main/java/duke/Duke.java | 10 +++ src/main/java/duke/DukeException.java | 11 +++ src/main/java/duke/Event.java | 15 +++++ src/main/java/duke/Parser.java | 9 +++ src/main/java/duke/Storage.java | 97 +++++++++++++++++---------- src/main/java/duke/Task.java | 26 +++++++ src/main/java/duke/TaskList.java | 36 ++++++++++ src/main/java/duke/Todo.java | 12 ++++ src/main/java/duke/Ui.java | 15 ++++- 12 files changed, 212 insertions(+), 48 deletions(-) create mode 100644 src/main/java/META-INF/MANIFEST.MF diff --git a/data/duke.txt b/data/duke.txt index 29cb94043e..e69de29bb2 100644 --- a/data/duke.txt +++ b/data/duke.txt @@ -1,9 +0,0 @@ -[T][ ] benji -[T][X] test -[T][ ] walaaao -[E][ ] hello (from: 2pm to: 5pm) -[D][ ] hello (02/01/2019) -[T][ ] hello -[E][ ] hello (from: 6pm to: 5pm) -[T][ ] test2 -[D][ ] test2 (01/01/2015) diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..2c9a9745c5 --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: duke.Duke + diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index 15d203396b..4b1c5f231f 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -3,14 +3,27 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; -public class Deadline extends Task{ - +/** + * Deadline class + */ +public class Deadline extends Task { LocalDate dueDate; + + /** + * Constructor for instantiating a deadline object + * @param description description of the event + * @param dueDate due date of the event + */ public Deadline(String description, LocalDate dueDate) { super(description); this.dueDate = dueDate; } + /** + * Returns the string representation of the deadline object + * @return String string representation of the deadline, which includes type of task, completion status, task + * description and due date + */ @Override public String toString() { return "[D]" + super.toString() + " (" + this.dueDate.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) + ')'; diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index c3ad13d62c..3c7c48f40f 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,12 +1,19 @@ package duke; import java.util.*; +/** + * Duke class + */ public class Duke { private Storage storage; private TaskList tasks; private Ui ui; + /** + * Constructor for duke + * @param filePath file path of existing txt file with tasks stored inside + */ public Duke(String filePath) { ui = new Ui(); storage = new Storage(filePath); @@ -19,6 +26,9 @@ public Duke(String filePath) { } + /** + * Runs the duke programme + */ public void run() { ui.greet(); Scanner sc = new Scanner(System.in); diff --git a/src/main/java/duke/DukeException.java b/src/main/java/duke/DukeException.java index 32cf2aa4a9..1074413926 100644 --- a/src/main/java/duke/DukeException.java +++ b/src/main/java/duke/DukeException.java @@ -1,11 +1,22 @@ package duke; +/** + * DukeException class thrown by Duke application + */ public class DukeException extends Exception{ + /** + * Constructor for instantiating a DukeException object + * @param message error message to be displayed + */ public DukeException(String message) { super(message); } + /** + * Returns error message + * @return String error message + */ public String getMessage() { return super.getMessage(); } diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index 6b406f2f8b..4370d04a5f 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -1,15 +1,30 @@ package duke; +/** + * Event class + */ public class Event extends Task { String From; String To; + + /** + * constructor for an instantiating an event object + * @param description description of the event + * @param From start time of the event + * @param To end time of the event + */ public Event(String description, String From, String To) { super(description); this.From = From; this.To = To; } + /** + * Returns the string representation of the event object + * @return String string representation of the event object, which includes task type, completion status, from date + * and to date + */ @Override public String toString() { return "[E]" + super.toString() + " (from: " + this.From + " to: " + this.To + ")"; diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index db48a48214..60d723cd02 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -1,8 +1,17 @@ package duke; +/** + * Parser class + */ public class Parser { private static Ui ui = new Ui(); + /** + * Parses the user's input and executes the corresponding actions + * @param userInput user's input + * @param lst user's task list + * @throws DukeException + */ public static void parse(String userInput, TaskList lst) throws DukeException { String[] inputArr = userInput.split(" ", 2); diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index d43e303610..26a97e92ea 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -10,58 +10,85 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; +/** + * Storage class + */ public class Storage { String filePath; ArrayList loadedTasks = new ArrayList<>(); + /** + * Constructor for instantiating a Storage object + * @param filePath + */ public Storage (String filePath) { this.filePath = filePath; } + /** + * Loads the file at the specified file path into the storage object + * @return ArrayList an arraylist of tasks loaded from the file + * @throws DukeException + */ public ArrayList load() throws DukeException { File f = new File(filePath); - try { - Scanner scannerTxtFile = new Scanner(f); - while (scannerTxtFile.hasNext()) { - String txt = scannerTxtFile.nextLine(); - if (txt.substring(1, 2).equals("T")) { - String details = txt.substring(7); - Task t = new Todo(details); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - loadedTasks.add(t); - } else if (txt.substring(1, 2).equals("D")) { - String[] detailsAndDueDate = txt.substring(7).split(" \\("); - String details = detailsAndDueDate[0]; - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); - LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); - Task t = new Deadline(details, dueDate); - if (txt.substring(4, 5).equals("X")) { - t.mark(); - } - loadedTasks.add(t); - } else if (txt.substring(1, 2).equals("E")) { - String[] detailsAndDate = txt.substring(7).split(" \\("); - String details = detailsAndDate[0]; - String[] tmp = detailsAndDate[1].split(" to: "); - String to = tmp[1].substring(0, tmp[1].length() - 1); - String from = tmp[0].split("from: ")[1]; - Task t = new Event(details, from, to); - if (txt.substring(4, 5).equals("X")) { - t.mark(); + if (f.exists()) { + try { + Scanner scannerTxtFile = new Scanner(f); + while (scannerTxtFile.hasNext()) { + String txt = scannerTxtFile.nextLine(); + if (txt.substring(1, 2).equals("T")) { + String details = txt.substring(7); + Task t = new Todo(details); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + loadedTasks.add(t); + } else if (txt.substring(1, 2).equals("D")) { + String[] detailsAndDueDate = txt.substring(7).split(" \\("); + String details = detailsAndDueDate[0]; + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); + Task t = new Deadline(details, dueDate); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + loadedTasks.add(t); + } else if (txt.substring(1, 2).equals("E")) { + String[] detailsAndDate = txt.substring(7).split(" \\("); + String details = detailsAndDate[0]; + String[] tmp = detailsAndDate[1].split(" to: "); + String to = tmp[1].substring(0, tmp[1].length() - 1); + String from = tmp[0].split("from: ")[1]; + Task t = new Event(details, from, to); + if (txt.substring(4, 5).equals("X")) { + t.mark(); + } + loadedTasks.add(t); } - loadedTasks.add(t); } + scannerTxtFile.close(); + } catch (FileNotFoundException e) { + System.out.println("File could not be found"); + } + } else { + try { + File data = new File("./data"); + File f_new = new File(filePath); + data.mkdir(); + f_new.createNewFile(); + } catch (IOException e) { + System.out.println("Error creating file"); } - scannerTxtFile.close(); - } catch (FileNotFoundException e) { - System.out.println("File could not be found"); } - return this.loadedTasks; } + /** + * Takes the input task list and updates the task list in the storage + * @param tasks updated task list + * @throws DukeException + */ public void save(TaskList tasks) throws DukeException { try { File f = new File(filePath); diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index 57240b7939..0a33b43c0d 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -1,29 +1,55 @@ package duke; + +/** + * Task class + */ public class Task { protected String description; protected boolean isDone; + /** + * Constructor for instantiating a Task object + * @param description description of the task + */ public Task(String description) { this.description = description; this.isDone = false; } + /** + * Returns the completion status of the task + * @return String completion status + */ public String getStatusIcon() { return (isDone ? "X": " "); } + /** + * Returns the description of the task + * @return String description + */ public String getDescription() { return this.description; } + /** + * Marks the task as done + */ public void mark() { this.isDone = true; } + /** + * Marks the task as not done + */ public void unMark() { this.isDone = false; } + /** + * Returns the string representation of a Task + * @return String string representation of a task, which includes completion status and description + */ @Override public String toString() { return "[" + this.getStatusIcon() + "] " + this.description; diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index efc1e4af1d..8444ca1454 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -4,18 +4,34 @@ import java.util.ArrayList; import java.time.format.DateTimeParseException; +/** + * Task List class + */ public class TaskList { private ArrayList tasks = new ArrayList<>(); + /** + * Constructor for instantiating a task list + * @param tasks array of tasks to be added to the task list + */ public TaskList (ArrayList tasks) { for (Task t : tasks) { this.tasks.add(t); } } + /** + * Constructor for instantiating an empty task list + */ public TaskList () { } + + /** + * Adds a task to the task list + * @param details details of the task + * @param taskType type of task to be added (todo, deadline, event) + */ public void addTask(String details, String taskType) { if (taskType.equals("todo")) { try { @@ -50,6 +66,10 @@ public void addTask(String details, String taskType) { System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + tasks.size() + " tasks in the list"); } } + + /** + * Console logs the task list + */ public void printTaskList() { System.out.println("Here are the tasks in your list:"); for (int i = 1; i <= tasks.size(); i++) { @@ -57,24 +77,40 @@ public void printTaskList() { } } + /** + * Marks a specific task as done + * @param index index of task to be marked as done + */ public void markTask (int index) { Task currTask = tasks.get(index - 1); currTask.mark(); System.out.println("Nice! I've marked this task as done" + '\n' + currTask); } + /** + * Marks a specific task as not done + * @param index index of task to be marked as not done + */ public void unmarkTask (int index) { Task currTask = tasks.get(index - 1); currTask.unMark(); System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); } + /** + * Deletes a task from the task list + * @param index index of task to be deleted + */ public void deleteTask (int index) { Task currTask = tasks.get(index - 1); tasks.remove(index - 1); System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + tasks.size() + " tasks in the list"); } + /** + * Returns a string representation of the task list + * @return String string representation of the task list + */ public String tasksToStringFormat() { String res = ""; for (int i = 0; i < tasks.size(); i ++) { diff --git a/src/main/java/duke/Todo.java b/src/main/java/duke/Todo.java index 402f6766e9..d9517abf32 100644 --- a/src/main/java/duke/Todo.java +++ b/src/main/java/duke/Todo.java @@ -1,11 +1,23 @@ package duke; +/** + * To do class + */ public class Todo extends Task { + /** + * Constructor for instantiating a to do object + * @param description description of the to do + */ public Todo(String description) { super(description); } + /** + * Returns the string representation of the to do object + * @return String string representation of the to do object, which includes task type, completion status and + * description + */ @Override public String toString() { return "[T]" + super.toString(); diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index cc6c5b3a8e..6d3628ef3c 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,16 +1,27 @@ package duke; -public class Ui { - +/** + * Ui class + */ +public class Ui { + /** + * Displays a greeting to the user when he first opens the application + */ public void greet() { System.out.println("Hello! I'm Duke" + "\n" + "What can I do for you?"); } + /** + * Displays a goodbye message to the user when he closes the application + */ public void exit() { System.out.println("Bye. Hope to see you again soon!"); } + /** + * Displays an error in loading the file + */ public void showLoadingError() { System.out.println("There was an error in loading your file"); } From a7515466aaa32639d0bd5fb3c34c3e8a3cd40c5c Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Tue, 14 Feb 2023 15:13:44 +0800 Subject: [PATCH 18/44] Edit code to comply with java coding standard --- src/main/java/duke/Duke.java | 3 ++- src/main/java/duke/Event.java | 16 ++++++++-------- src/main/java/duke/Parser.java | 2 ++ src/main/java/duke/Storage.java | 22 ++++++++++++---------- src/main/java/duke/TaskList.java | 24 ++++++++++++++---------- 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 3c7c48f40f..930b975c05 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,5 +1,6 @@ package duke; -import java.util.*; + +import java.util.Scanner; /** * Duke class diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index 4370d04a5f..09d925d550 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -5,19 +5,19 @@ */ public class Event extends Task { - String From; - String To; + String from; + String to; /** * constructor for an instantiating an event object * @param description description of the event - * @param From start time of the event - * @param To end time of the event + * @param from start time of the event + * @param to end time of the event */ - public Event(String description, String From, String To) { + public Event(String description, String from, String to) { super(description); - this.From = From; - this.To = To; + this.from = from; + this.to = to; } /** @@ -27,7 +27,7 @@ public Event(String description, String From, String To) { */ @Override public String toString() { - return "[E]" + super.toString() + " (from: " + this.From + " to: " + this.To + ")"; + return "[E]" + super.toString() + " (from: " + this.from + " to: " + this.to + ")"; } } diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 60d723cd02..c811ca2ed7 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -17,7 +17,9 @@ public static void parse(String userInput, TaskList lst) throws DukeException { String[] inputArr = userInput.split(" ", 2); if (userInput.equals("bye")) { + ui.exit(); + } else if (userInput.equals("list")) { lst.printTaskList(); diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 26a97e92ea..84cb1b6142 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -1,10 +1,11 @@ package duke; + import java.util.Scanner; import java.util.ArrayList; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileWriter; +import java.io.FileNotFoundException; import java.io.IOException; import java.time.LocalDate; @@ -19,9 +20,9 @@ public class Storage { /** * Constructor for instantiating a Storage object - * @param filePath + * @param filePath path of file to save the storage in */ - public Storage (String filePath) { + public Storage(String filePath) { this.filePath = filePath; } @@ -37,31 +38,32 @@ public ArrayList load() throws DukeException { Scanner scannerTxtFile = new Scanner(f); while (scannerTxtFile.hasNext()) { String txt = scannerTxtFile.nextLine(); - if (txt.substring(1, 2).equals("T")) { + if (txt.charAt(1) == 'T') { String details = txt.substring(7); Task t = new Todo(details); - if (txt.substring(4, 5).equals("X")) { + if (txt.charAt(4) == 'X') { t.mark(); } loadedTasks.add(t); - } else if (txt.substring(1, 2).equals("D")) { + } else if (txt.charAt(1) == 'D') { String[] detailsAndDueDate = txt.substring(7).split(" \\("); String details = detailsAndDueDate[0]; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); - LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1].substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); + LocalDate dueDate = LocalDate.parse(detailsAndDueDate[1] + .substring(0, detailsAndDueDate[1].length() - 1), dateFormatter); Task t = new Deadline(details, dueDate); - if (txt.substring(4, 5).equals("X")) { + if (txt.charAt(4) == 'X') { t.mark(); } loadedTasks.add(t); - } else if (txt.substring(1, 2).equals("E")) { + } else if (txt.charAt(1) == 'E') { String[] detailsAndDate = txt.substring(7).split(" \\("); String details = detailsAndDate[0]; String[] tmp = detailsAndDate[1].split(" to: "); String to = tmp[1].substring(0, tmp[1].length() - 1); String from = tmp[0].split("from: ")[1]; Task t = new Event(details, from, to); - if (txt.substring(4, 5).equals("X")) { + if (txt.charAt(4) == 'X') { t.mark(); } loadedTasks.add(t); diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index a16ee38fed..56763caa50 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -8,13 +8,14 @@ * Task List class */ public class TaskList { - private ArrayList tasks = new ArrayList<>(); + private ArrayList tasks; /** * Constructor for instantiating a task list * @param tasks array of tasks to be added to the task list */ - public TaskList (ArrayList tasks) { + public TaskList(ArrayList tasks) { + this.tasks = new ArrayList<>(); for (Task t : tasks) { this.tasks.add(t); } @@ -23,8 +24,8 @@ public TaskList (ArrayList tasks) { /** * Constructor for instantiating an empty task list */ - public TaskList () { - + public TaskList() { + this.tasks = new ArrayList<>(); } /** @@ -40,7 +41,8 @@ public void addTask(String details, String taskType) { } Todo newTodo = new Todo(details); tasks.add(newTodo); - System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " + + tasks.size() + " tasks in the list"); } catch (DukeException e) { System.out.println(e.getMessage()); } @@ -51,7 +53,8 @@ public void addTask(String details, String taskType) { LocalDate date = LocalDate.parse(detailsAndDate[1]); Deadline newDeadline = new Deadline(description, date); tasks.add(newDeadline); - System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + + tasks.size() + " tasks in the list"); } catch (DateTimeParseException e) { System.out.println("Please input date in YYYY-MM-DD format!"); } @@ -63,7 +66,8 @@ public void addTask(String details, String taskType) { String From = Time[1]; Event newEvent = new Event(description, To, From); tasks.add(newEvent); - System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + + tasks.size() + " tasks in the list"); } } @@ -81,7 +85,7 @@ public void printTaskList() { * Marks a specific task as done * @param index index of task to be marked as done */ - public void markTask (int index) { + public void markTask(int index) { Task currTask = tasks.get(index - 1); currTask.mark(); System.out.println("Nice! I've marked this task as done" + '\n' + currTask); @@ -91,7 +95,7 @@ public void markTask (int index) { * Marks a specific task as not done * @param index index of task to be marked as not done */ - public void unmarkTask (int index) { + public void unmarkTask(int index) { Task currTask = tasks.get(index - 1); currTask.unMark(); System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); @@ -101,7 +105,7 @@ public void unmarkTask (int index) { * Deletes a task from the task list * @param index index of task to be deleted */ - public void deleteTask (int index) { + public void deleteTask(int index) { Task currTask = tasks.get(index - 1); tasks.remove(index - 1); System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + tasks.size() + " tasks in the list"); From a4305f504516498eb1b8579061b0fc69fefd81b4 Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Tue, 14 Feb 2023 15:31:26 +0800 Subject: [PATCH 19/44] add Find feature to locate tasks by keyword --- data/duke.txt | 2 ++ src/main/java/duke/Parser.java | 7 +++++++ src/main/java/duke/TaskList.java | 11 +++++++++++ 3 files changed, 20 insertions(+) diff --git a/data/duke.txt b/data/duke.txt index e69de29bb2..f0fa014d51 100644 --- a/data/duke.txt +++ b/data/duke.txt @@ -0,0 +1,2 @@ +1. [T][ ] hello +2. [T][ ] test1 diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index c811ca2ed7..34eed79890 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -57,6 +57,13 @@ public static void parse(String userInput, TaskList lst) throws DukeException { int taskNum = Integer.parseInt(details); lst.deleteTask(taskNum); + } else if (userInput.startsWith("find")) { + try { + String keyword = inputArr[1]; + lst.findTask(keyword); + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("Please enter the correct keyword"); + } } else { throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 56763caa50..88b048912c 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -111,6 +111,17 @@ public void deleteTask(int index) { System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + tasks.size() + " tasks in the list"); } + public void findTask(String keyword) { + ArrayList res = new ArrayList<>(); + for (Task task : tasks) { + if (task.getDescription().contains(keyword)) { + res.add(task); + } + } + TaskList result = new TaskList(res); + System.out.println("Here are the matching tasks in your list:\n" + result.tasksToStringFormat()); + } + /** * Returns a string representation of the task list * @return String string representation of the task list From 75434c3bab486b2a79c1e03b5263d435990aa2fc Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Tue, 14 Feb 2023 15:58:48 +0800 Subject: [PATCH 20/44] add image of tick for readme --- assets/tick.png | Bin 0 -> 53595 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/tick.png diff --git a/assets/tick.png b/assets/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..9481095ea9259804f27c8867515364fd66cabdb2 GIT binary patch literal 53595 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 TVr(n@00000NkvXXu0mjf4F6Zy literal 0 HcmV?d00001 From d0ee74a91a70428fbdfaee7c06392df6113d36d0 Mon Sep 17 00:00:00 2001 From: bryanongjx <92636396+bryanongjx@users.noreply.github.com> Date: Tue, 14 Feb 2023 21:40:11 +0800 Subject: [PATCH 21/44] Update README.md --- README.md | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 8715d4d915..2bdee41b68 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,25 @@ -# Duke project template +# Tick Pro -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. +> "For every minute spent organising, an hour is earned" - Tick from Brawl Stars -## Setting up in Intellij +"Tick OP" - every salty brawl stars player -Prerequisites: JDK 11, update Intellij to the most recent version. +![This is an image](/assets/tick.png) -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).
- 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 - ____ _ - | _ \ _ _| | _____ - | | | | | | | |/ / _ \ - | |_| | |_| | < __/ - |____/ \__,_|_|\_\___| - ``` +Tick Pro frees your mind of having to remember things you need to do. It's, +- text-based +- easy to learn +- ~~FAST~~ SUPER FAST to learn + +## Setting it up +1. download **Tick Pro** from here +2. double-click it +3. add your tasks +4. let it manage tasks for you :wink: + +and it's **FREE**!! :money_mouth_face: + +Features: +- [x] Managing tasks +- [x] Managing deadlines +- [ ] Reminders (coming soon) From 89cb4cbb71111feb306553f99846984bbdc6fa6a Mon Sep 17 00:00:00 2001 From: bryanongjx Date: Wed, 15 Feb 2023 02:53:21 +0800 Subject: [PATCH 22/44] add GUI using JavaFX --- build.gradle | 14 +++++ data/duke.txt | 1 - src/main/java/duke/DialogBox.java | 61 ++++++++++++++++++++++ src/main/java/duke/Duke.java | 28 +++++++++- src/main/java/duke/Launcher.java | 12 +++++ src/main/java/duke/Main.java | 31 +++++++++++ src/main/java/duke/MainWindow.java | 51 +++++++++++++++++++ src/main/java/duke/Parser.java | 24 +++++---- src/main/java/duke/Storage.java | 2 +- src/main/java/duke/TaskList.java | 65 +++++++++++++----------- src/main/resources/images/emz.png | Bin 0 -> 56324 bytes src/main/resources/images/leon.png | Bin 0 -> 101466 bytes src/main/resources/images/tick.png | Bin 0 -> 53595 bytes src/main/resources/view/DialogBox.fxml | 16 ++++++ src/main/resources/view/MainWindow.fxml | 19 +++++++ 15 files changed, 279 insertions(+), 45 deletions(-) create mode 100644 src/main/java/duke/DialogBox.java create mode 100644 src/main/java/duke/Launcher.java create mode 100644 src/main/java/duke/Main.java create mode 100644 src/main/java/duke/MainWindow.java create mode 100644 src/main/resources/images/emz.png create mode 100644 src/main/resources/images/leon.png create mode 100644 src/main/resources/images/tick.png create mode 100644 src/main/resources/view/DialogBox.fxml create mode 100644 src/main/resources/view/MainWindow.fxml diff --git a/build.gradle b/build.gradle index 0bdc254568..e21cd75b4f 100644 --- a/build.gradle +++ b/build.gradle @@ -9,8 +9,22 @@ repositories { } dependencies { + String javaFxVersion = '11' 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' + + 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 { diff --git a/data/duke.txt b/data/duke.txt index f0fa014d51..fd33014398 100644 --- a/data/duke.txt +++ b/data/duke.txt @@ -1,2 +1 @@ 1. [T][ ] hello -2. [T][ ] test1 diff --git a/src/main/java/duke/DialogBox.java b/src/main/java/duke/DialogBox.java new file mode 100644 index 0000000000..d183f8252b --- /dev/null +++ b/src/main/java/duke/DialogBox.java @@ -0,0 +1,61 @@ +package duke; + +import java.io.IOException; +import java.util.Collections; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + +/** + * An example of a custom control using FXML. + * This control represents a dialog box consisting of an ImageView to represent the speaker's face and a label + * containing text from the speaker. + */ +public class DialogBox extends HBox { + @FXML + private Label dialog; + @FXML + private ImageView displayPicture; + + private DialogBox(String text, Image img) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(MainWindow.class.getResource("/view/DialogBox.fxml")); + fxmlLoader.setController(this); + fxmlLoader.setRoot(this); + fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + } + + dialog.setText(text); + displayPicture.setImage(img); + } + + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + Collections.reverse(tmp); + getChildren().setAll(tmp); + setAlignment(Pos.TOP_LEFT); + } + + public static DialogBox getUserDialog(String text, Image img) { + return new DialogBox(text, img); + } + + public static DialogBox getDukeDialog(String text, Image img) { + var db = new DialogBox(text, img); + db.flip(); + return db; + } +} \ No newline at end of file diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 930b975c05..e901aa4861 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -5,7 +5,7 @@ /** * Duke class */ -public class Duke { +public class Duke{ private Storage storage; private TaskList tasks; @@ -49,6 +49,32 @@ public void run() { } } + public String getResponse(String input) { + String response = ""; + if (input.equals("bye")) { + try { + response = Parser.parse(input, tasks); + } catch (DukeException e) { + response = e.getMessage(); + } + } else if (input.equals("save")) { + try { + storage.save(tasks); + response = "Task List saved!"; + } catch (DukeException e) { + response = e.getMessage(); + } + } else { + try { + response = Parser.parse(input, tasks); + storage.save(tasks); + } catch (DukeException e) { + response = e.getMessage(); + } + } + return response; + } + public static void main(String[] args) { new Duke("./data/duke.txt").run(); diff --git a/src/main/java/duke/Launcher.java b/src/main/java/duke/Launcher.java new file mode 100644 index 0000000000..e4ef6b4628 --- /dev/null +++ b/src/main/java/duke/Launcher.java @@ -0,0 +1,12 @@ +package duke; + +import javafx.application.Application; + +/** + * A launcher class to workaround classpath issues. + */ +public class Launcher { + public static void main(String[] args) { + Application.launch(Main.class, args); + } +} diff --git a/src/main/java/duke/Main.java b/src/main/java/duke/Main.java new file mode 100644 index 0000000000..740220d072 --- /dev/null +++ b/src/main/java/duke/Main.java @@ -0,0 +1,31 @@ +package duke; + +import java.io.IOException; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +/** + * A GUI for Duke using FXML. + */ +public class Main extends Application { + + private Duke duke = new Duke("./data/duke.txt"); + + @Override + public void start(Stage stage) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("/view/MainWindow.fxml")); + AnchorPane ap = fxmlLoader.load(); + Scene scene = new Scene(ap); + stage.setScene(scene); + fxmlLoader.getController().setDuke(duke); + stage.show(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/duke/MainWindow.java b/src/main/java/duke/MainWindow.java new file mode 100644 index 0000000000..ac780793f1 --- /dev/null +++ b/src/main/java/duke/MainWindow.java @@ -0,0 +1,51 @@ +package duke; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; +/** + * Controller for MainWindow. Provides the layout for the other controls. + */ +public class MainWindow extends AnchorPane { + @FXML + private ScrollPane scrollPane; + @FXML + private VBox dialogContainer; + @FXML + private TextField userInput; + @FXML + private Button sendButton; + + private Duke duke; + + private Image userImage = new Image(this.getClass().getResourceAsStream("/images/emz.png")); + private Image dukeImage = new Image(this.getClass().getResourceAsStream("/images/leon.png")); + + @FXML + public void initialize() { + scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); + } + + public void setDuke(Duke d) { + duke = d; + } + + /** + * Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to + * the dialog container. Clears the user input after processing. + */ + @FXML + private void handleUserInput() { + String input = userInput.getText(); + String response = duke.getResponse(input); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(input, userImage), + DialogBox.getDukeDialog(response, dukeImage) + ); + userInput.clear(); + } +} \ No newline at end of file diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 34eed79890..920bc4b996 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -10,59 +10,61 @@ public class Parser { * Parses the user's input and executes the corresponding actions * @param userInput user's input * @param lst user's task list + * @return String response from parse * @throws DukeException */ - public static void parse(String userInput, TaskList lst) throws DukeException { + public static String parse(String userInput, TaskList lst) throws DukeException { + String[] inputArr = userInput.split(" ", 2); if (userInput.equals("bye")) { - ui.exit(); + return "bye"; } else if (userInput.equals("list")) { - lst.printTaskList(); + return lst.getTaskList(); } else if (userInput.startsWith("mark")) { String details = inputArr[1]; int taskNum = Integer.parseInt(details); - lst.markTask(taskNum); + return lst.markTask(taskNum); } else if (userInput.startsWith("unmark")) { String details = inputArr[1]; int taskNum = Integer.parseInt(details); - lst.unmarkTask(taskNum); + return lst.unmarkTask(taskNum); } else if (userInput.startsWith("todo")) { String details = inputArr[1]; - lst.addTask(details, "todo"); + return lst.addTask(details, "todo"); } else if (userInput.startsWith("deadline")) { String details = inputArr[1]; - lst.addTask(details, "deadline"); + return lst.addTask(details, "deadline"); } else if (userInput.startsWith("event")) { String details = inputArr[1]; - lst.addTask(details, "event"); + return lst.addTask(details, "event"); } else if (userInput.startsWith("delete")) { String details = inputArr[1]; int taskNum = Integer.parseInt(details); - lst.deleteTask(taskNum); + return lst.deleteTask(taskNum); } else if (userInput.startsWith("find")) { try { String keyword = inputArr[1]; - lst.findTask(keyword); + return lst.findTask(keyword); } catch (ArrayIndexOutOfBoundsException e) { - System.out.println("Please enter the correct keyword"); + return "Please enter the correct keyword"; } } else { throw new DukeException("OOPS!!! I'm sorry, but I don't know what that means :-("); diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 84cb1b6142..6c5c1fae08 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -96,7 +96,7 @@ public void save(TaskList tasks) throws DukeException { File f = new File(filePath); f.createNewFile(); FileWriter fw = new FileWriter(filePath, false); - fw.write(tasks.tasksToStringFormat()); + fw.write(tasks.getTaskList()); fw.close(); } catch (IOException e) { System.out.println("error writing into file"); diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 88b048912c..8081b34d3d 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -33,7 +33,8 @@ public TaskList() { * @param details details of the task * @param taskType type of task to be added (todo, deadline, event) */ - public void addTask(String details, String taskType) { + public String addTask(String details, String taskType) { + String response = ""; if (taskType.equals("todo")) { try { if (details.equals("")) { @@ -41,10 +42,10 @@ public void addTask(String details, String taskType) { } Todo newTodo = new Todo(details); tasks.add(newTodo); - System.out.println("Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " - + tasks.size() + " tasks in the list"); + response = "Got it. I've added this task:" + '\n' + newTodo + '\n' + "Now you have " + + tasks.size() + " tasks in the list"; } catch (DukeException e) { - System.out.println(e.getMessage()); + response = e.getMessage(); } } else if (taskType.equals("deadline")) { try { @@ -53,10 +54,10 @@ public void addTask(String details, String taskType) { LocalDate date = LocalDate.parse(detailsAndDate[1]); Deadline newDeadline = new Deadline(description, date); tasks.add(newDeadline); - System.out.println("Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " - + tasks.size() + " tasks in the list"); + response = "Got it. I've added this task:" + '\n' + newDeadline + '\n' + "Now you have " + + tasks.size() + " tasks in the list"; } catch (DateTimeParseException e) { - System.out.println("Please input date in YYYY-MM-DD format!"); + response = "Please input date in YYYY-MM-DD format!"; } } else if (taskType.equals("event")) { String[] detailsAndTime = details.split(" /from "); @@ -66,9 +67,25 @@ public void addTask(String details, String taskType) { String From = Time[1]; Event newEvent = new Event(description, To, From); tasks.add(newEvent); - System.out.println("Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " - + tasks.size() + " tasks in the list"); + response = "Got it. I've added this task:" + '\n' + newEvent + '\n' + "Now you have " + + tasks.size() + " tasks in the list"; } + return response; + } + + + /** + * Returns a string representation of the task list + * @return String string representation of the task list + */ + public String getTaskList() { + String res = ""; + for (int i = 0; i < tasks.size(); i ++) { + res += Integer.toString(i + 1) + ". "; + res += tasks.get(i).toString(); + res += '\n'; + } + return res; } /** @@ -85,33 +102,33 @@ public void printTaskList() { * Marks a specific task as done * @param index index of task to be marked as done */ - public void markTask(int index) { + public String markTask(int index) { Task currTask = tasks.get(index - 1); currTask.mark(); - System.out.println("Nice! I've marked this task as done" + '\n' + currTask); + return "Nice! I've marked this task as done" + '\n' + currTask; } /** * Marks a specific task as not done * @param index index of task to be marked as not done */ - public void unmarkTask(int index) { + public String unmarkTask(int index) { Task currTask = tasks.get(index - 1); currTask.unMark(); - System.out.println("Nice! I've marked this task as not done yet" + '\n' + currTask); + return "Nice! I've marked this task as not done yet" + '\n' + currTask; } /** * Deletes a task from the task list * @param index index of task to be deleted */ - public void deleteTask(int index) { + public String deleteTask(int index) { Task currTask = tasks.get(index - 1); tasks.remove(index - 1); - System.out.println("Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + tasks.size() + " tasks in the list"); + return "Noted. I've removed this task:" + '\n' + currTask + '\n' + "Now you have " + tasks.size() + " tasks in the list"; } - public void findTask(String keyword) { + public String findTask(String keyword) { ArrayList res = new ArrayList<>(); for (Task task : tasks) { if (task.getDescription().contains(keyword)) { @@ -119,20 +136,6 @@ public void findTask(String keyword) { } } TaskList result = new TaskList(res); - System.out.println("Here are the matching tasks in your list:\n" + result.tasksToStringFormat()); - } - - /** - * Returns a string representation of the task list - * @return String string representation of the task list - */ - public String tasksToStringFormat() { - String res = ""; - for (int i = 0; i < tasks.size(); i ++) { - res += Integer.toString(i + 1) + ". "; - res += tasks.get(i).toString(); - res += '\n'; - } - return res; + return "Here are the matching tasks in your list:\n" + result.getTaskList(); } } diff --git a/src/main/resources/images/emz.png b/src/main/resources/images/emz.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8dfc58327d11e99abc190ecd2626168c59c6e0 GIT binary patch literal 56324 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 E0at+B8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/images/leon.png b/src/main/resources/images/leon.png new file mode 100644 index 0000000000000000000000000000000000000000..44edf54f452fe2fae60abada36b5a1acb9fefb37 GIT binary patch literal 101466 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Τ%pmlNEE55ZaPx4 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/tick.png b/src/main/resources/images/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..9481095ea9259804f27c8867515364fd66cabdb2 GIT binary patch literal 53595 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 TVr(n@00000NkvXXu0mjf4F6Zy literal 0 HcmV?d00001 diff --git a/src/main/resources/view/DialogBox.fxml b/src/main/resources/view/DialogBox.fxml new file mode 100644 index 0000000000..e433809947 --- /dev/null +++ b/src/main/resources/view/DialogBox.fxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml new file mode 100644 index 0000000000..ecde92a22d --- /dev/null +++ b/src/main/resources/view/MainWindow.fxml @@ -0,0 +1,19 @@ + + + + + + + + + + + +