From 556af3f47a96b32898ab4cdbd65b16486a4871e8 Mon Sep 17 00:00:00 2001 From: damithc Date: Mon, 25 May 2020 00:58:18 +0800 Subject: [PATCH 01/21] 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 5ba595d68a922149214fd39a009b1bb0331f4955 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Fri, 20 Jan 2023 01:00:52 +0800 Subject: [PATCH 02/21] Modified Duke.java --- src/main/java/Duke.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..799324ca9a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,3 +1,4 @@ +import java.util.Scanner; public class Duke { public static void main(String[] args) { String logo = " ____ _ \n" @@ -6,5 +7,13 @@ public static void main(String[] args) { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); + Scanner usrInput = new Scanner(System.in); + String input = usrInput.nextLine(); + while(!input.equals("bye")){ + System.out.println(input); + input = usrInput.nextLine(); + } + System.out.println("Goodbye!"); } + } From 8dfc57364cb236421dc210561ca192bef4eded9d Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Fri, 20 Jan 2023 01:40:41 +0800 Subject: [PATCH 03/21] Modified Duke.java --- src/main/java/Duke.java | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 799324ca9a..48c0abc503 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,3 +1,5 @@ +import java.util.ArrayList; +import java.util.List; import java.util.Scanner; public class Duke { public static void main(String[] args) { @@ -8,12 +10,26 @@ public static void main(String[] args) { + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); Scanner usrInput = new Scanner(System.in); - String input = usrInput.nextLine(); - while(!input.equals("bye")){ - System.out.println(input); + String input = ""; + List lst = new ArrayList<>(); + while(true){ input = usrInput.nextLine(); + switch (input) { + case "bye": + System.out.println("Goodbye!"); + usrInput.close(); + System.exit(0); + case "list": + for (int j = 0; j < lst.size(); j++) { + System.out.println((j + 1) + ":" + lst.get(j)); + } + break; + default: + System.out.println("added:" + input); + lst.add(input); + + } } - System.out.println("Goodbye!"); } } From 808b76ad9cd3617153d2b16b73fdcaa12fb9d719 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Tue, 24 Jan 2023 00:30:32 +0800 Subject: [PATCH 04/21] Added Task.java and Modified Duke.java --- src/main/java/Duke.java | 29 +++++++++++++++++++++++++---- src/main/java/items/Task.java | 23 +++++++++++++++++++++++ 2 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 src/main/java/items/Task.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 48c0abc503..0014b2f3ed 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,3 +1,5 @@ +import items.Task; + import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -11,22 +13,41 @@ public static void main(String[] args) { System.out.println("Hello from\n" + logo); Scanner usrInput = new Scanner(System.in); String input = ""; - List lst = new ArrayList<>(); + List lst = new ArrayList<>(); while(true){ input = usrInput.nextLine(); - switch (input) { + String[] parsedInput = input.split(" "); + switch (parsedInput[0]) { case "bye": + if (parsedInput.length > 1){ + continue; + } System.out.println("Goodbye!"); usrInput.close(); System.exit(0); case "list": + if (parsedInput.length > 1){ + continue; + } for (int j = 0; j < lst.size(); j++) { - System.out.println((j + 1) + ":" + lst.get(j)); + System.out.println((j + 1) + ":" + lst.get(j).toString()); } break; + case "mark": + Integer taskCode = Integer.parseInt(parsedInput[1]); + Task chosenTask = lst.get(taskCode - 1); + chosenTask.setDone(); + System.out.println("I have set the following task to done: \n" + chosenTask.toString()); + break; + case "unmark": + Integer taskCodeUnmark = Integer.parseInt(parsedInput[1]); + Task chosenTaskUnmark = lst.get(taskCodeUnmark - 1); + chosenTaskUnmark.setNotDone(); + System.out.println("I have set the following task to not done: \n" + chosenTaskUnmark.toString()); + break; default: System.out.println("added:" + input); - lst.add(input); + lst.add(new Task(input)); } } diff --git a/src/main/java/items/Task.java b/src/main/java/items/Task.java new file mode 100644 index 0000000000..44492ed4ed --- /dev/null +++ b/src/main/java/items/Task.java @@ -0,0 +1,23 @@ +package items; +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" : " "); // mark done task with X + } + + public void setDone(){this.isDone = true;} + + public void setNotDone(){this.isDone = false;} + + @Override + public String toString(){ + return "[" + this.getStatusIcon() + "]" + this.description; + } +} From 3e0e70a386f0d1d7b51314ad2cce01dd7a537813 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Tue, 24 Jan 2023 01:29:01 +0800 Subject: [PATCH 05/21] Added new task types, modified Duke.java --- src/main/java/Duke.java | 30 +++++++++++++++++++++++------- src/main/java/items/Deadline.java | 15 +++++++++++++++ src/main/java/items/Event.java | 18 ++++++++++++++++++ src/main/java/items/Task.java | 13 ++++++++----- src/main/java/items/ToDo.java | 12 ++++++++++++ 5 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 src/main/java/items/Deadline.java create mode 100644 src/main/java/items/Event.java create mode 100644 src/main/java/items/ToDo.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0014b2f3ed..02e323bbaf 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,4 +1,7 @@ +import items.Deadline; +import items.Event; import items.Task; +import items.ToDo; import java.util.ArrayList; import java.util.List; @@ -16,7 +19,7 @@ public static void main(String[] args) { List lst = new ArrayList<>(); while(true){ input = usrInput.nextLine(); - String[] parsedInput = input.split(" "); + String[] parsedInput = input.split(" ", 2); switch (parsedInput[0]) { case "bye": if (parsedInput.length > 1){ @@ -34,21 +37,34 @@ public static void main(String[] args) { } break; case "mark": - Integer taskCode = Integer.parseInt(parsedInput[1]); + int taskCode = Integer.parseInt(parsedInput[1]); Task chosenTask = lst.get(taskCode - 1); chosenTask.setDone(); System.out.println("I have set the following task to done: \n" + chosenTask.toString()); break; case "unmark": - Integer taskCodeUnmark = Integer.parseInt(parsedInput[1]); + int taskCodeUnmark = Integer.parseInt(parsedInput[1]); Task chosenTaskUnmark = lst.get(taskCodeUnmark - 1); chosenTaskUnmark.setNotDone(); System.out.println("I have set the following task to not done: \n" + chosenTaskUnmark.toString()); break; - default: - System.out.println("added:" + input); - lst.add(new Task(input)); - + case "todo": + Task newToDo = new ToDo(parsedInput[1]); + System.out.println("added:\n" + newToDo.toString()); + lst.add(newToDo); + break; + case "deadline": + String[] parsedCommand = parsedInput[1].split("/"); + Task newDeadline = new Deadline(parsedCommand[0], parsedCommand[1]); + System.out.println("added:\n" + newDeadline.toString()); + lst.add(newDeadline); + break; + case "event": + String[] parsedCommandEvent = parsedInput[1].split("/"); + Task newEvent = new Event(parsedCommandEvent[0], parsedCommandEvent[1], parsedCommandEvent[2]); + System.out.println("added:\n" + newEvent.toString()); + lst.add(newEvent); + break; } } } diff --git a/src/main/java/items/Deadline.java b/src/main/java/items/Deadline.java new file mode 100644 index 0000000000..cfa622515b --- /dev/null +++ b/src/main/java/items/Deadline.java @@ -0,0 +1,15 @@ +package items; + +public class Deadline extends Task{ + private String endDate; + public Deadline(String description, String endDate) { + super(description, "D"); + this.endDate = endDate; + } + + @Override + public String toString(){ + return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" + + this.description + "/" + this.endDate; + } +} diff --git a/src/main/java/items/Event.java b/src/main/java/items/Event.java new file mode 100644 index 0000000000..fe2cca2812 --- /dev/null +++ b/src/main/java/items/Event.java @@ -0,0 +1,18 @@ +package items; + +public class Event extends Task{ + private String startDate; + private String endDate; + + public Event(String description, String startDate, String endDate) { + super(description, "E"); + this.startDate = startDate; + this.endDate = endDate; + } + + @Override + public String toString() { + return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" + + this.description + "/" + this.startDate + "/" + this.endDate; + } +} diff --git a/src/main/java/items/Task.java b/src/main/java/items/Task.java index 44492ed4ed..e13e01d40c 100644 --- a/src/main/java/items/Task.java +++ b/src/main/java/items/Task.java @@ -1,23 +1,26 @@ package items; -public class Task { +public abstract class Task { protected String description; protected boolean isDone; + protected String taskType; - public Task(String description) { + public Task(String description, String taskType) { this.description = description; this.isDone = false; + this.taskType = taskType; } public String getStatusIcon() { return (isDone ? "X" : " "); // mark done task with X } + public String getTaskType(){ return this.taskType;} + public void setDone(){this.isDone = true;} public void setNotDone(){this.isDone = false;} @Override - public String toString(){ - return "[" + this.getStatusIcon() + "]" + this.description; - } + public abstract String toString(); + } diff --git a/src/main/java/items/ToDo.java b/src/main/java/items/ToDo.java new file mode 100644 index 0000000000..e6a8705bfe --- /dev/null +++ b/src/main/java/items/ToDo.java @@ -0,0 +1,12 @@ +package items; + +public class ToDo extends Task{ + public ToDo(String description) { + super(description, "T"); + } + + @Override + public String toString() { + return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" + this.description; + } +} From 1222458ff145ac27680d4abdb09551ef1e3652ac Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Tue, 24 Jan 2023 01:43:56 +0800 Subject: [PATCH 06/21] Added Text UI Testing --- text-ui-test/EXPECTED.TXT | 26 ++++++++++++++++++++++++++ text-ui-test/input.txt | 11 +++++++++++ 2 files changed, 37 insertions(+) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 657e74f6e7..2b279af49f 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -5,3 +5,29 @@ Hello from | |_| | |_| | < __/ |____/ \__,_|_|\_\___| +added: +[T][ ]buy vegetables +added: +[T][ ]watch football +I have set the following task to done: +[T][X]watch football +added: +[D][ ]some homework / tomorrow +1:[T][ ]buy vegetables +2:[T][X]watch football +3:[D][ ]some homework / tomorrow +added: +[E][ ]some other homework / today / tomorrow +1:[T][ ]buy vegetables +2:[T][X]watch football +3:[D][ ]some homework / tomorrow +4:[E][ ]some other homework / today / tomorrow +I have set the following task to done: +[D][X]some homework / tomorrow +I have set the following task to not done: +[T][ ]watch football +1:[T][ ]buy vegetables +2:[T][ ]watch football +3:[D][X]some homework / tomorrow +4:[E][ ]some other homework / today / tomorrow +Goodbye! diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb2..714add8b70 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1,11 @@ +todo buy vegetables +todo watch football +mark 2 +deadline some homework / tomorrow +list +event some other homework / today / tomorrow +list +mark 3 +unmark 2 +list +bye \ No newline at end of file From 75ff48e95db99fa2a7955d91aca2007e80cd7dfb Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Thu, 26 Jan 2023 21:03:28 +0800 Subject: [PATCH 07/21] Mofiy runtest.bat to compile packages, created exceptions to handle invalid inputs --- src/main/java/Duke.java | 106 ++++++++++-------- .../Exceptions/IllegalCommandException.java | 12 ++ .../Exceptions/IllegalInputException.java | 12 ++ text-ui-test/runtest.bat | 2 + 4 files changed, 85 insertions(+), 47 deletions(-) create mode 100644 src/main/java/Exceptions/IllegalCommandException.java create mode 100644 src/main/java/Exceptions/IllegalInputException.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 02e323bbaf..e627c13371 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,3 +1,5 @@ +import Exceptions.IllegalCommandException; +import Exceptions.IllegalInputException; import items.Deadline; import items.Event; import items.Task; @@ -18,53 +20,63 @@ public static void main(String[] args) { String input = ""; List lst = new ArrayList<>(); while(true){ - input = usrInput.nextLine(); - String[] parsedInput = input.split(" ", 2); - switch (parsedInput[0]) { - case "bye": - if (parsedInput.length > 1){ - continue; - } - System.out.println("Goodbye!"); - usrInput.close(); - System.exit(0); - case "list": - if (parsedInput.length > 1){ - continue; - } - for (int j = 0; j < lst.size(); j++) { - System.out.println((j + 1) + ":" + lst.get(j).toString()); - } - break; - case "mark": - int taskCode = Integer.parseInt(parsedInput[1]); - Task chosenTask = lst.get(taskCode - 1); - chosenTask.setDone(); - System.out.println("I have set the following task to done: \n" + chosenTask.toString()); - break; - case "unmark": - int taskCodeUnmark = Integer.parseInt(parsedInput[1]); - Task chosenTaskUnmark = lst.get(taskCodeUnmark - 1); - chosenTaskUnmark.setNotDone(); - System.out.println("I have set the following task to not done: \n" + chosenTaskUnmark.toString()); - break; - case "todo": - Task newToDo = new ToDo(parsedInput[1]); - System.out.println("added:\n" + newToDo.toString()); - lst.add(newToDo); - break; - case "deadline": - String[] parsedCommand = parsedInput[1].split("/"); - Task newDeadline = new Deadline(parsedCommand[0], parsedCommand[1]); - System.out.println("added:\n" + newDeadline.toString()); - lst.add(newDeadline); - break; - case "event": - String[] parsedCommandEvent = parsedInput[1].split("/"); - Task newEvent = new Event(parsedCommandEvent[0], parsedCommandEvent[1], parsedCommandEvent[2]); - System.out.println("added:\n" + newEvent.toString()); - lst.add(newEvent); - break; + try { + input = usrInput.nextLine(); + String[] parsedInput = input.split(" ", 2); + switch (parsedInput[0]) { + case "bye": + if (parsedInput.length > 1) { + continue; + } + System.out.println("Goodbye!"); + usrInput.close(); + System.exit(0); + case "list": + if (parsedInput.length > 1) { + continue; + } + for (int j = 0; j < lst.size(); j++) { + System.out.println((j + 1) + ":" + lst.get(j).toString()); + } + break; + case "mark": + int taskCode = Integer.parseInt(parsedInput[1]); + Task chosenTask = lst.get(taskCode - 1); + chosenTask.setDone(); + System.out.println("I have set the following task to done: \n" + chosenTask.toString()); + break; + case "unmark": + int taskCodeUnmark = Integer.parseInt(parsedInput[1]); + Task chosenTaskUnmark = lst.get(taskCodeUnmark - 1); + chosenTaskUnmark.setNotDone(); + System.out.println("I have set the following task to not done: \n" + chosenTaskUnmark.toString()); + break; + case "todo": + try { + Task newToDo = new ToDo(parsedInput[1]); + System.out.println("added:\n" + newToDo.toString()); + lst.add(newToDo); + break; + } catch (ArrayIndexOutOfBoundsException e) { + throw new IllegalInputException("You did not key in a task name!"); + } + case "deadline": + String[] parsedCommand = parsedInput[1].split("/"); + Task newDeadline = new Deadline(parsedCommand[0], parsedCommand[1]); + System.out.println("added:\n" + newDeadline.toString()); + lst.add(newDeadline); + break; + case "event": + String[] parsedCommandEvent = parsedInput[1].split("/"); + Task newEvent = new Event(parsedCommandEvent[0], parsedCommandEvent[1], parsedCommandEvent[2]); + System.out.println("added:\n" + newEvent.toString()); + lst.add(newEvent); + break; + default: + throw new IllegalCommandException("You did not key in a valid command"); + } + } catch (IllegalInputException | IllegalCommandException e){ + System.out.println(e.toString()); } } } diff --git a/src/main/java/Exceptions/IllegalCommandException.java b/src/main/java/Exceptions/IllegalCommandException.java new file mode 100644 index 0000000000..eec1464882 --- /dev/null +++ b/src/main/java/Exceptions/IllegalCommandException.java @@ -0,0 +1,12 @@ +package Exceptions; + +public class IllegalCommandException extends IllegalArgumentException{ + public IllegalCommandException(String errorMessage){ + super(errorMessage); + } + + @Override + public String toString(){ + return "Sorry, I do not understand your command." + getMessage(); + } +} diff --git a/src/main/java/Exceptions/IllegalInputException.java b/src/main/java/Exceptions/IllegalInputException.java new file mode 100644 index 0000000000..eaab0a9415 --- /dev/null +++ b/src/main/java/Exceptions/IllegalInputException.java @@ -0,0 +1,12 @@ +package Exceptions; + +public class IllegalInputException extends IllegalArgumentException{ + public IllegalInputException(String s) { + super(s); + } + + @Override + public String toString() { + return "Sorry, your input for the command is invalid:" + getMessage(); + } +} diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 0873744649..91a6e0bb6d 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -8,6 +8,8 @@ if exist ACTUAL.TXT del ACTUAL.TXT REM compile the code into the bin folder javac -cp ..\src\main\java -Xlint:none -d ..\bin ..\src\main\java\*.java +javac -cp ..\src\main\java\items -Xlint:none -d ..\bin ..\src\main\java\items\*.java +javac -cp ..\src\main\java\Exceptions -Xlint:none -d ..\bin ..\src\main\java\Exceptions\*.java IF ERRORLEVEL 1 ( echo ********** BUILD FAILURE ********** exit /b 1 From b8795a2833f84c722a0416cb62f8c7c3c5e94654 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Thu, 26 Jan 2023 21:11:26 +0800 Subject: [PATCH 08/21] Modify Duke.java to include delete functionality --- src/main/java/Duke.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index e627c13371..0236cc92ae 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -72,6 +72,11 @@ public static void main(String[] args) { System.out.println("added:\n" + newEvent.toString()); lst.add(newEvent); break; + case "delete": + int taskCodeDelete = Integer.parseInt(parsedInput[1]); + Task deletedTask = lst.remove(taskCodeDelete - 1); + System.out.println("I have deleted the following task: \n" + deletedTask.toString()); + break; default: throw new IllegalCommandException("You did not key in a valid command"); } From d44382f77ec130d450c426b18c05e6ce3b872134 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Wed, 1 Feb 2023 01:24:45 +0800 Subject: [PATCH 09/21] Add saving functionality, add CommandHandler and TaskList classes --- src/main/java/CommandHandler.java | 69 ++++++++++ src/main/java/Duke.java | 90 ++++--------- src/main/java/TaskList.java | 127 ++++++++++++++++++ .../IllegalCommandException.java | 2 +- .../IllegalInputException.java | 2 +- src/main/java/items/Deadline.java | 11 ++ src/main/java/items/Event.java | 12 ++ src/main/java/items/Task.java | 10 ++ src/main/java/items/ToDo.java | 9 ++ text-ui-test/runtest.bat | 2 +- 10 files changed, 266 insertions(+), 68 deletions(-) create mode 100644 src/main/java/CommandHandler.java create mode 100644 src/main/java/TaskList.java rename src/main/java/{Exceptions => dukeexceptions}/IllegalCommandException.java (92%) rename src/main/java/{Exceptions => dukeexceptions}/IllegalInputException.java (91%) diff --git a/src/main/java/CommandHandler.java b/src/main/java/CommandHandler.java new file mode 100644 index 0000000000..05878a1d3e --- /dev/null +++ b/src/main/java/CommandHandler.java @@ -0,0 +1,69 @@ +import dukeexceptions.IllegalCommandException; +import dukeexceptions.IllegalInputException; +import items.Deadline; +import items.Event; +import items.Task; +import items.ToDo; + +public class CommandHandler { + + private TaskList taskList; + + public CommandHandler(TaskList taskList) { + this.taskList = taskList; + } + + public void execute(String command) throws IllegalCommandException, + IllegalInputException, NumberFormatException { + String[] parsedCommand = command.split(" ", 2); + switch (parsedCommand[0]) { + case "bye": + if (parsedCommand.length > 1) { + throw new IllegalCommandException("Not sure if you want to say goodbye?"); + } + System.out.println("Goodbye!"); + System.exit(0); + case "list": + if (parsedCommand.length > 1) { + throw new IllegalCommandException("Did you mean you want to list the items in your list?"); + } + this.taskList.enumerate(); + break; + case "mark": + if (parsedCommand.length > 2) { + throw new IllegalInputException("Too many arguments!"); + } + int taskCode = Integer.parseInt(parsedCommand[1]); + this.taskList.markTask(taskCode); + break; + case "unmark": + int taskCodeUnmark = Integer.parseInt(parsedCommand[1]); + this.taskList.unmarkTask(taskCodeUnmark); + break; + case "todo": + try { + Task newToDo = new ToDo(parsedCommand[1]); + this.taskList.addTask(newToDo); + break; + } catch (ArrayIndexOutOfBoundsException e) { + throw new IllegalInputException("You did not key in a task name!"); + } + case "deadline": + String[] paramsDeadline = parsedCommand[1].split("/"); + Task newDeadline = new Deadline(paramsDeadline[0], paramsDeadline[1]); + this.taskList.addTask(newDeadline); + break; + case "event": + String[] paramsEvent = parsedCommand[1].split("/"); + Task newEvent = new Event(paramsEvent[0], paramsEvent[1], paramsEvent[2]); + this.taskList.addTask(newEvent); + break; + case "delete": + int taskCodeDelete = Integer.parseInt(parsedCommand[1]); + this.taskList.delete(taskCodeDelete); + break; + default: + throw new IllegalCommandException("You did not key in a valid command"); + } + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0236cc92ae..0ee46fe538 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,12 @@ -import Exceptions.IllegalCommandException; -import Exceptions.IllegalInputException; +import dukeexceptions.IllegalCommandException; +import dukeexceptions.IllegalInputException; import items.Deadline; import items.Event; import items.Task; import items.ToDo; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -18,72 +20,30 @@ public static void main(String[] args) { System.out.println("Hello from\n" + logo); Scanner usrInput = new Scanner(System.in); String input = ""; - List lst = new ArrayList<>(); - while(true){ + File data = new File("data.txt"); + try { + boolean createdFile = data.createNewFile(); + if (createdFile){ + System.out.println("Data file successfully created!"); + } else { + System.out.println("Data file already exists!"); + } + } catch (IOException e) { + System.err.println("Failed to create file :("); + e.printStackTrace(); + } + + TaskList taskList = new TaskList("data.txt"); + CommandHandler commandHandler = new CommandHandler(taskList); + + while (true) { + input = usrInput.nextLine(); try { - input = usrInput.nextLine(); - String[] parsedInput = input.split(" ", 2); - switch (parsedInput[0]) { - case "bye": - if (parsedInput.length > 1) { - continue; - } - System.out.println("Goodbye!"); - usrInput.close(); - System.exit(0); - case "list": - if (parsedInput.length > 1) { - continue; - } - for (int j = 0; j < lst.size(); j++) { - System.out.println((j + 1) + ":" + lst.get(j).toString()); - } - break; - case "mark": - int taskCode = Integer.parseInt(parsedInput[1]); - Task chosenTask = lst.get(taskCode - 1); - chosenTask.setDone(); - System.out.println("I have set the following task to done: \n" + chosenTask.toString()); - break; - case "unmark": - int taskCodeUnmark = Integer.parseInt(parsedInput[1]); - Task chosenTaskUnmark = lst.get(taskCodeUnmark - 1); - chosenTaskUnmark.setNotDone(); - System.out.println("I have set the following task to not done: \n" + chosenTaskUnmark.toString()); - break; - case "todo": - try { - Task newToDo = new ToDo(parsedInput[1]); - System.out.println("added:\n" + newToDo.toString()); - lst.add(newToDo); - break; - } catch (ArrayIndexOutOfBoundsException e) { - throw new IllegalInputException("You did not key in a task name!"); - } - case "deadline": - String[] parsedCommand = parsedInput[1].split("/"); - Task newDeadline = new Deadline(parsedCommand[0], parsedCommand[1]); - System.out.println("added:\n" + newDeadline.toString()); - lst.add(newDeadline); - break; - case "event": - String[] parsedCommandEvent = parsedInput[1].split("/"); - Task newEvent = new Event(parsedCommandEvent[0], parsedCommandEvent[1], parsedCommandEvent[2]); - System.out.println("added:\n" + newEvent.toString()); - lst.add(newEvent); - break; - case "delete": - int taskCodeDelete = Integer.parseInt(parsedInput[1]); - Task deletedTask = lst.remove(taskCodeDelete - 1); - System.out.println("I have deleted the following task: \n" + deletedTask.toString()); - break; - default: - throw new IllegalCommandException("You did not key in a valid command"); - } - } catch (IllegalInputException | IllegalCommandException e){ + commandHandler.execute(input); + } catch (IllegalInputException | IllegalCommandException e) { System.out.println(e.toString()); } } - } + } } diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java new file mode 100644 index 0000000000..01d59020c5 --- /dev/null +++ b/src/main/java/TaskList.java @@ -0,0 +1,127 @@ +import items.Deadline; +import items.Event; +import items.Task; +import items.ToDo; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Scanner; + +public class TaskList { + private final File storage; + private ArrayList taskList; + + public TaskList(String filePath) { + this.storage = new File(filePath); + try { + refreshTaskList(); + } catch (FileNotFoundException e) { + System.err.println("Data file could not be found :("); + e.printStackTrace(); + } + } + + public void delete(int index){ + Task deleted = this.taskList.remove(index - 1); + try { + refreshStorage(); + System.out.println("I have deleted the following task: \n" + deleted.toString()); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("Seems like something went wrong with the storage file... \n " + + "deleted task has been added to back of task list"); + this.taskList.add(deleted); + } + } + + public void enumerate(){ + for (int i = 0; i < this.taskList.size(); i++){ + System.out.println((i + 1) + ":" + this.taskList.get(i).toString()); + } + } + + public void addTask(Task newTask){ + this.taskList.add(newTask); + try { + refreshStorage(); + System.out.println("added:\n" + newTask.toString()); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("Seems like something went wrong with the storage file... \n " + + "Please try again later"); + this.taskList.remove(newTask); + } + } + + public void markTask(int index){ + Task mark = this.taskList.get(index - 1); + mark.setDone(); + try { + refreshStorage(); + System.out.println("I have set the following task to done: \n" + mark.toString()); + } catch (IOException e) { + System.out.println("Seems like something went wrong with the storage file... \n " + + "Please try again later"); + e.printStackTrace(); + mark.setNotDone(); + } + } + + public void unmarkTask(int index){ + Task unmark = this.taskList.get(index - 1); + unmark.setNotDone(); + try { + refreshStorage(); + System.out.println("I have set the following task to not done: \n" + unmark.toString()); + } catch (IOException e) { + System.out.println("Seems like something went wrong with the storage file... \n " + + "Please try again later"); + e.printStackTrace(); + unmark.setDone(); + } + } + + private void refreshStorage() throws IOException{ + FileWriter clearFile = new FileWriter(this.storage, false); + clearFile.close(); + FileWriter writer = new FileWriter(this.storage); + for (int i = 0; i < this.taskList.size(); i++){ + writer.write(this.taskList.get(i).generateStorageForm() + System.lineSeparator()); + } + writer.close(); + } + + private void refreshTaskList() throws FileNotFoundException { + Scanner scanner = new Scanner(this.storage); + this.taskList = new ArrayList<>(); + + while(scanner.hasNextLine()){ + String[] parsedInput = scanner.nextLine().split("@"); +// for (int i = 0; i < parsedInput.length; i ++) { +// System.out.println(i + parsedInput[i]); +// } + boolean isDone = parsedInput[2].equals("X"); +// System.out.println(isDone); + switch (parsedInput[0]){ + case "T": + this.taskList.add(new ToDo(parsedInput[1], isDone)); + break; + case "D": + this.taskList.add(new Deadline(parsedInput[1], isDone, parsedInput[3])); + break; + case "E": + this.taskList.add(new Event(parsedInput[1], isDone, parsedInput[3], parsedInput[4])); + break; + } + } + scanner.close(); + } + + + + + +} diff --git a/src/main/java/Exceptions/IllegalCommandException.java b/src/main/java/dukeexceptions/IllegalCommandException.java similarity index 92% rename from src/main/java/Exceptions/IllegalCommandException.java rename to src/main/java/dukeexceptions/IllegalCommandException.java index eec1464882..6cba316c52 100644 --- a/src/main/java/Exceptions/IllegalCommandException.java +++ b/src/main/java/dukeexceptions/IllegalCommandException.java @@ -1,4 +1,4 @@ -package Exceptions; +package dukeexceptions; public class IllegalCommandException extends IllegalArgumentException{ public IllegalCommandException(String errorMessage){ diff --git a/src/main/java/Exceptions/IllegalInputException.java b/src/main/java/dukeexceptions/IllegalInputException.java similarity index 91% rename from src/main/java/Exceptions/IllegalInputException.java rename to src/main/java/dukeexceptions/IllegalInputException.java index eaab0a9415..a1856e54da 100644 --- a/src/main/java/Exceptions/IllegalInputException.java +++ b/src/main/java/dukeexceptions/IllegalInputException.java @@ -1,4 +1,4 @@ -package Exceptions; +package dukeexceptions; public class IllegalInputException extends IllegalArgumentException{ public IllegalInputException(String s) { diff --git a/src/main/java/items/Deadline.java b/src/main/java/items/Deadline.java index cfa622515b..2321143247 100644 --- a/src/main/java/items/Deadline.java +++ b/src/main/java/items/Deadline.java @@ -7,6 +7,17 @@ public Deadline(String description, String endDate) { this.endDate = endDate; } + public Deadline(String description, boolean done, String endDate) { + super(description, "D", done); + this.endDate = endDate; + } + + @Override + public String generateStorageForm() { + return this.getTaskType() + "@" + this.getDescription() + "@" + + this.getStatusIcon() + "@" + this.endDate; + } + @Override public String toString(){ return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" diff --git a/src/main/java/items/Event.java b/src/main/java/items/Event.java index fe2cca2812..c3ae1f808e 100644 --- a/src/main/java/items/Event.java +++ b/src/main/java/items/Event.java @@ -10,6 +10,18 @@ public Event(String description, String startDate, String endDate) { this.endDate = endDate; } + public Event(String description, boolean done, String startDate, String endDate) { + super(description, "E", done); + this.startDate = startDate; + this.endDate = endDate; + } + + @Override + public String generateStorageForm() { + return this.getTaskType() + "@" + this.getDescription() + "@" + this.getStatusIcon() + "@" + + this.startDate + "@" + this.endDate; + } + @Override public String toString() { return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" diff --git a/src/main/java/items/Task.java b/src/main/java/items/Task.java index e13e01d40c..2276349aba 100644 --- a/src/main/java/items/Task.java +++ b/src/main/java/items/Task.java @@ -10,6 +10,12 @@ public Task(String description, String taskType) { this.taskType = taskType; } + public Task(String description, String taskType, boolean done) { + this.description = description; + this.isDone = done; + this.taskType = taskType; + } + public String getStatusIcon() { return (isDone ? "X" : " "); // mark done task with X } @@ -20,6 +26,10 @@ public String getStatusIcon() { public void setNotDone(){this.isDone = false;} + public String getDescription(){return this.description;} + + public abstract String generateStorageForm(); + @Override public abstract String toString(); diff --git a/src/main/java/items/ToDo.java b/src/main/java/items/ToDo.java index e6a8705bfe..35a0f393bd 100644 --- a/src/main/java/items/ToDo.java +++ b/src/main/java/items/ToDo.java @@ -5,6 +5,15 @@ public ToDo(String description) { super(description, "T"); } + public ToDo(String description, boolean done) { + super(description, "T", done); + } + + @Override + public String generateStorageForm() { + return this.getTaskType() + "@" + this.getDescription() + "@" + this.getStatusIcon(); + } + @Override public String toString() { return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" + this.description; diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 91a6e0bb6d..f0de890eed 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -9,7 +9,7 @@ if exist ACTUAL.TXT del ACTUAL.TXT REM compile the code into the bin folder javac -cp ..\src\main\java -Xlint:none -d ..\bin ..\src\main\java\*.java javac -cp ..\src\main\java\items -Xlint:none -d ..\bin ..\src\main\java\items\*.java -javac -cp ..\src\main\java\Exceptions -Xlint:none -d ..\bin ..\src\main\java\Exceptions\*.java +javac -cp ..\src\main\java\dukeexceptions -Xlint:none -d ..\bin ..\src\main\java\dukeexceptions\*.java IF ERRORLEVEL 1 ( echo ********** BUILD FAILURE ********** exit /b 1 From 4a5cb95de36db7766266a620d51c08d979944966 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:58:47 +0800 Subject: [PATCH 10/21] Change type of Deadline to LocalDate --- src/main/java/Duke.java | 3 ++- src/main/java/items/Deadline.java | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0236cc92ae..931f3f5a42 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -5,6 +5,7 @@ import items.Task; import items.ToDo; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -62,7 +63,7 @@ public static void main(String[] args) { } case "deadline": String[] parsedCommand = parsedInput[1].split("/"); - Task newDeadline = new Deadline(parsedCommand[0], parsedCommand[1]); + Task newDeadline = new Deadline(parsedCommand[0], LocalDate.parse(parsedCommand[1])); System.out.println("added:\n" + newDeadline.toString()); lst.add(newDeadline); break; diff --git a/src/main/java/items/Deadline.java b/src/main/java/items/Deadline.java index cfa622515b..1dc1e8de0f 100644 --- a/src/main/java/items/Deadline.java +++ b/src/main/java/items/Deadline.java @@ -1,8 +1,10 @@ package items; +import java.time.LocalDate; + public class Deadline extends Task{ - private String endDate; - public Deadline(String description, String endDate) { + private LocalDate endDate; + public Deadline(String description, LocalDate endDate) { super(description, "D"); this.endDate = endDate; } From 1a3fb0a7fad0f82c3d7d1545fffb41fbce31c298 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Thu, 9 Feb 2023 01:06:09 +0800 Subject: [PATCH 11/21] Add Ui, Storage, Parser, and Command classes. Add additional exceptions with better handling. --- src/main/java/CommandHandler.java | 71 ---------- src/main/java/Duke.java | 54 +++----- src/main/java/TaskList.java | 128 ------------------ src/main/java/commands/AddCommand.java | 96 +++++++++++++ src/main/java/commands/Command.java | 20 +++ src/main/java/commands/DeleteCommand.java | 42 ++++++ src/main/java/commands/ModifyCommand.java | 65 +++++++++ src/main/java/commands/VoidCommand.java | 77 +++++++++++ .../java/dukeexceptions/DukeException.java | 7 + .../IllegalCommandException.java | 2 +- .../dukeexceptions/IllegalInputException.java | 2 +- .../TaskListIndexOutOfBoundsException.java | 12 ++ src/main/java/elems/Parser.java | 44 ++++++ src/main/java/elems/Storage.java | 55 ++++++++ src/main/java/elems/TaskList.java | 98 ++++++++++++++ src/main/java/elems/Ui.java | 36 +++++ src/main/java/items/Deadline.java | 2 +- src/main/java/items/Event.java | 10 +- src/main/java/items/Task.java | 16 ++- 19 files changed, 593 insertions(+), 244 deletions(-) delete mode 100644 src/main/java/CommandHandler.java delete mode 100644 src/main/java/TaskList.java create mode 100644 src/main/java/commands/AddCommand.java create mode 100644 src/main/java/commands/Command.java create mode 100644 src/main/java/commands/DeleteCommand.java create mode 100644 src/main/java/commands/ModifyCommand.java create mode 100644 src/main/java/commands/VoidCommand.java create mode 100644 src/main/java/dukeexceptions/DukeException.java create mode 100644 src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java create mode 100644 src/main/java/elems/Parser.java create mode 100644 src/main/java/elems/Storage.java create mode 100644 src/main/java/elems/TaskList.java create mode 100644 src/main/java/elems/Ui.java diff --git a/src/main/java/CommandHandler.java b/src/main/java/CommandHandler.java deleted file mode 100644 index d8c45b7c21..0000000000 --- a/src/main/java/CommandHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -import dukeexceptions.IllegalCommandException; -import dukeexceptions.IllegalInputException; -import items.Deadline; -import items.Event; -import items.Task; -import items.ToDo; - -import java.time.LocalDate; - -public class CommandHandler { - - private TaskList taskList; - - public CommandHandler(TaskList taskList) { - this.taskList = taskList; - } - - public void execute(String command) throws IllegalCommandException, - IllegalInputException, NumberFormatException { - String[] parsedCommand = command.split(" ", 2); - switch (parsedCommand[0]) { - case "bye": - if (parsedCommand.length > 1) { - throw new IllegalCommandException("Not sure if you want to say goodbye?"); - } - System.out.println("Goodbye!"); - System.exit(0); - case "list": - if (parsedCommand.length > 1) { - throw new IllegalCommandException("Did you mean you want to list the items in your list?"); - } - this.taskList.enumerate(); - break; - case "mark": - if (parsedCommand.length > 2) { - throw new IllegalInputException("Too many arguments!"); - } - int taskCode = Integer.parseInt(parsedCommand[1]); - this.taskList.markTask(taskCode); - break; - case "unmark": - int taskCodeUnmark = Integer.parseInt(parsedCommand[1]); - this.taskList.unmarkTask(taskCodeUnmark); - break; - case "todo": - try { - Task newToDo = new ToDo(parsedCommand[1]); - this.taskList.addTask(newToDo); - break; - } catch (ArrayIndexOutOfBoundsException e) { - throw new IllegalInputException("You did not key in a task name!"); - } - case "deadline": - String[] paramsDeadline = parsedCommand[1].split("/"); - Task newDeadline = new Deadline(paramsDeadline[0], LocalDate.parse(paramsDeadline[1])); - this.taskList.addTask(newDeadline); - break; - case "event": - String[] paramsEvent = parsedCommand[1].split("/"); - Task newEvent = new Event(paramsEvent[0], paramsEvent[1], paramsEvent[2]); - this.taskList.addTask(newEvent); - break; - case "delete": - int taskCodeDelete = Integer.parseInt(parsedCommand[1]); - this.taskList.delete(taskCodeDelete); - break; - default: - throw new IllegalCommandException("You did not key in a valid command"); - } - } -} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index bd51eaab6e..cb5db80859 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,50 +1,36 @@ +import commands.Command; +import dukeexceptions.DukeException; import dukeexceptions.IllegalCommandException; import dukeexceptions.IllegalInputException; -import items.Deadline; -import items.Event; -import items.Task; -import items.ToDo; +import elems.*; import java.io.File; import java.io.IOException; -import java.time.LocalDate; -import java.util.ArrayList; -import java.util.List; 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 usrInput = new Scanner(System.in); - String input = ""; - File data = new File("data.txt"); - try { - boolean createdFile = data.createNewFile(); - if (createdFile){ - System.out.println("Data file successfully created!"); - } else { - System.out.println("Data file already exists!"); - } - } catch (IOException e) { - System.err.println("Failed to create file :("); - e.printStackTrace(); - } + Ui ui = new Ui(usrInput); - TaskList taskList = new TaskList("data.txt"); - CommandHandler commandHandler = new CommandHandler(taskList); + ui.welcome(); - while (true) { - input = usrInput.nextLine(); - try { + Storage storage = new Storage("data.txt", ui); + + TaskList taskList = new TaskList(storage); + + Parser parser = new Parser(); - commandHandler.execute(input); - } catch (IllegalInputException | IllegalCommandException e) { + String input = ""; - System.out.println(e.toString()); + while (true) { + input = ui.getInput(); + try { + Command command = parser.parse(input); + command.execute(taskList, ui, storage); + } catch (DukeException e) { + ui.errorDisplay(e); } } diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java deleted file mode 100644 index 9e05016139..0000000000 --- a/src/main/java/TaskList.java +++ /dev/null @@ -1,128 +0,0 @@ -import items.Deadline; -import items.Event; -import items.Task; -import items.ToDo; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Scanner; - -public class TaskList { - private final File storage; - private ArrayList taskList; - - public TaskList(String filePath) { - this.storage = new File(filePath); - try { - refreshTaskList(); - } catch (FileNotFoundException e) { - System.err.println("Data file could not be found :("); - e.printStackTrace(); - } - } - - public void delete(int index){ - Task deleted = this.taskList.remove(index - 1); - try { - refreshStorage(); - System.out.println("I have deleted the following task: \n" + deleted.toString()); - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Seems like something went wrong with the storage file... \n " + - "deleted task has been added to back of task list"); - this.taskList.add(deleted); - } - } - - public void enumerate(){ - for (int i = 0; i < this.taskList.size(); i++){ - System.out.println((i + 1) + ":" + this.taskList.get(i).toString()); - } - } - - public void addTask(Task newTask){ - this.taskList.add(newTask); - try { - refreshStorage(); - System.out.println("added:\n" + newTask.toString()); - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Seems like something went wrong with the storage file... \n " + - "Please try again later"); - this.taskList.remove(newTask); - } - } - - public void markTask(int index){ - Task mark = this.taskList.get(index - 1); - mark.setDone(); - try { - refreshStorage(); - System.out.println("I have set the following task to done: \n" + mark.toString()); - } catch (IOException e) { - System.out.println("Seems like something went wrong with the storage file... \n " + - "Please try again later"); - e.printStackTrace(); - mark.setNotDone(); - } - } - - public void unmarkTask(int index){ - Task unmark = this.taskList.get(index - 1); - unmark.setNotDone(); - try { - refreshStorage(); - System.out.println("I have set the following task to not done: \n" + unmark.toString()); - } catch (IOException e) { - System.out.println("Seems like something went wrong with the storage file... \n " + - "Please try again later"); - e.printStackTrace(); - unmark.setDone(); - } - } - - private void refreshStorage() throws IOException{ - FileWriter clearFile = new FileWriter(this.storage, false); - clearFile.close(); - FileWriter writer = new FileWriter(this.storage); - for (int i = 0; i < this.taskList.size(); i++){ - writer.write(this.taskList.get(i).generateStorageForm() + System.lineSeparator()); - } - writer.close(); - } - - private void refreshTaskList() throws FileNotFoundException { - Scanner scanner = new Scanner(this.storage); - this.taskList = new ArrayList<>(); - - while(scanner.hasNextLine()){ - String[] parsedInput = scanner.nextLine().split("@"); -// for (int i = 0; i < parsedInput.length; i ++) { -// System.out.println(i + parsedInput[i]); -// } - boolean isDone = parsedInput[2].equals("X"); -// System.out.println(isDone); - switch (parsedInput[0]){ - case "T": - this.taskList.add(new ToDo(parsedInput[1], isDone)); - break; - case "D": - this.taskList.add(new Deadline(parsedInput[1], isDone, LocalDate.parse(parsedInput[3]))); - break; - case "E": - this.taskList.add(new Event(parsedInput[1], isDone, parsedInput[3], parsedInput[4])); - break; - } - } - scanner.close(); - } - - - - - -} diff --git a/src/main/java/commands/AddCommand.java b/src/main/java/commands/AddCommand.java new file mode 100644 index 0000000000..5e54f2cfde --- /dev/null +++ b/src/main/java/commands/AddCommand.java @@ -0,0 +1,96 @@ +package commands; + +import dukeexceptions.DukeException; +import dukeexceptions.IllegalCommandException; +import dukeexceptions.IllegalInputException; +import elems.Storage; +import elems.TaskList; +import elems.Ui; +import items.Deadline; +import items.Event; +import items.Task; +import items.ToDo; + +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeParseException; +import java.util.ArrayList; + +public class AddCommand extends Command { + + enum TaskType { + TODO, + DEADLINE, + EVENT + } + + private TaskType taskType; + + public AddCommand(String keyword, ArrayList params) { + super(keyword, params); + + switch (keyword) { + case "todo": + this.taskType = TaskType.TODO; + break; + case "deadline": + this.taskType = TaskType.DEADLINE; + break; + case "event": + this.taskType = TaskType.EVENT; + break; + } + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (this.params.size() == 0 || this.params.size() > 3) { + throw new IllegalInputException("Wrong number of arguments to make a task!"); + } + Task addedTask = null; + switch (this.taskType) { + case TODO: + if (this.params.size() != 1) { + throw new IllegalInputException("Too many arguments for a todo!"); + } else if (this.params.get(0).isEmpty()){ + throw new IllegalInputException("Cannot make a todo without a description!"); + } + addedTask = new ToDo(this.params.get(0)); + break; + case DEADLINE: + if (this.params.size() != 2) { + throw new IllegalInputException("Wrong number of arguments for a deadline!"); + } + try { + addedTask = new Deadline(this.params.get(0), LocalDate.parse(this.params.get(1))); + } catch (DateTimeParseException e) { + throw new IllegalInputException("You have keyed in an invalid date"); + } + break; + case EVENT: + if (this.params.size() != 3) { + throw new IllegalInputException("Wrong number of arguments for an Event!"); + } + try { + addedTask = new Event(this.params.get(0), LocalDate.parse(this.params.get(1)), LocalDate.parse(this.params.get(2))); + } catch (DateTimeParseException e) { + throw new IllegalInputException("You have keyed in an invalid date"); + } + break; + default: + throw new IllegalCommandException("Unable to add task"); + } + + try { + tasks.addTask(addedTask); + storage.refreshStorage(tasks); + ui.display("I have successfully added the following task for you! \n" + addedTask); + } catch (IOException e) { + ui.display("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); + ui.errorDisplay(e); + e.printStackTrace(); + } + + } +} diff --git a/src/main/java/commands/Command.java b/src/main/java/commands/Command.java new file mode 100644 index 0000000000..1380b883fc --- /dev/null +++ b/src/main/java/commands/Command.java @@ -0,0 +1,20 @@ +package commands; + +import dukeexceptions.DukeException; +import elems.Storage; +import elems.TaskList; +import elems.Ui; + +import java.util.ArrayList; + +public abstract class Command { + private final String keyword; + ArrayList params; + + public Command(String keyword, ArrayList params) { + this.keyword = keyword; + this.params = params; + } + + public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException; +} diff --git a/src/main/java/commands/DeleteCommand.java b/src/main/java/commands/DeleteCommand.java new file mode 100644 index 0000000000..45b74e37ce --- /dev/null +++ b/src/main/java/commands/DeleteCommand.java @@ -0,0 +1,42 @@ +package commands; + +import dukeexceptions.DukeException; +import dukeexceptions.IllegalInputException; +import dukeexceptions.TaskListIndexOutOfBoundsException; +import elems.Storage; +import elems.TaskList; +import elems.Ui; +import items.Task; + +import java.io.IOException; +import java.util.ArrayList; + +public class DeleteCommand extends Command{ + public DeleteCommand(String keyword, ArrayList params) { + super(keyword, params); + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (this.params.size() != 1) { + throw new IllegalInputException("Wrong number of arguments for this command!"); + } + try { + int deleteIndex = Integer.parseInt(this.params.get(0)); + Task deleted = tasks.delete(deleteIndex); + storage.refreshStorage(tasks); + ui.display("Successfully deleted the following task! \n" + + deleted.toString()); + } catch (NumberFormatException e){ + throw new IllegalInputException("Invalid task index chosed!"); + } catch (TaskListIndexOutOfBoundsException e) { + ui.errorDisplay(e); + } catch (IOException e) { + ui.display("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); + ui.errorDisplay(e); + e.printStackTrace(); + + } + } +} diff --git a/src/main/java/commands/ModifyCommand.java b/src/main/java/commands/ModifyCommand.java new file mode 100644 index 0000000000..b1b2d7c54e --- /dev/null +++ b/src/main/java/commands/ModifyCommand.java @@ -0,0 +1,65 @@ +package commands; + +import dukeexceptions.DukeException; +import dukeexceptions.IllegalCommandException; +import dukeexceptions.IllegalInputException; +import dukeexceptions.TaskListIndexOutOfBoundsException; +import elems.Storage; +import elems.TaskList; +import elems.Ui; + +import java.io.IOException; +import java.util.ArrayList; + +public class ModifyCommand extends Command{ + enum ModifyType { + MARK, + UNMARK + } + + private final ModifyType modifyType; + + public ModifyCommand(String keyword, ArrayList params) throws IllegalCommandException { + super(keyword, params); + + switch (keyword){ + case "mark": + this.modifyType = ModifyType.MARK; + break; + case "unmark": + this.modifyType = ModifyType.UNMARK; + break; + default: + throw new IllegalCommandException("Invalid Command to initialise"); + } + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (this.params.size() != 1){ + throw new IllegalInputException("Wrong number of parameters for this command!"); + } + try { + int taskIndex = Integer.parseInt(this.params.get(0)); + switch (this.modifyType) { + case MARK: + tasks.markTask(taskIndex); + break; + case UNMARK: + tasks.unmarkTask(taskIndex); + break; + } + storage.refreshStorage(tasks); + ui.display("Task successfully modified! \n" + tasks.getTaskString(taskIndex)); + } catch (NumberFormatException e) { + throw new IllegalInputException("Invalid task item selected!"); + } catch (TaskListIndexOutOfBoundsException e) { + ui.errorDisplay(e); + } catch (IOException e) { + ui.display("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); + ui.errorDisplay(e); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java new file mode 100644 index 0000000000..2df9e3967e --- /dev/null +++ b/src/main/java/commands/VoidCommand.java @@ -0,0 +1,77 @@ +package commands; + +import dukeexceptions.DukeException; +import dukeexceptions.IllegalCommandException; +import elems.Storage; +import elems.TaskList; +import elems.Ui; + +import java.io.IOException; +import java.util.ArrayList; + +public class VoidCommand extends Command{ + enum VoidType { + LIST, + BYE, + FORCEQUIT + } + + private VoidType voidType; + + public VoidCommand(String keyword, ArrayList params) { + super(keyword, params); + + switch (keyword) { + case "list": + this.voidType = VoidType.LIST; + break; + case "bye": + this.voidType = VoidType.BYE; + break; + case "forcequit": + this.voidType = VoidType.FORCEQUIT; + break; + } + + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (!this.params.get(0).isEmpty()) { + throw new IllegalCommandException("Not sure what you're trying to say?"); + } + switch (voidType) { + case LIST: + String[] taskStringList = tasks.enumerate(); + int listSize = taskStringList.length; + for (int i = 0; i < listSize; i++) { + ui.display(i + 1 + ":" + taskStringList[i]); + } + break; + case BYE: + try { + storage.refreshStorage(tasks); + ui.display("Tasks saved successfully! Goodbye!"); + System.exit(0); + } catch (IOException e) { + ui.errorDisplay(e); + e.printStackTrace(); + ui.display("Tasks were unable to be saved, if you still wish to quit without" + + "saving, try using \"forcequit\" "); + } + break; + case FORCEQUIT: + try { + storage.refreshStorage(tasks); + ui.display("Tasks saved successfully! Exiting now!"); + System.exit(0); + } catch (IOException e) { + e.printStackTrace(); + ui.errorDisplay(e); + ui.display("Tasks not saved, exiting now!"); + System.exit(0); + } + break; + } + } +} diff --git a/src/main/java/dukeexceptions/DukeException.java b/src/main/java/dukeexceptions/DukeException.java new file mode 100644 index 0000000000..40ee45e2f8 --- /dev/null +++ b/src/main/java/dukeexceptions/DukeException.java @@ -0,0 +1,7 @@ +package dukeexceptions; + +public class DukeException extends Exception{ + public DukeException(String message) { + super(message); + } +} diff --git a/src/main/java/dukeexceptions/IllegalCommandException.java b/src/main/java/dukeexceptions/IllegalCommandException.java index 6cba316c52..bbcb165cbf 100644 --- a/src/main/java/dukeexceptions/IllegalCommandException.java +++ b/src/main/java/dukeexceptions/IllegalCommandException.java @@ -1,6 +1,6 @@ package dukeexceptions; -public class IllegalCommandException extends IllegalArgumentException{ +public class IllegalCommandException extends DukeException{ public IllegalCommandException(String errorMessage){ super(errorMessage); } diff --git a/src/main/java/dukeexceptions/IllegalInputException.java b/src/main/java/dukeexceptions/IllegalInputException.java index a1856e54da..5ef6dcccf1 100644 --- a/src/main/java/dukeexceptions/IllegalInputException.java +++ b/src/main/java/dukeexceptions/IllegalInputException.java @@ -1,6 +1,6 @@ package dukeexceptions; -public class IllegalInputException extends IllegalArgumentException{ +public class IllegalInputException extends DukeException{ public IllegalInputException(String s) { super(s); } diff --git a/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java b/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java new file mode 100644 index 0000000000..371551d4b6 --- /dev/null +++ b/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java @@ -0,0 +1,12 @@ +package dukeexceptions; + +public class TaskListIndexOutOfBoundsException extends DukeException{ + public TaskListIndexOutOfBoundsException(String s) { + super(s); + } + + @Override + public String toString() { + return "Sorry, the requested index is out of bounds of the TaskList" + getMessage(); + } +} diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java new file mode 100644 index 0000000000..5254f4fb3e --- /dev/null +++ b/src/main/java/elems/Parser.java @@ -0,0 +1,44 @@ +package elems; + +import commands.*; +import dukeexceptions.IllegalCommandException; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; + +public class Parser { + + private static final HashSet addKeywords = new HashSet<>(Arrays.asList("todo" + , "deadline", "event")); + private static final HashSet deleteKeywords = new HashSet<>(Arrays.asList("delete")); + private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list","bye","forcequit")); + private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); + + public Command parse(String input) throws IllegalCommandException { + String[] commandSplit = input.split(" ", 2); + String keyword = commandSplit[0]; + String paramChain = commandSplit.length == 1 ? "" : commandSplit[1]; + + String[] parsedParams = paramChain.split("/"); + + ArrayList params = new ArrayList<>(Arrays.asList(parsedParams)); + + Command parsedCommand; + + if (addKeywords.contains(keyword)) { + parsedCommand = new AddCommand(keyword, params); + } else if (deleteKeywords.contains(keyword)) { + parsedCommand = new DeleteCommand(keyword, params); + } else if (voidKeywords.contains(keyword)) { + parsedCommand = new VoidCommand(keyword, params); + } else if (modifyKeywords.contains(keyword)) { + parsedCommand = new ModifyCommand(keyword, params); + } else { + throw new IllegalCommandException("You have entered an invalid command"); + } + + return parsedCommand; + + } +} diff --git a/src/main/java/elems/Storage.java b/src/main/java/elems/Storage.java new file mode 100644 index 0000000000..8a346cb915 --- /dev/null +++ b/src/main/java/elems/Storage.java @@ -0,0 +1,55 @@ +package elems; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Scanner; + +public class Storage { + private final File dataFile; + + public Storage(String filePathName, Ui ui) { + this.dataFile = new File(filePathName); + try { + boolean createdFile = dataFile.createNewFile(); + if (createdFile){ + ui.display("Data file successfully created!"); + } else { + ui.display("Data file already exists!"); + } + } catch (IOException e) { + System.err.println("Failed to create file :("); + e.printStackTrace(); + } + } + + public void refreshStorage(TaskList taskList) throws IOException{ + FileWriter clearFile = new FileWriter(this.dataFile, false); + clearFile.close(); + FileWriter writer = new FileWriter(this.dataFile); + writer.write(taskList.getListStorageText()); + writer.close(); + + } + + public ArrayList load(){ + Scanner scanner = null; + ArrayList taskText = new ArrayList<>(); + try { + scanner = new Scanner(dataFile); + + while (scanner.hasNextLine()){ + taskText.add(scanner.nextLine()); + } + scanner.close(); + + } catch (FileNotFoundException e) { + System.err.println("There is no data file found!"); + e.printStackTrace(); + } + return taskText; + } + +} diff --git a/src/main/java/elems/TaskList.java b/src/main/java/elems/TaskList.java new file mode 100644 index 0000000000..414ae51aa1 --- /dev/null +++ b/src/main/java/elems/TaskList.java @@ -0,0 +1,98 @@ +package elems; + +import dukeexceptions.TaskListIndexOutOfBoundsException; +import items.Deadline; +import items.Event; +import items.Task; +import items.ToDo; + +import java.time.LocalDate; +import java.util.ArrayList; + +public class TaskList { + private ArrayList taskList; + + public TaskList(Storage storage) { + loadFromStorageText(storage.load()); + } + + public Task delete(int index) throws TaskListIndexOutOfBoundsException{ + try { + Task deleted = this.taskList.remove(index - 1); + return deleted; + } catch (IndexOutOfBoundsException e) { + throw new TaskListIndexOutOfBoundsException("Tried to delete a task that is out of task list bounds"); + } + + } + + public String[] enumerate(){ + String[] taskStringList = new String[taskList.size()]; + for (int i = 0; i < taskList.size(); i++) { + taskStringList[i] = taskList.get(i).toString(); + } + return taskStringList; + } + + public void addTask(Task newTask){ + this.taskList.add(newTask); + } + + public void markTask(int index) throws TaskListIndexOutOfBoundsException { + try { + Task mark = this.taskList.get(index - 1); + mark.setDone(); + } catch (IndexOutOfBoundsException e) { + throw new TaskListIndexOutOfBoundsException("Tried to mark task that is out of task list bounds"); + } + } + + public void unmarkTask(int index) throws TaskListIndexOutOfBoundsException{ + try { + Task unmark = this.taskList.get(index - 1); + unmark.setNotDone(); + } catch (IndexOutOfBoundsException e) { + throw new TaskListIndexOutOfBoundsException("Tried to unmark task that is out of task list bounds"); + } + } + + public String getListStorageText(){ + StringBuilder output = new StringBuilder(); + for (Task task : this.taskList){ + output.append(task.generateStorageForm() + System.lineSeparator()); + } + return output.toString(); + } + + public String getTaskString(int index) { + Task task = this.taskList.get(index - 1); + return task.toString(); + } + + private void loadFromStorageText(ArrayList storageText) { + this.taskList = new ArrayList<>(); + String[] taskStringArray = storageText.toArray(new String[0]); + + for (String taskText : taskStringArray) { + String[] parsedInput = taskText.split("@"); + + boolean isDone = parsedInput[2].equals("X"); + switch (parsedInput[0]){ + case "T": + this.taskList.add(new ToDo(parsedInput[1], isDone)); + break; + case "D": + this.taskList.add(new Deadline(parsedInput[1], isDone, LocalDate.parse(parsedInput[3]))); + break; + case "E": + this.taskList.add(new Event(parsedInput[1], isDone, LocalDate.parse(parsedInput[3]), LocalDate.parse(parsedInput[4]))); + break; + } + } + } + + + + + +} diff --git a/src/main/java/elems/Ui.java b/src/main/java/elems/Ui.java new file mode 100644 index 0000000000..23cd4f9a0a --- /dev/null +++ b/src/main/java/elems/Ui.java @@ -0,0 +1,36 @@ +package elems; + +import java.util.Scanner; + +public class Ui { + + private static final String logo = " ____ _ \n" + + "| _ \\ _ _| | _____ \n" + + "| | | | | | | |/ / _ \\\n" + + "| |_| | |_| | < __/\n" + + "|____/ \\__,_|_|\\_\\___|\n"; + + private final Scanner userInput; + + public Ui(Scanner userInput) { + this.userInput = userInput; + } + + public void display(String displayText) { + System.out.println(displayText); + } + + public String getInput() { + String input = this.userInput.nextLine(); + return input; + } + + public void welcome() { + System.out.println("Hello from\n" + Ui.logo); + } + + public void errorDisplay(Exception exception) { + System.err.println(exception.getMessage()); + } + +} diff --git a/src/main/java/items/Deadline.java b/src/main/java/items/Deadline.java index 8265c87149..b456b73a1b 100644 --- a/src/main/java/items/Deadline.java +++ b/src/main/java/items/Deadline.java @@ -3,7 +3,7 @@ import java.time.LocalDate; public class Deadline extends Task{ - private LocalDate endDate; + private final LocalDate endDate; public Deadline(String description, LocalDate endDate) { super(description, "D"); this.endDate = endDate; diff --git a/src/main/java/items/Event.java b/src/main/java/items/Event.java index c3ae1f808e..226637b479 100644 --- a/src/main/java/items/Event.java +++ b/src/main/java/items/Event.java @@ -1,16 +1,18 @@ package items; +import java.time.LocalDate; + public class Event extends Task{ - private String startDate; - private String endDate; + private final LocalDate startDate; + private final LocalDate endDate; - public Event(String description, String startDate, String endDate) { + public Event(String description, LocalDate startDate, LocalDate endDate) { super(description, "E"); this.startDate = startDate; this.endDate = endDate; } - public Event(String description, boolean done, String startDate, String endDate) { + public Event(String description, boolean done, LocalDate startDate, LocalDate endDate) { super(description, "E", done); this.startDate = startDate; this.endDate = endDate; diff --git a/src/main/java/items/Task.java b/src/main/java/items/Task.java index 2276349aba..9897c47633 100644 --- a/src/main/java/items/Task.java +++ b/src/main/java/items/Task.java @@ -20,13 +20,21 @@ public String getStatusIcon() { return (isDone ? "X" : " "); // mark done task with X } - public String getTaskType(){ return this.taskType;} + public String getTaskType() { + return this.taskType; + } - public void setDone(){this.isDone = true;} + public void setDone() { + this.isDone = true; + } - public void setNotDone(){this.isDone = false;} + public void setNotDone() { + this.isDone = false; + } - public String getDescription(){return this.description;} + public String getDescription() { + return this.description; + } public abstract String generateStorageForm(); From d231c99d5896c39563d426881e2ec2c8c7ce85a5 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Tue, 14 Feb 2023 17:21:10 +0800 Subject: [PATCH 12/21] Add checkstyle to gradle, fix style issues, add JUnit tests for AddCommand and Parser classes. --- build.gradle | 7 +- config/checkstyle/checkstyle.xml | 429 +++++++++++++++++++++ config/checkstyle/suppressions.xml | 10 + src/main/java/Duke.java | 12 +- src/main/java/commands/AddCommand.java | 24 +- src/main/java/commands/DeleteCommand.java | 14 +- src/main/java/commands/ModifyCommand.java | 10 +- src/main/java/commands/VoidCommand.java | 4 +- src/main/java/elems/Parser.java | 16 +- src/test/java/commands/AddCommandTest.java | 19 + src/test/java/elems/ParserTest.java | 20 + 11 files changed, 531 insertions(+), 34 deletions(-) create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/checkstyle/suppressions.xml create mode 100644 src/test/java/commands/AddCommandTest.java create mode 100644 src/test/java/elems/ParserTest.java diff --git a/build.gradle b/build.gradle index 885198fcfa..fc4b12b06a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'java' id 'application' + id 'checkstyle' id 'com.github.johnrengelman.shadow' version '5.1.0' } @@ -28,7 +29,7 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClassName = "Duke" } shadowJar { @@ -39,3 +40,7 @@ shadowJar { run{ standardInput = System.in } + +checkstyle{ + toolVersion = '10.2' +} diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000000..e8ee76467b --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml new file mode 100644 index 0000000000..135ea49ee0 --- /dev/null +++ b/config/checkstyle/suppressions.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index cb5db80859..c7c84d19da 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,12 +1,12 @@ +import java.util.Scanner; + import commands.Command; import dukeexceptions.DukeException; -import dukeexceptions.IllegalCommandException; -import dukeexceptions.IllegalInputException; -import elems.*; +import elems.Parser; +import elems.Storage; +import elems.TaskList; +import elems.Ui; -import java.io.File; -import java.io.IOException; -import java.util.Scanner; public class Duke { public static void main(String[] args) { diff --git a/src/main/java/commands/AddCommand.java b/src/main/java/commands/AddCommand.java index 5e54f2cfde..24108437e1 100644 --- a/src/main/java/commands/AddCommand.java +++ b/src/main/java/commands/AddCommand.java @@ -1,5 +1,10 @@ package commands; +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeParseException; +import java.util.ArrayList; + import dukeexceptions.DukeException; import dukeexceptions.IllegalCommandException; import dukeexceptions.IllegalInputException; @@ -11,10 +16,6 @@ import items.Task; import items.ToDo; -import java.io.IOException; -import java.time.LocalDate; -import java.time.format.DateTimeParseException; -import java.util.ArrayList; public class AddCommand extends Command { @@ -24,9 +25,9 @@ enum TaskType { EVENT } - private TaskType taskType; + TaskType taskType; - public AddCommand(String keyword, ArrayList params) { + public AddCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); switch (keyword) { @@ -39,6 +40,8 @@ public AddCommand(String keyword, ArrayList params) { case "event": this.taskType = TaskType.EVENT; break; + default: + throw new IllegalCommandException("Invalid keyword for AddCommand"); } } @@ -52,7 +55,7 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException case TODO: if (this.params.size() != 1) { throw new IllegalInputException("Too many arguments for a todo!"); - } else if (this.params.get(0).isEmpty()){ + } else if (this.params.get(0).isEmpty()) { throw new IllegalInputException("Cannot make a todo without a description!"); } addedTask = new ToDo(this.params.get(0)); @@ -72,7 +75,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException throw new IllegalInputException("Wrong number of arguments for an Event!"); } try { - addedTask = new Event(this.params.get(0), LocalDate.parse(this.params.get(1)), LocalDate.parse(this.params.get(2))); + addedTask = new Event(this.params.get(0), + LocalDate.parse(this.params.get(1)), LocalDate.parse(this.params.get(2))); } catch (DateTimeParseException e) { throw new IllegalInputException("You have keyed in an invalid date"); } @@ -86,8 +90,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException storage.refreshStorage(tasks); ui.display("I have successfully added the following task for you! \n" + addedTask); } catch (IOException e) { - ui.display("Seems like there is something wrong with the storage file \n" + - "Any updates will not be saved!"); + ui.display("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); } diff --git a/src/main/java/commands/DeleteCommand.java b/src/main/java/commands/DeleteCommand.java index 45b74e37ce..1accd8632c 100644 --- a/src/main/java/commands/DeleteCommand.java +++ b/src/main/java/commands/DeleteCommand.java @@ -1,6 +1,10 @@ package commands; +import java.io.IOException; +import java.util.ArrayList; + import dukeexceptions.DukeException; +import dukeexceptions.IllegalCommandException; import dukeexceptions.IllegalInputException; import dukeexceptions.TaskListIndexOutOfBoundsException; import elems.Storage; @@ -8,12 +12,12 @@ import elems.Ui; import items.Task; -import java.io.IOException; -import java.util.ArrayList; - -public class DeleteCommand extends Command{ - public DeleteCommand(String keyword, ArrayList params) { +public class DeleteCommand extends Command { + public DeleteCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); + if (!"delete".equals(keyword)) { + throw new IllegalCommandException("Invalid DeleteCommand"); + } } @Override diff --git a/src/main/java/commands/ModifyCommand.java b/src/main/java/commands/ModifyCommand.java index b1b2d7c54e..416fdd686b 100644 --- a/src/main/java/commands/ModifyCommand.java +++ b/src/main/java/commands/ModifyCommand.java @@ -22,7 +22,7 @@ enum ModifyType { public ModifyCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); - switch (keyword){ + switch (keyword) { case "mark": this.modifyType = ModifyType.MARK; break; @@ -30,13 +30,13 @@ public ModifyCommand(String keyword, ArrayList params) throws IllegalCom this.modifyType = ModifyType.UNMARK; break; default: - throw new IllegalCommandException("Invalid Command to initialise"); + throw new IllegalCommandException("Invalid keyword for ModifyCommand"); } } @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { - if (this.params.size() != 1){ + if (this.params.size() != 1) { throw new IllegalInputException("Wrong number of parameters for this command!"); } try { @@ -56,8 +56,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException } catch (TaskListIndexOutOfBoundsException e) { ui.errorDisplay(e); } catch (IOException e) { - ui.display("Seems like there is something wrong with the storage file \n" + - "Any updates will not be saved!"); + ui.display("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); } diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java index 2df9e3967e..9c69d889d0 100644 --- a/src/main/java/commands/VoidCommand.java +++ b/src/main/java/commands/VoidCommand.java @@ -18,7 +18,7 @@ enum VoidType { private VoidType voidType; - public VoidCommand(String keyword, ArrayList params) { + public VoidCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); switch (keyword) { @@ -31,6 +31,8 @@ public VoidCommand(String keyword, ArrayList params) { case "forcequit": this.voidType = VoidType.FORCEQUIT; break; + default: + throw new IllegalCommandException("Invalid keyword for VoidCommand"); } } diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java index 5254f4fb3e..c26f1584eb 100644 --- a/src/main/java/elems/Parser.java +++ b/src/main/java/elems/Parser.java @@ -1,18 +1,22 @@ package elems; -import commands.*; -import dukeexceptions.IllegalCommandException; - import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; +import commands.AddCommand; +import commands.Command; +import commands.DeleteCommand; +import commands.ModifyCommand; +import commands.VoidCommand; +import dukeexceptions.IllegalCommandException; + public class Parser { - private static final HashSet addKeywords = new HashSet<>(Arrays.asList("todo" - , "deadline", "event")); + private static final HashSet addKeywords = new HashSet<>(Arrays.asList("todo", + "deadline", "event")); private static final HashSet deleteKeywords = new HashSet<>(Arrays.asList("delete")); - private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list","bye","forcequit")); + private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit")); private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); public Command parse(String input) throws IllegalCommandException { diff --git a/src/test/java/commands/AddCommandTest.java b/src/test/java/commands/AddCommandTest.java new file mode 100644 index 0000000000..f8c0627d34 --- /dev/null +++ b/src/test/java/commands/AddCommandTest.java @@ -0,0 +1,19 @@ +package commands; + +import dukeexceptions.IllegalCommandException; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; + +public class AddCommandTest { + + @Test + public void invalidKeywordTest() { + try { + AddCommand addCommand = new AddCommand("bob", new ArrayList<>()); + } catch (IllegalCommandException e){ + assertEquals("Invalid keyword for AddCommand", e.getMessage()); + } + } +} diff --git a/src/test/java/elems/ParserTest.java b/src/test/java/elems/ParserTest.java new file mode 100644 index 0000000000..e889d65ee9 --- /dev/null +++ b/src/test/java/elems/ParserTest.java @@ -0,0 +1,20 @@ +package elems; + +import dukeexceptions.IllegalCommandException; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ParserTest { + @Test + public void invalidKeywordTest(){ + Parser parser = new Parser(); + String testInput = "what 1 2 3"; + + try { + parser.parse(testInput); + } catch (IllegalCommandException e) { + assertEquals("You have entered an invalid command", e.getMessage()); + } + + } +} From 6943842882992db2bcb25f143789ec282253c5c9 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Thu, 16 Feb 2023 00:12:50 +0800 Subject: [PATCH 13/21] Add new StorageException, JavaDocs --- src/main/java/Duke.java | 11 ++- src/main/java/commands/AddCommand.java | 22 +++++- src/main/java/commands/Command.java | 23 +++++- src/main/java/commands/DeleteCommand.java | 30 ++++++-- src/main/java/commands/ModifyCommand.java | 22 ++++-- src/main/java/commands/VoidCommand.java | 33 +++++++-- .../java/dukeexceptions/DukeException.java | 6 +- .../IllegalCommandException.java | 10 ++- .../dukeexceptions/IllegalInputException.java | 6 +- .../java/dukeexceptions/StorageException.java | 16 +++++ .../TaskListIndexOutOfBoundsException.java | 5 +- src/main/java/elems/Parser.java | 11 +++ src/main/java/elems/Storage.java | 57 +++++++++------ src/main/java/elems/TaskList.java | 72 +++++++++++++++---- src/main/java/elems/Ui.java | 4 ++ src/main/java/items/Deadline.java | 24 +++++-- src/main/java/items/Event.java | 23 +++++- src/main/java/items/Task.java | 22 +++++- src/main/java/items/ToDo.java | 10 ++- src/test/java/commands/AddCommandTest.java | 8 ++- src/test/java/elems/ParserTest.java | 8 ++- 21 files changed, 341 insertions(+), 82 deletions(-) create mode 100644 src/main/java/dukeexceptions/StorageException.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index c7c84d19da..67af5cc219 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -7,7 +7,16 @@ import elems.TaskList; import elems.Ui; +/** + * The main program that runs the task list chatbot Duke + * @author clydelhui + */ public class Duke { + + /** + * The main method + * @param args nil + */ public static void main(String[] args) { @@ -18,7 +27,7 @@ public static void main(String[] args) { Storage storage = new Storage("data.txt", ui); - TaskList taskList = new TaskList(storage); + TaskList taskList = new TaskList(storage, ui); Parser parser = new Parser(); diff --git a/src/main/java/commands/AddCommand.java b/src/main/java/commands/AddCommand.java index 24108437e1..d5ca8a81f4 100644 --- a/src/main/java/commands/AddCommand.java +++ b/src/main/java/commands/AddCommand.java @@ -16,7 +16,10 @@ import items.Task; import items.ToDo; - +/** + * Represents a command which adds a Task to a given TaskList + * @author clydelhui + */ public class AddCommand extends Command { enum TaskType { @@ -25,8 +28,16 @@ enum TaskType { EVENT } - TaskType taskType; + private final TaskType taskType; + /** + * Constructor that creates an AddCommand object given a keyword and + * an ArrayList of strings of parameters + * @param keyword The keyword for the AddCommand + * @param params An ArrayList containing the parameters of the command + * in String type + * @throws IllegalCommandException If the given keyword does not match any valid keywords + */ public AddCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); @@ -45,6 +56,13 @@ public AddCommand(String keyword, ArrayList params) throws IllegalComman } } + /** + * {@inheritDoc} + * @param tasks The TaskList to be acted on by the Command + * @param ui The Ui to be acted on by the Command + * @param storage The Storage to be acted on by the Command + * @throws DukeException When the Task is unable to be successfully added to the TaskList + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { if (this.params.size() == 0 || this.params.size() > 3) { diff --git a/src/main/java/commands/Command.java b/src/main/java/commands/Command.java index 1380b883fc..11378adec0 100644 --- a/src/main/java/commands/Command.java +++ b/src/main/java/commands/Command.java @@ -1,20 +1,37 @@ package commands; +import java.util.ArrayList; + import dukeexceptions.DukeException; import elems.Storage; import elems.TaskList; import elems.Ui; -import java.util.ArrayList; - +/** + * Represents a command to be executed + * @author clydelhui + */ public abstract class Command { + protected ArrayList params; private final String keyword; - ArrayList params; + /** + * Creates a command with the given keyword and parameters + * @param keyword The keyword for the intended command + * @param params An ArrayList of strings containing the parameters for the command + */ public Command(String keyword, ArrayList params) { this.keyword = keyword; this.params = params; } + /** + * Executes the Command with the given TaskList, + * Ui and Storage + * @param tasks The TaskList to be acted on by the Command + * @param ui The Ui to be acted on by the Command + * @param storage The Storage to be acted on by the Command + * @throws DukeException when the Command is unable to be executed + */ public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException; } diff --git a/src/main/java/commands/DeleteCommand.java b/src/main/java/commands/DeleteCommand.java index 1accd8632c..528f8c6e7f 100644 --- a/src/main/java/commands/DeleteCommand.java +++ b/src/main/java/commands/DeleteCommand.java @@ -12,7 +12,20 @@ import elems.Ui; import items.Task; +/** + * Represents a Command that deletes a task from the given TaskList + * @author clydelhui + */ public class DeleteCommand extends Command { + + /** + * Constructor that creates a DeleteCommand object given a keyword and + * an ArrayList of strings of parameters + * @param keyword The keyword for the DeleteCommand + * @param params An ArrayList containing the parameters of the command + * in String type + * @throws IllegalCommandException If the given keyword does not match any valid keywords + */ public DeleteCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); if (!"delete".equals(keyword)) { @@ -20,6 +33,13 @@ public DeleteCommand(String keyword, ArrayList params) throws IllegalCom } } + /** + * {@inheritDoc} + * @param tasks The TaskList to be acted on by the Command + * @param ui The Ui to be acted on by the Command + * @param storage The Storage to be acted on by the Command + * @throws DukeException when the Task cannot be successfully deleted from the TaskList + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { if (this.params.size() != 1) { @@ -29,15 +49,15 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException int deleteIndex = Integer.parseInt(this.params.get(0)); Task deleted = tasks.delete(deleteIndex); storage.refreshStorage(tasks); - ui.display("Successfully deleted the following task! \n" + - deleted.toString()); - } catch (NumberFormatException e){ + ui.display("Successfully deleted the following task! \n" + + deleted.toString()); + } catch (NumberFormatException e) { throw new IllegalInputException("Invalid task index chosed!"); } catch (TaskListIndexOutOfBoundsException e) { ui.errorDisplay(e); } catch (IOException e) { - ui.display("Seems like there is something wrong with the storage file \n" + - "Any updates will not be saved!"); + ui.display("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); diff --git a/src/main/java/commands/ModifyCommand.java b/src/main/java/commands/ModifyCommand.java index 416fdd686b..aff3c86fba 100644 --- a/src/main/java/commands/ModifyCommand.java +++ b/src/main/java/commands/ModifyCommand.java @@ -1,5 +1,8 @@ package commands; +import java.io.IOException; +import java.util.ArrayList; + import dukeexceptions.DukeException; import dukeexceptions.IllegalCommandException; import dukeexceptions.IllegalInputException; @@ -8,10 +11,11 @@ import elems.TaskList; import elems.Ui; -import java.io.IOException; -import java.util.ArrayList; - -public class ModifyCommand extends Command{ +/** + * Represents a command which modifies a Task in a given TaskList + * @author clydelhui + */ +public class ModifyCommand extends Command { enum ModifyType { MARK, UNMARK @@ -19,6 +23,14 @@ enum ModifyType { private final ModifyType modifyType; + /** + * Constructor that creates an AddCommand object given a keyword and + * an ArrayList of strings of parameters + * @param keyword The keyword for the AddCommand + * @param params An ArrayList containing the parameters of the command + * in String type + * @throws IllegalCommandException If the given keyword does not match any valid keywords + */ public ModifyCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); @@ -48,6 +60,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException case UNMARK: tasks.unmarkTask(taskIndex); break; + default: + throw new IllegalCommandException("Invalid type of ModifyCommand"); } storage.refreshStorage(tasks); ui.display("Task successfully modified! \n" + tasks.getTaskString(taskIndex)); diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java index 9c69d889d0..95cf5333b0 100644 --- a/src/main/java/commands/VoidCommand.java +++ b/src/main/java/commands/VoidCommand.java @@ -1,23 +1,33 @@ package commands; +import java.io.IOException; +import java.util.ArrayList; + import dukeexceptions.DukeException; import dukeexceptions.IllegalCommandException; import elems.Storage; import elems.TaskList; import elems.Ui; -import java.io.IOException; -import java.util.ArrayList; - -public class VoidCommand extends Command{ +/** + * Represents a Command that does not influence the state of the TaskList + * @author clydelhui + */ +public class VoidCommand extends Command { enum VoidType { LIST, BYE, FORCEQUIT } - private VoidType voidType; + private final VoidType voidType; + /** + * Constructor to produce a new VoidCommand + * @param keyword The keyword for the given VoidCommand + * @param params The parameters associated with the given VoidCommand + * @throws IllegalCommandException When the given keyword is not valid + */ public VoidCommand(String keyword, ArrayList params) throws IllegalCommandException { super(keyword, params); @@ -37,6 +47,13 @@ public VoidCommand(String keyword, ArrayList params) throws IllegalComma } + /** + * {@inheritDoc} + * @param tasks The TaskList to be acted on by the Command + * @param ui The Ui to be acted on by the Command + * @param storage The Storage to be acted on by the Command + * @throws DukeException when unable to execute Command + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { if (!this.params.get(0).isEmpty()) { @@ -58,8 +75,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException } catch (IOException e) { ui.errorDisplay(e); e.printStackTrace(); - ui.display("Tasks were unable to be saved, if you still wish to quit without" + - "saving, try using \"forcequit\" "); + ui.display("Tasks were unable to be saved, if you still wish to quit without" + + "saving, try using \"forcequit\" "); } break; case FORCEQUIT: @@ -74,6 +91,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException System.exit(0); } break; + default: + throw new IllegalCommandException("No defined action to execute"); } } } diff --git a/src/main/java/dukeexceptions/DukeException.java b/src/main/java/dukeexceptions/DukeException.java index 40ee45e2f8..7c8cf24e23 100644 --- a/src/main/java/dukeexceptions/DukeException.java +++ b/src/main/java/dukeexceptions/DukeException.java @@ -1,6 +1,10 @@ package dukeexceptions; -public class DukeException extends Exception{ +/** + * An exception related to Duke + * @author clydelhui + */ +public class DukeException extends Exception { public DukeException(String message) { super(message); } diff --git a/src/main/java/dukeexceptions/IllegalCommandException.java b/src/main/java/dukeexceptions/IllegalCommandException.java index bbcb165cbf..b7df27c947 100644 --- a/src/main/java/dukeexceptions/IllegalCommandException.java +++ b/src/main/java/dukeexceptions/IllegalCommandException.java @@ -1,12 +1,16 @@ package dukeexceptions; -public class IllegalCommandException extends DukeException{ - public IllegalCommandException(String errorMessage){ +/** + * An exception thrown when an invalid command is created or issued by the user + * @author clydelhui + */ +public class IllegalCommandException extends DukeException { + public IllegalCommandException(String errorMessage) { super(errorMessage); } @Override - public String toString(){ + public String toString() { return "Sorry, I do not understand your command." + getMessage(); } } diff --git a/src/main/java/dukeexceptions/IllegalInputException.java b/src/main/java/dukeexceptions/IllegalInputException.java index 5ef6dcccf1..69c3fc0226 100644 --- a/src/main/java/dukeexceptions/IllegalInputException.java +++ b/src/main/java/dukeexceptions/IllegalInputException.java @@ -1,6 +1,10 @@ package dukeexceptions; -public class IllegalInputException extends DukeException{ +/** + * An exception that is thrown when an Illegal input is keyed in by the user + * @author clydelhui + */ +public class IllegalInputException extends DukeException { public IllegalInputException(String s) { super(s); } diff --git a/src/main/java/dukeexceptions/StorageException.java b/src/main/java/dukeexceptions/StorageException.java new file mode 100644 index 0000000000..ed66e3b336 --- /dev/null +++ b/src/main/java/dukeexceptions/StorageException.java @@ -0,0 +1,16 @@ +package dukeexceptions; + +/** + * An exception that is thrown when there is an issue with a Storage object. + */ +public class StorageException extends DukeException { + + public StorageException(String message) { + super(message); + } + + @Override + public String toString() { + return "There seems to be a problem with the Storage file..." + getMessage(); + } +} diff --git a/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java b/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java index 371551d4b6..be0edcbd54 100644 --- a/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java +++ b/src/main/java/dukeexceptions/TaskListIndexOutOfBoundsException.java @@ -1,6 +1,9 @@ package dukeexceptions; -public class TaskListIndexOutOfBoundsException extends DukeException{ +/** + * An exception thrown when a Task outside the bounds of a TaskList is being accessed + */ +public class TaskListIndexOutOfBoundsException extends DukeException { public TaskListIndexOutOfBoundsException(String s) { super(s); } diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java index c26f1584eb..5a3ac98f2a 100644 --- a/src/main/java/elems/Parser.java +++ b/src/main/java/elems/Parser.java @@ -11,6 +11,11 @@ import commands.VoidCommand; import dukeexceptions.IllegalCommandException; +/** + * A Pasrser that parses String input from the user and + * generates an appropriate Command + * @author clydelhui + */ public class Parser { private static final HashSet addKeywords = new HashSet<>(Arrays.asList("todo", @@ -19,6 +24,12 @@ public class Parser { private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit")); private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); + /** + * Returns an appropriate Command given the user's String input + * @param input The String input from the user + * @return The Command associated with the given String input + * @throws IllegalCommandException when an invalid input has been given + */ public Command parse(String input) throws IllegalCommandException { String[] commandSplit = input.split(" ", 2); String keyword = commandSplit[0]; diff --git a/src/main/java/elems/Storage.java b/src/main/java/elems/Storage.java index 8a346cb915..a2da378634 100644 --- a/src/main/java/elems/Storage.java +++ b/src/main/java/elems/Storage.java @@ -7,48 +7,63 @@ import java.util.ArrayList; import java.util.Scanner; +/** + * Represents the object that stores information in a data file + * @author clydelhui + */ public class Storage { private final File dataFile; + /** + * Generates a Storage given the path to a data file. + * If the file does not exist, a new file will be created. + * @param filePathName The path to the data file + * @param ui A Ui object to display the messages depending on the status + * of the data file after construction + */ public Storage(String filePathName, Ui ui) { this.dataFile = new File(filePathName); try { boolean createdFile = dataFile.createNewFile(); - if (createdFile){ + if (createdFile) { ui.display("Data file successfully created!"); } else { ui.display("Data file already exists!"); } } catch (IOException e) { - System.err.println("Failed to create file :("); - e.printStackTrace(); + ui.errorDisplay(e); } } - public void refreshStorage(TaskList taskList) throws IOException{ - FileWriter clearFile = new FileWriter(this.dataFile, false); - clearFile.close(); - FileWriter writer = new FileWriter(this.dataFile); - writer.write(taskList.getListStorageText()); - writer.close(); + /** + * Stores the TaskList into the Storage file + * @param taskList The TaskList that contains the tasks to store + * @throws IOException when there is a problem with reading or writing to the file + */ + public void refreshStorage(TaskList taskList) throws IOException { + FileWriter clearFile = new FileWriter(this.dataFile, false); + clearFile.close(); + FileWriter writer = new FileWriter(this.dataFile); + writer.write(taskList.getListStorageText()); + writer.close(); } - public ArrayList load(){ + /** + * Generates an ArrayList of String with the elements being the text storage format + * of the tasks in the TaskList + * @return An ArrayList of String with the elements being the text storage format + * * of the tasks in the TaskList + * @throws FileNotFoundException when the file to load the text from is not found + */ + public ArrayList load() throws FileNotFoundException { Scanner scanner = null; ArrayList taskText = new ArrayList<>(); - try { - scanner = new Scanner(dataFile); - - while (scanner.hasNextLine()){ - taskText.add(scanner.nextLine()); - } - scanner.close(); - - } catch (FileNotFoundException e) { - System.err.println("There is no data file found!"); - e.printStackTrace(); + scanner = new Scanner(dataFile); + while (scanner.hasNextLine()) { + taskText.add(scanner.nextLine()); } + scanner.close(); return taskText; } diff --git a/src/main/java/elems/TaskList.java b/src/main/java/elems/TaskList.java index 414ae51aa1..d4c524eabc 100644 --- a/src/main/java/elems/TaskList.java +++ b/src/main/java/elems/TaskList.java @@ -1,32 +1,61 @@ package elems; +import java.io.FileNotFoundException; +import java.time.LocalDate; +import java.util.ArrayList; + +import dukeexceptions.StorageException; import dukeexceptions.TaskListIndexOutOfBoundsException; import items.Deadline; import items.Event; import items.Task; import items.ToDo; -import java.time.LocalDate; -import java.util.ArrayList; - +/** + * Represents the object that stores the Tasks + * @author clydelhui + */ public class TaskList { private ArrayList taskList; - public TaskList(Storage storage) { + /** + * Generates a new TaskList object which loads from the given Storage + * @param storage The storage to load the data from + * @param ui The Ui to display error messages with + */ + public TaskList(Storage storage, Ui ui) { + try { loadFromStorageText(storage.load()); + } catch (FileNotFoundException | StorageException e) { + ui.errorDisplay(e); + ui.display("Issue with the storage file, generating empty list!"); + this.taskList = new ArrayList<>(); + } + } - public Task delete(int index) throws TaskListIndexOutOfBoundsException{ + /** + * Deletes the Task at a given index (1 based indexing) from the TaskList + * @param index The index of the Task to be deleted + * @return The deleted Task + * @throws TaskListIndexOutOfBoundsException if the index given is out of bounds of the TaskList + */ + public Task delete(int index) throws TaskListIndexOutOfBoundsException { try { - Task deleted = this.taskList.remove(index - 1); - return deleted; + return this.taskList.remove(index - 1); } catch (IndexOutOfBoundsException e) { throw new TaskListIndexOutOfBoundsException("Tried to delete a task that is out of task list bounds"); } } - public String[] enumerate(){ + /** + * Generates a string array containing the String representation of + * all the Tasks in the TaskList + * @return A string array containing the String representation of + * * all the Tasks in the TaskList + */ + public String[] enumerate() { String[] taskStringList = new String[taskList.size()]; for (int i = 0; i < taskList.size(); i++) { taskStringList[i] = taskList.get(i).toString(); @@ -34,10 +63,15 @@ public String[] enumerate(){ return taskStringList; } - public void addTask(Task newTask){ + public void addTask(Task newTask) { this.taskList.add(newTask); } + /** + * Marks the Task at a given index (1 based indexing) + * @param index The index of the Task + * @throws TaskListIndexOutOfBoundsException when the index is out of bounds of the TaskList + */ public void markTask(int index) throws TaskListIndexOutOfBoundsException { try { Task mark = this.taskList.get(index - 1); @@ -47,7 +81,12 @@ public void markTask(int index) throws TaskListIndexOutOfBoundsException { } } - public void unmarkTask(int index) throws TaskListIndexOutOfBoundsException{ + /** + * Unmarks the Task at a given index(1 based indexing) + * @param index The index of the Task to be unmarked + * @throws TaskListIndexOutOfBoundsException when an index is out of bounds of the given TaskList + */ + public void unmarkTask(int index) throws TaskListIndexOutOfBoundsException { try { Task unmark = this.taskList.get(index - 1); unmark.setNotDone(); @@ -56,9 +95,9 @@ public void unmarkTask(int index) throws TaskListIndexOutOfBoundsException{ } } - public String getListStorageText(){ + public String getListStorageText() { StringBuilder output = new StringBuilder(); - for (Task task : this.taskList){ + for (Task task : this.taskList) { output.append(task.generateStorageForm() + System.lineSeparator()); } return output.toString(); @@ -69,7 +108,7 @@ public String getTaskString(int index) { return task.toString(); } - private void loadFromStorageText(ArrayList storageText) { + private void loadFromStorageText(ArrayList storageText) throws StorageException { this.taskList = new ArrayList<>(); String[] taskStringArray = storageText.toArray(new String[0]); @@ -77,7 +116,7 @@ private void loadFromStorageText(ArrayList storageText) { String[] parsedInput = taskText.split("@"); boolean isDone = parsedInput[2].equals("X"); - switch (parsedInput[0]){ + switch (parsedInput[0]) { case "T": this.taskList.add(new ToDo(parsedInput[1], isDone)); break; @@ -85,8 +124,11 @@ private void loadFromStorageText(ArrayList storageText) { this.taskList.add(new Deadline(parsedInput[1], isDone, LocalDate.parse(parsedInput[3]))); break; case "E": - this.taskList.add(new Event(parsedInput[1], isDone, LocalDate.parse(parsedInput[3]), LocalDate.parse(parsedInput[4]))); + this.taskList.add(new Event(parsedInput[1], isDone, LocalDate.parse(parsedInput[3]), + LocalDate.parse(parsedInput[4]))); break; + default: + throw new StorageException("Corrupted data file!"); } } } diff --git a/src/main/java/elems/Ui.java b/src/main/java/elems/Ui.java index 23cd4f9a0a..25b261a2bd 100644 --- a/src/main/java/elems/Ui.java +++ b/src/main/java/elems/Ui.java @@ -2,6 +2,10 @@ import java.util.Scanner; +/** + * Represents the User Interface that takes in input and displays output to the user + * @author clydelhui + */ public class Ui { private static final String logo = " ____ _ \n" diff --git a/src/main/java/items/Deadline.java b/src/main/java/items/Deadline.java index b456b73a1b..ee058cc825 100644 --- a/src/main/java/items/Deadline.java +++ b/src/main/java/items/Deadline.java @@ -2,15 +2,31 @@ import java.time.LocalDate; -public class Deadline extends Task{ +/** + * Represents a Deadline task + * @author clydelhui + */ +public class Deadline extends Task { private final LocalDate endDate; + + /** + * Creates a Deadline with the given description and end date + * @param description The description of the Deadline + * @param endDate the end date of the Deadline + */ public Deadline(String description, LocalDate endDate) { super(description, "D"); this.endDate = endDate; } - public Deadline(String description, boolean done, LocalDate endDate) { - super(description, "D", done); + /** + * Creates a Deadline with the given description, status and end date + * @param description The description of the Deadline + * @param isDone A boolean which indicates if the Deadline is done + * @param endDate + */ + public Deadline(String description, boolean isDone, LocalDate endDate) { + super(description, "D", isDone); this.endDate = endDate; } @@ -21,7 +37,7 @@ public String generateStorageForm() { } @Override - public String toString(){ + public String toString() { return "[" + this.getTaskType() + "]" + "[" + this.getStatusIcon() + "]" + this.description + "/" + this.endDate; } diff --git a/src/main/java/items/Event.java b/src/main/java/items/Event.java index 226637b479..c4e8e9ab8d 100644 --- a/src/main/java/items/Event.java +++ b/src/main/java/items/Event.java @@ -2,18 +2,35 @@ import java.time.LocalDate; -public class Event extends Task{ +/** + * Represents an Event task + * @author clydelhui + */ +public class Event extends Task { private final LocalDate startDate; private final LocalDate endDate; + /** + * Creates a new Event with the given description, start date and end date + * @param description The description of the Event + * @param startDate The start date of the Event + * @param endDate The end date of the Event + */ public Event(String description, LocalDate startDate, LocalDate endDate) { super(description, "E"); this.startDate = startDate; this.endDate = endDate; } - public Event(String description, boolean done, LocalDate startDate, LocalDate endDate) { - super(description, "E", done); + /** + * Creates a new Event with the given description, status, start date and end date + * @param description The description of the Event + * @param isDone A boolean indicating the status of the Event + * @param startDate The start date of the Event + * @param endDate The end date of the Event + */ + public Event(String description, boolean isDone, LocalDate startDate, LocalDate endDate) { + super(description, "E", isDone); this.startDate = startDate; this.endDate = endDate; } diff --git a/src/main/java/items/Task.java b/src/main/java/items/Task.java index 9897c47633..e8daaa528d 100644 --- a/src/main/java/items/Task.java +++ b/src/main/java/items/Task.java @@ -1,18 +1,36 @@ package items; + +/** + * An abstract class the represents the types of tasks that can be added to the list + * @author clydelhui + */ public abstract class Task { protected String description; protected boolean isDone; protected String taskType; + /** + * Creates a Task with the given description and type of task + * @param description The description of the Task + * @param taskType A string representing the type of Task + * it is included in the String representation of the Task + */ public Task(String description, String taskType) { this.description = description; this.isDone = false; this.taskType = taskType; } - public Task(String description, String taskType, boolean done) { + /** + * Creates a Task with the given description, status and type of task + * @param description The description of the Task + * @param isDone A boolean indicating if the Task is done + * @param taskType A string representing the type of Task + * it is included in the String representation of the Task + */ + public Task(String description, String taskType, boolean isDone) { this.description = description; - this.isDone = done; + this.isDone = isDone; this.taskType = taskType; } diff --git a/src/main/java/items/ToDo.java b/src/main/java/items/ToDo.java index 35a0f393bd..a1620467d8 100644 --- a/src/main/java/items/ToDo.java +++ b/src/main/java/items/ToDo.java @@ -1,12 +1,16 @@ package items; -public class ToDo extends Task{ +/** + * Represents a to do task + * @author clydelhui + */ +public class ToDo extends Task { public ToDo(String description) { super(description, "T"); } - public ToDo(String description, boolean done) { - super(description, "T", done); + public ToDo(String description, boolean isDone) { + super(description, "T", isDone); } @Override diff --git a/src/test/java/commands/AddCommandTest.java b/src/test/java/commands/AddCommandTest.java index f8c0627d34..fcfe52b3f4 100644 --- a/src/test/java/commands/AddCommandTest.java +++ b/src/test/java/commands/AddCommandTest.java @@ -1,18 +1,20 @@ package commands; -import dukeexceptions.IllegalCommandException; -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; +import org.junit.jupiter.api.Test; + +import dukeexceptions.IllegalCommandException; + public class AddCommandTest { @Test public void invalidKeywordTest() { try { AddCommand addCommand = new AddCommand("bob", new ArrayList<>()); - } catch (IllegalCommandException e){ + } catch (IllegalCommandException e) { assertEquals("Invalid keyword for AddCommand", e.getMessage()); } } diff --git a/src/test/java/elems/ParserTest.java b/src/test/java/elems/ParserTest.java index e889d65ee9..e05cdc4444 100644 --- a/src/test/java/elems/ParserTest.java +++ b/src/test/java/elems/ParserTest.java @@ -1,12 +1,14 @@ package elems; -import dukeexceptions.IllegalCommandException; -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +import dukeexceptions.IllegalCommandException; + public class ParserTest { @Test - public void invalidKeywordTest(){ + public void invalidKeywordTest() { Parser parser = new Parser(); String testInput = "what 1 2 3"; From 76037047d3eaa65120c9951a288d9a228262cb96 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Thu, 16 Feb 2023 12:08:52 +0800 Subject: [PATCH 14/21] Add new VoidCommand type "find" --- src/main/java/commands/VoidCommand.java | 23 +++++++++++++++++----- src/main/java/elems/Parser.java | 2 +- src/main/java/elems/TaskList.java | 26 ++++++++++++++++++------- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java index 9c69d889d0..a9d5d65a90 100644 --- a/src/main/java/commands/VoidCommand.java +++ b/src/main/java/commands/VoidCommand.java @@ -2,6 +2,7 @@ import dukeexceptions.DukeException; import dukeexceptions.IllegalCommandException; +import dukeexceptions.IllegalInputException; import elems.Storage; import elems.TaskList; import elems.Ui; @@ -11,9 +12,10 @@ public class VoidCommand extends Command{ enum VoidType { - LIST, BYE, - FORCEQUIT + FIND, + FORCEQUIT, + LIST } private VoidType voidType; @@ -25,6 +27,9 @@ public VoidCommand(String keyword, ArrayList params) throws IllegalComma case "list": this.voidType = VoidType.LIST; break; + case "find": + this.voidType = VoidType.FIND; + break; case "bye": this.voidType = VoidType.BYE; break; @@ -39,9 +44,6 @@ public VoidCommand(String keyword, ArrayList params) throws IllegalComma @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { - if (!this.params.get(0).isEmpty()) { - throw new IllegalCommandException("Not sure what you're trying to say?"); - } switch (voidType) { case LIST: String[] taskStringList = tasks.enumerate(); @@ -50,6 +52,17 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException ui.display(i + 1 + ":" + taskStringList[i]); } break; + case FIND: + if (this.params.size() > 2) { + throw new IllegalInputException("Only 1 word can be searched at a time"); + } + String[] foundTasks = tasks.searchTaskDescription(this.params.get(0)); + ui.display("I have found the following tasks!"); + for (int i = 0; i < foundTasks.length; i++) { + String taskString = foundTasks[i]; + ui.display(i + 1 + ":" + taskString); + } + break; case BYE: try { storage.refreshStorage(tasks); diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java index c26f1584eb..9c0c5a8ade 100644 --- a/src/main/java/elems/Parser.java +++ b/src/main/java/elems/Parser.java @@ -16,7 +16,7 @@ public class Parser { private static final HashSet addKeywords = new HashSet<>(Arrays.asList("todo", "deadline", "event")); private static final HashSet deleteKeywords = new HashSet<>(Arrays.asList("delete")); - private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit")); + private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit", "find")); private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); public Command parse(String input) throws IllegalCommandException { diff --git a/src/main/java/elems/TaskList.java b/src/main/java/elems/TaskList.java index 414ae51aa1..47c5339df5 100644 --- a/src/main/java/elems/TaskList.java +++ b/src/main/java/elems/TaskList.java @@ -27,8 +27,9 @@ public Task delete(int index) throws TaskListIndexOutOfBoundsException{ } public String[] enumerate(){ - String[] taskStringList = new String[taskList.size()]; - for (int i = 0; i < taskList.size(); i++) { + int length = this.taskList.size(); + String[] taskStringList = new String[length]; + for (int i = 0; i < length; i++) { taskStringList[i] = taskList.get(i).toString(); } return taskStringList; @@ -69,6 +70,22 @@ public String getTaskString(int index) { return task.toString(); } + public String[] searchTaskDescription(String searchTerm) { + ArrayList matchingItems = new ArrayList<>(); + for (Task current : this.taskList) { + String currentDescription = current.getDescription(); + String[] parsedDescription = currentDescription.split(" "); + for (String word : parsedDescription) { + if (word.equals(searchTerm)) { + matchingItems.add(current.toString()); + } + } + } + String[] result = new String[matchingItems.size()]; + matchingItems.toArray(result); + return result; + } + private void loadFromStorageText(ArrayList storageText) { this.taskList = new ArrayList<>(); String[] taskStringArray = storageText.toArray(new String[0]); @@ -90,9 +107,4 @@ private void loadFromStorageText(ArrayList storageText) { } } } - - - - - } From fc4f9e3e70d1f481c3aa09bcc238dac27ee52116 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Thu, 16 Feb 2023 13:47:38 +0800 Subject: [PATCH 15/21] Modify files to fit coding standard --- README.md | 4 ++-- src/main/java/commands/VoidCommand.java | 12 ++++++------ src/main/java/{ => duke}/Duke.java | 2 ++ text-ui-test/runtest.bat | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) rename src/main/java/{ => duke}/Duke.java (98%) diff --git a/README.md b/README.md index 8715d4d915..0f2208ab64 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Duke project template +# duke.Duke project template This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it. @@ -13,7 +13,7 @@ Prerequisites: JDK 11, update Intellij to the most recent version. 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: +3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.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 ____ _ diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java index 9c69d889d0..a0faa39aa3 100644 --- a/src/main/java/commands/VoidCommand.java +++ b/src/main/java/commands/VoidCommand.java @@ -1,15 +1,15 @@ package commands; +import java.io.IOException; +import java.util.ArrayList; + import dukeexceptions.DukeException; import dukeexceptions.IllegalCommandException; import elems.Storage; import elems.TaskList; import elems.Ui; -import java.io.IOException; -import java.util.ArrayList; - -public class VoidCommand extends Command{ +public class VoidCommand extends Command { enum VoidType { LIST, BYE, @@ -58,8 +58,8 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException } catch (IOException e) { ui.errorDisplay(e); e.printStackTrace(); - ui.display("Tasks were unable to be saved, if you still wish to quit without" + - "saving, try using \"forcequit\" "); + ui.display("Tasks were unable to be saved, if you still wish to quit without" + + "saving, try using \"forcequit\" "); } break; case FORCEQUIT: diff --git a/src/main/java/Duke.java b/src/main/java/duke/Duke.java similarity index 98% rename from src/main/java/Duke.java rename to src/main/java/duke/Duke.java index c7c84d19da..ce75d9b048 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,3 +1,5 @@ +package duke; + import java.util.Scanner; import commands.Command; diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index f0de890eed..320ae291da 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -17,7 +17,7 @@ IF ERRORLEVEL 1 ( REM no error here, errorlevel == 0 REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT -java -classpath ..\bin Duke < input.txt > ACTUAL.TXT +java -classpath ..\bin duke.Duke < input.txt > ACTUAL.TXT REM compare the output to the expected output FC ACTUAL.TXT EXPECTED.TXT From cad9b7a74dec5530814294784aaae0d22fc326fd Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Sat, 18 Feb 2023 00:55:16 +0800 Subject: [PATCH 16/21] add UI with JavaFX --- build.gradle | 16 +++ src/main/java/commands/AddCommand.java | 4 +- src/main/java/commands/DeleteCommand.java | 4 +- src/main/java/commands/ModifyCommand.java | 4 +- src/main/java/commands/VoidCommand.java | 18 ++-- src/main/java/duke/DialogBox.java | 46 +++++++++ src/main/java/duke/Duke.java | 114 ++++++++++++++++++---- src/main/java/duke/Launcher.java | 12 +++ src/main/java/elems/Parser.java | 3 +- src/main/java/elems/Storage.java | 4 +- src/main/java/elems/TaskList.java | 21 ++-- src/main/java/elems/Ui.java | 35 +++++-- src/main/resources/images/DaDuke.jpg | Bin 0 -> 52327 bytes src/main/resources/images/DaUser.png | Bin 0 -> 273163 bytes 14 files changed, 226 insertions(+), 55 deletions(-) create mode 100644 src/main/java/duke/DialogBox.java create mode 100644 src/main/java/duke/Launcher.java create mode 100644 src/main/resources/images/DaDuke.jpg create mode 100644 src/main/resources/images/DaUser.png diff --git a/build.gradle b/build.gradle index fc4b12b06a..ac3b375d7f 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ plugins { id 'application' id 'checkstyle' id 'com.github.johnrengelman.shadow' version '5.1.0' + id 'org.openjfx.javafxplugin' version '0.0.13' } repositories { @@ -12,6 +13,21 @@ repositories { dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + + String javaFxVersion = '11' + + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' } test { diff --git a/src/main/java/commands/AddCommand.java b/src/main/java/commands/AddCommand.java index d5ca8a81f4..2ab5393c32 100644 --- a/src/main/java/commands/AddCommand.java +++ b/src/main/java/commands/AddCommand.java @@ -106,9 +106,9 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException try { tasks.addTask(addedTask); storage.refreshStorage(tasks); - ui.display("I have successfully added the following task for you! \n" + addedTask); + ui.dukeDisplay("I have successfully added the following task for you! \n" + addedTask); } catch (IOException e) { - ui.display("Seems like there is something wrong with the storage file \n" + ui.dukeDisplay("Seems like there is something wrong with the storage file \n" + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); diff --git a/src/main/java/commands/DeleteCommand.java b/src/main/java/commands/DeleteCommand.java index 528f8c6e7f..0a44e3cb4b 100644 --- a/src/main/java/commands/DeleteCommand.java +++ b/src/main/java/commands/DeleteCommand.java @@ -49,14 +49,14 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException int deleteIndex = Integer.parseInt(this.params.get(0)); Task deleted = tasks.delete(deleteIndex); storage.refreshStorage(tasks); - ui.display("Successfully deleted the following task! \n" + ui.dukeDisplay("Successfully deleted the following task! \n" + deleted.toString()); } catch (NumberFormatException e) { throw new IllegalInputException("Invalid task index chosed!"); } catch (TaskListIndexOutOfBoundsException e) { ui.errorDisplay(e); } catch (IOException e) { - ui.display("Seems like there is something wrong with the storage file \n" + ui.dukeDisplay("Seems like there is something wrong with the storage file \n" + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); diff --git a/src/main/java/commands/ModifyCommand.java b/src/main/java/commands/ModifyCommand.java index aff3c86fba..80525ad8f6 100644 --- a/src/main/java/commands/ModifyCommand.java +++ b/src/main/java/commands/ModifyCommand.java @@ -64,13 +64,13 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException throw new IllegalCommandException("Invalid type of ModifyCommand"); } storage.refreshStorage(tasks); - ui.display("Task successfully modified! \n" + tasks.getTaskString(taskIndex)); + ui.dukeDisplay("Task successfully modified! \n" + tasks.getTaskString(taskIndex)); } catch (NumberFormatException e) { throw new IllegalInputException("Invalid task item selected!"); } catch (TaskListIndexOutOfBoundsException e) { ui.errorDisplay(e); } catch (IOException e) { - ui.display("Seems like there is something wrong with the storage file \n" + ui.dukeDisplay("Seems like there is something wrong with the storage file \n" + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java index 079a4be465..485d6ab4af 100644 --- a/src/main/java/commands/VoidCommand.java +++ b/src/main/java/commands/VoidCommand.java @@ -66,42 +66,44 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException case LIST: String[] taskStringList = tasks.enumerate(); int listSize = taskStringList.length; + String listOutput = new String(); for (int i = 0; i < listSize; i++) { - ui.display(i + 1 + ":" + taskStringList[i]); + listOutput += i + 1 + ":" + taskStringList[i] + "\n"; } + ui.dukeDisplay(listOutput); break; case FIND: if (this.params.size() > 2) { throw new IllegalInputException("Only 1 word can be searched at a time"); } String[] foundTasks = tasks.searchTaskDescription(this.params.get(0)); - ui.display("I have found the following tasks!"); + String findOutput = "I have found the following tasks!\n"; for (int i = 0; i < foundTasks.length; i++) { - String taskString = foundTasks[i]; - ui.display(i + 1 + ":" + taskString); + findOutput += i + 1 + ":" + foundTasks[i] + "\n"; } + ui.dukeDisplay(findOutput); break; case BYE: try { storage.refreshStorage(tasks); - ui.display("Tasks saved successfully! Goodbye!"); + ui.dukeDisplay("Tasks saved successfully! Goodbye!"); System.exit(0); } catch (IOException e) { ui.errorDisplay(e); e.printStackTrace(); - ui.display("Tasks were unable to be saved, if you still wish to quit without" + ui.dukeDisplay("Tasks were unable to be saved, if you still wish to quit without" + "saving, try using \"forcequit\" "); } break; case FORCEQUIT: try { storage.refreshStorage(tasks); - ui.display("Tasks saved successfully! Exiting now!"); + ui.dukeDisplay("Tasks saved successfully! Exiting now!"); System.exit(0); } catch (IOException e) { e.printStackTrace(); ui.errorDisplay(e); - ui.display("Tasks not saved, exiting now!"); + ui.dukeDisplay("Tasks not saved, exiting now!"); System.exit(0); } break; diff --git a/src/main/java/duke/DialogBox.java b/src/main/java/duke/DialogBox.java new file mode 100644 index 0000000000..fb1e918ca0 --- /dev/null +++ b/src/main/java/duke/DialogBox.java @@ -0,0 +1,46 @@ +package duke; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + + +public class DialogBox extends HBox { + private Label text; + private ImageView displayPicture; + + public DialogBox(Label l, ImageView iv) { + text = l; + displayPicture = iv; + + text.setWrapText(true); + displayPicture.setFitWidth(100.0); + displayPicture.setFitHeight(100.0); + + this.setAlignment(Pos.TOP_RIGHT); + this.getChildren().addAll(text, displayPicture); + } + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + this.setAlignment(Pos.TOP_LEFT); + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + FXCollections.reverse(tmp); + this.getChildren().setAll(tmp); + } + + public static DialogBox getUserDialog(Label l, ImageView iv) { + return new DialogBox(l, iv); + } + + public static DialogBox getDukeDialog(Label l, ImageView iv) { + var db = new DialogBox(l, iv); + db.flip(); + return db; + } +} diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 0bcc1e4ada..1c7b02c470 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -8,42 +8,114 @@ import elems.Storage; import elems.TaskList; import elems.Ui; +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; /** * The main program that runs the task list chatbot Duke * @author clydelhui */ -public class Duke { +public class Duke extends Application { - /** - * The main method - * @param args nil - */ - public static void main(String[] args) { + private ScrollPane scrollPane; + private VBox dialogContainer; + private TextField userInput; + private Button sendButton; + private Scene scene; + private Image user = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); + private Image duke = new Image(this.getClass().getResourceAsStream("/images/DaDuke.jpg")); + @Override + public void start(Stage stage) { + //Step 1. Setting up required components - Scanner usrInput = new Scanner(System.in); - Ui ui = new Ui(usrInput); + //The container for the content of the chat to scroll. + scrollPane = new ScrollPane(); + dialogContainer = new VBox(); + scrollPane.setContent(dialogContainer); - ui.welcome(); + userInput = new TextField(); + sendButton = new Button("Send"); - Storage storage = new Storage("data.txt", ui); + AnchorPane mainLayout = new AnchorPane(); + mainLayout.getChildren().addAll(scrollPane, userInput, sendButton); - TaskList taskList = new TaskList(storage, ui); + scene = new Scene(mainLayout); + + stage.setScene(scene); + stage.show(); + + //Step 2. Formatting the window to look as expected + stage.setTitle("Duke"); + stage.setResizable(false); + stage.setMinHeight(600.0); + stage.setMinWidth(400.0); + + mainLayout.setPrefSize(400.0, 600.0); + + scrollPane.setPrefSize(385, 535); + scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); + scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS); + + scrollPane.setVvalue(1.0); + scrollPane.setFitToWidth(true); + + // You will need to import `javafx.scene.layout.Region` for this. + dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE); + + userInput.setPrefWidth(325.0); + + sendButton.setPrefWidth(55.0); + AnchorPane.setTopAnchor(scrollPane, 1.0); + + AnchorPane.setBottomAnchor(sendButton, 1.0); + AnchorPane.setRightAnchor(sendButton, 1.0); + + AnchorPane.setLeftAnchor(userInput , 1.0); + AnchorPane.setBottomAnchor(userInput, 1.0); + + Ui ui = new Ui(dialogContainer, user, duke, userInput); + Storage storage = new Storage("data.txt", ui); + TaskList taskList = new TaskList(storage, ui); Parser parser = new Parser(); - String input = ""; - while (true) { - input = ui.getInput(); - try { - Command command = parser.parse(input); - command.execute(taskList, ui, storage); - } catch (DukeException e) { - ui.errorDisplay(e); - } - } + //Part 3. Add functionality to handle user input. + sendButton.setOnMouseClicked((event) -> { + handleUserInput(ui, storage, taskList, parser); + }); + userInput.setOnAction((event) -> { + handleUserInput(ui, storage, taskList, parser); + }); + //Scroll down to the end every time dialogContainer's height changes. + dialogContainer.heightProperty().addListener((observable) -> scrollPane.setVvalue(1.0)); + } + + /** + * Iteration 2: + * 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. + */ + + private void handleUserInput(Ui ui, Storage storage, TaskList taskList, Parser parser) { + String input = ui.getInput(); + try { + Command command = parser.parse(input); + command.execute(taskList, ui, storage); + } catch (DukeException e) { + ui.errorDisplay(e); + } } } diff --git a/src/main/java/duke/Launcher.java b/src/main/java/duke/Launcher.java new file mode 100644 index 0000000000..9438ec7d71 --- /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(Duke.class, args); + } +} diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java index 5715b2d0ea..5e3be666c9 100644 --- a/src/main/java/elems/Parser.java +++ b/src/main/java/elems/Parser.java @@ -21,7 +21,8 @@ public class Parser { private static final HashSet addKeywords = new HashSet<>(Arrays.asList("todo", "deadline", "event")); private static final HashSet deleteKeywords = new HashSet<>(Arrays.asList("delete")); - private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit", "find")); + private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", + "bye", "forcequit", "find")); private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); /** diff --git a/src/main/java/elems/Storage.java b/src/main/java/elems/Storage.java index a2da378634..55759fae0b 100644 --- a/src/main/java/elems/Storage.java +++ b/src/main/java/elems/Storage.java @@ -26,9 +26,9 @@ public Storage(String filePathName, Ui ui) { try { boolean createdFile = dataFile.createNewFile(); if (createdFile) { - ui.display("Data file successfully created!"); + ui.dukeDisplay("Data file successfully created!"); } else { - ui.display("Data file already exists!"); + ui.dukeDisplay("Data file already exists!"); } } catch (IOException e) { ui.errorDisplay(e); diff --git a/src/main/java/elems/TaskList.java b/src/main/java/elems/TaskList.java index 84002b4141..fa1c8e47bc 100644 --- a/src/main/java/elems/TaskList.java +++ b/src/main/java/elems/TaskList.java @@ -28,7 +28,7 @@ public TaskList(Storage storage, Ui ui) { loadFromStorageText(storage.load()); } catch (FileNotFoundException | StorageException e) { ui.errorDisplay(e); - ui.display("Issue with the storage file, generating empty list!"); + ui.dukeDisplay("Issue with the storage file, generating empty list!"); this.taskList = new ArrayList<>(); } @@ -55,7 +55,7 @@ public Task delete(int index) throws TaskListIndexOutOfBoundsException { * @return A string array containing the String representation of * * all the Tasks in the TaskList */ - public String[] enumerate(){ + public String[] enumerate() { int length = this.taskList.size(); String[] taskStringList = new String[length]; for (int i = 0; i < length; i++) { @@ -99,7 +99,8 @@ public void unmarkTask(int index) throws TaskListIndexOutOfBoundsException { public String getListStorageText() { StringBuilder output = new StringBuilder(); for (Task task : this.taskList) { - output.append(task.generateStorageForm() + System.lineSeparator()); + String taskText = task.generateStorageForm() + System.lineSeparator(); + output.append(taskText); } return output.toString(); } @@ -109,9 +110,13 @@ public String getTaskString(int index) { return task.toString(); } -<<<<<<< HEAD - private void loadFromStorageText(ArrayList storageText) throws StorageException { -======= + /** + * Returns a String array which contains the String representations of the Tasks in the TaskList + * with descriptions that contain the given String search term + * @param searchTerm The search term to find in the descriptions of the Tasks + * @return A String array which contains the String representations of the Tasks in the TaskList + * with descriptions that contain the given String search term + */ public String[] searchTaskDescription(String searchTerm) { ArrayList matchingItems = new ArrayList<>(); for (Task current : this.taskList) { @@ -127,9 +132,7 @@ public String[] searchTaskDescription(String searchTerm) { matchingItems.toArray(result); return result; } - - private void loadFromStorageText(ArrayList storageText) { ->>>>>>> branch-Level-9 + private void loadFromStorageText(ArrayList storageText) throws StorageException { this.taskList = new ArrayList<>(); String[] taskStringArray = storageText.toArray(new String[0]); diff --git a/src/main/java/elems/Ui.java b/src/main/java/elems/Ui.java index 25b261a2bd..a2354c5bc3 100644 --- a/src/main/java/elems/Ui.java +++ b/src/main/java/elems/Ui.java @@ -1,6 +1,11 @@ package elems; -import java.util.Scanner; +import duke.DialogBox; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.VBox; /** * Represents the User Interface that takes in input and displays output to the user @@ -14,27 +19,41 @@ public class Ui { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; - private final Scanner userInput; + private final VBox dialogContainer; + private final Image userImage; + private final Image dukeImage; + private final TextField userInput; - public Ui(Scanner userInput) { + public Ui(VBox dialogContainer, Image userImage, Image dukeImage, TextField userInput) { + this.dialogContainer = dialogContainer; + this.userImage = userImage; + this.dukeImage = dukeImage; this.userInput = userInput; } - public void display(String displayText) { - System.out.println(displayText); + public void dukeDisplay(String displayText) { + Label dukeText = new Label(displayText); + dialogContainer.getChildren().addAll( + DialogBox.getDukeDialog(dukeText, new ImageView(dukeImage)) + ); } public String getInput() { - String input = this.userInput.nextLine(); + String input = userInput.getText(); + Label userText = new Label(input); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(userText, new ImageView(userImage)) + ); + userInput.clear(); return input; } public void welcome() { - System.out.println("Hello from\n" + Ui.logo); + dukeDisplay("Hello from\n" + Ui.logo); } public void errorDisplay(Exception exception) { - System.err.println(exception.getMessage()); + dukeDisplay(exception.getMessage()); } } diff --git a/src/main/resources/images/DaDuke.jpg b/src/main/resources/images/DaDuke.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0bb48118534ecc287bf345727220ea1ecb7b8d54 GIT binary patch literal 52327 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/DaUser.png b/src/main/resources/images/DaUser.png new file mode 100644 index 0000000000000000000000000000000000000000..581e5be7ac9bae680865aec564725d3ae0eb349b GIT binary patch literal 273163 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
YcZK0!O1<6IC2SafmSeQ;ezT|~; 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�A2rM!Kjq8XP-f~uRdA5tVN!9}wU#{9 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 Yf3;Xu0Kg0fQ~&?~07*qoM6N<$f-oBb=Kufz literal 0 HcmV?d00001 From ad01988b334c2f00d5f80dedeafec25733b20fb9 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Sat, 18 Feb 2023 10:12:10 +0800 Subject: [PATCH 17/21] add assertions When TaskList methods are called, the ArrayList of Tasks should never be null. Adding assertions allows us to ensure that this invariant is always true. Let's add assertions to the TaskList methods to ensure that all TaskList Objects which are targets for method invocation have non-null ArrayLists at the time of method calling. --- src/main/java/duke/Duke.java | 4 ---- src/main/java/elems/TaskList.java | 6 ++++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 1c7b02c470..b9f01acfc9 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,7 +1,5 @@ package duke; -import java.util.Scanner; - import commands.Command; import dukeexceptions.DukeException; import elems.Parser; @@ -11,11 +9,9 @@ import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; -import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; import javafx.scene.control.TextField; import javafx.scene.image.Image; -import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; diff --git a/src/main/java/elems/TaskList.java b/src/main/java/elems/TaskList.java index fa1c8e47bc..c13c2cf96a 100644 --- a/src/main/java/elems/TaskList.java +++ b/src/main/java/elems/TaskList.java @@ -41,6 +41,7 @@ public TaskList(Storage storage, Ui ui) { * @throws TaskListIndexOutOfBoundsException if the index given is out of bounds of the TaskList */ public Task delete(int index) throws TaskListIndexOutOfBoundsException { + assert this.taskList != null; try { return this.taskList.remove(index - 1); } catch (IndexOutOfBoundsException e) { @@ -56,6 +57,7 @@ public Task delete(int index) throws TaskListIndexOutOfBoundsException { * * all the Tasks in the TaskList */ public String[] enumerate() { + assert this.taskList != null; int length = this.taskList.size(); String[] taskStringList = new String[length]; for (int i = 0; i < length; i++) { @@ -65,6 +67,7 @@ public String[] enumerate() { } public void addTask(Task newTask) { + assert this.taskList != null; this.taskList.add(newTask); } @@ -74,6 +77,7 @@ public void addTask(Task newTask) { * @throws TaskListIndexOutOfBoundsException when the index is out of bounds of the TaskList */ public void markTask(int index) throws TaskListIndexOutOfBoundsException { + assert this.taskList != null; try { Task mark = this.taskList.get(index - 1); mark.setDone(); @@ -88,6 +92,7 @@ public void markTask(int index) throws TaskListIndexOutOfBoundsException { * @throws TaskListIndexOutOfBoundsException when an index is out of bounds of the given TaskList */ public void unmarkTask(int index) throws TaskListIndexOutOfBoundsException { + assert this.taskList != null; try { Task unmark = this.taskList.get(index - 1); unmark.setNotDone(); @@ -118,6 +123,7 @@ public String getTaskString(int index) { * with descriptions that contain the given String search term */ public String[] searchTaskDescription(String searchTerm) { + assert this.taskList != null; ArrayList matchingItems = new ArrayList<>(); for (Task current : this.taskList) { String currentDescription = current.getDescription(); From 4f0e56a07fc3d3ddc44a3ed34e22d727ee1025c2 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Sun, 19 Feb 2023 17:11:05 +0800 Subject: [PATCH 18/21] Improve code quality execute method in the AddCommmand class is long and can be hard to debug in the future. If more commands are added, the code will get even longer. Let's abstract out the steps taken in each case into a separate method. Future additions of AddCommands can adopt the same style of execution. --- src/main/java/commands/AddCommand.java | 59 ++++++++++++++--------- src/main/java/commands/DeleteCommand.java | 3 +- src/main/java/elems/Parser.java | 6 ++- src/main/java/elems/Storage.java | 3 +- 4 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/main/java/commands/AddCommand.java b/src/main/java/commands/AddCommand.java index 2ab5393c32..cc62cc5727 100644 --- a/src/main/java/commands/AddCommand.java +++ b/src/main/java/commands/AddCommand.java @@ -68,36 +68,16 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException if (this.params.size() == 0 || this.params.size() > 3) { throw new IllegalInputException("Wrong number of arguments to make a task!"); } - Task addedTask = null; + Task addedTask; switch (this.taskType) { case TODO: - if (this.params.size() != 1) { - throw new IllegalInputException("Too many arguments for a todo!"); - } else if (this.params.get(0).isEmpty()) { - throw new IllegalInputException("Cannot make a todo without a description!"); - } - addedTask = new ToDo(this.params.get(0)); + addedTask = makeTodo(); break; case DEADLINE: - if (this.params.size() != 2) { - throw new IllegalInputException("Wrong number of arguments for a deadline!"); - } - try { - addedTask = new Deadline(this.params.get(0), LocalDate.parse(this.params.get(1))); - } catch (DateTimeParseException e) { - throw new IllegalInputException("You have keyed in an invalid date"); - } + addedTask = makeDeadline(); break; case EVENT: - if (this.params.size() != 3) { - throw new IllegalInputException("Wrong number of arguments for an Event!"); - } - try { - addedTask = new Event(this.params.get(0), - LocalDate.parse(this.params.get(1)), LocalDate.parse(this.params.get(2))); - } catch (DateTimeParseException e) { - throw new IllegalInputException("You have keyed in an invalid date"); - } + addedTask = makeEvent(); break; default: throw new IllegalCommandException("Unable to add task"); @@ -113,6 +93,37 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException ui.errorDisplay(e); e.printStackTrace(); } + } + + private Task makeTodo() throws IllegalInputException { + if (this.params.size() != 1) { + throw new IllegalInputException("Too many arguments for a todo!"); + } else if (this.params.get(0).isEmpty()) { + throw new IllegalInputException("Cannot make a todo without a description!"); + } + return new ToDo(this.params.get(0)); + } + + private Task makeDeadline() throws IllegalInputException { + if (this.params.size() != 2) { + throw new IllegalInputException("Wrong number of arguments for a deadline!"); + } + try { + return new Deadline(this.params.get(0), LocalDate.parse(this.params.get(1))); + } catch (DateTimeParseException e) { + throw new IllegalInputException("You have keyed in an invalid date"); + } + } + private Task makeEvent() throws IllegalInputException { + if (this.params.size() != 3) { + throw new IllegalInputException("Wrong number of arguments for an Event!"); + } + try { + return new Event(this.params.get(0), + LocalDate.parse(this.params.get(1)), LocalDate.parse(this.params.get(2))); + } catch (DateTimeParseException e) { + throw new IllegalInputException("You have keyed in an invalid date"); + } } } diff --git a/src/main/java/commands/DeleteCommand.java b/src/main/java/commands/DeleteCommand.java index 0a44e3cb4b..541a1a49ca 100644 --- a/src/main/java/commands/DeleteCommand.java +++ b/src/main/java/commands/DeleteCommand.java @@ -52,7 +52,7 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException ui.dukeDisplay("Successfully deleted the following task! \n" + deleted.toString()); } catch (NumberFormatException e) { - throw new IllegalInputException("Invalid task index chosed!"); + throw new IllegalInputException("Seems like you didn't key in an integer?"); } catch (TaskListIndexOutOfBoundsException e) { ui.errorDisplay(e); } catch (IOException e) { @@ -60,7 +60,6 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException + "Any updates will not be saved!"); ui.errorDisplay(e); e.printStackTrace(); - } } } diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java index 5e3be666c9..88ec2c7794 100644 --- a/src/main/java/elems/Parser.java +++ b/src/main/java/elems/Parser.java @@ -24,6 +24,8 @@ public class Parser { private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit", "find")); private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); + private static final String COMMAND_SEPARATOR = " "; + private static final String PARAM_SEPARATOR = "/"; /** * Returns an appropriate Command given the user's String input @@ -32,11 +34,11 @@ public class Parser { * @throws IllegalCommandException when an invalid input has been given */ public Command parse(String input) throws IllegalCommandException { - String[] commandSplit = input.split(" ", 2); + String[] commandSplit = input.split(COMMAND_SEPARATOR, 2); String keyword = commandSplit[0]; String paramChain = commandSplit.length == 1 ? "" : commandSplit[1]; - String[] parsedParams = paramChain.split("/"); + String[] parsedParams = paramChain.split(PARAM_SEPARATOR); ArrayList params = new ArrayList<>(Arrays.asList(parsedParams)); diff --git a/src/main/java/elems/Storage.java b/src/main/java/elems/Storage.java index 55759fae0b..241aa6274c 100644 --- a/src/main/java/elems/Storage.java +++ b/src/main/java/elems/Storage.java @@ -57,9 +57,8 @@ public void refreshStorage(TaskList taskList) throws IOException { * @throws FileNotFoundException when the file to load the text from is not found */ public ArrayList load() throws FileNotFoundException { - Scanner scanner = null; ArrayList taskText = new ArrayList<>(); - scanner = new Scanner(dataFile); + Scanner scanner = new Scanner(dataFile); while (scanner.hasNextLine()) { taskText.add(scanner.nextLine()); } From d908fae545c314a7415be1d1f512e1e655c90b45 Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:43:28 +0800 Subject: [PATCH 19/21] add sort functionality, empty list exception The user may wish to sort the task list by description to make it easy to read. Let's add a sorting feature to enable the user to do this. Some commands such as list and sort will access the list elements. If the list is empty, they are unable to work as intended. Let's add an exception to show the case when an empty list is being accessed by commands that work with the whole list. --- src/main/java/commands/ListModifyCommand.java | 63 +++++++++++++++++++ src/main/java/commands/VoidCommand.java | 25 +++++--- src/main/java/duke/Duke.java | 1 + .../EmptyTaskListException.java | 15 +++++ src/main/java/elems/Parser.java | 9 ++- src/main/java/elems/TaskList.java | 11 ++++ src/main/java/items/Task.java | 6 +- 7 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 src/main/java/commands/ListModifyCommand.java create mode 100644 src/main/java/dukeexceptions/EmptyTaskListException.java diff --git a/src/main/java/commands/ListModifyCommand.java b/src/main/java/commands/ListModifyCommand.java new file mode 100644 index 0000000000..f2d4e81fb2 --- /dev/null +++ b/src/main/java/commands/ListModifyCommand.java @@ -0,0 +1,63 @@ +package commands; + +import java.io.IOException; +import java.util.ArrayList; + +import dukeexceptions.DukeException; +import dukeexceptions.EmptyTaskListException; +import dukeexceptions.IllegalCommandException; +import dukeexceptions.IllegalInputException; +import elems.Storage; +import elems.TaskList; +import elems.Ui; + +/** + * Represents a Command that modifies a TaskList without changing any of the Tasks + * within the TaskList + * @author clydelhui + */ +public class ListModifyCommand extends Command { + + /** + * Creates a new ListModifyCommand + * @param keyword The keyword for the command + * @param params The parameters for the command + * @throws IllegalCommandException when the command is not recognised as valid + */ + public ListModifyCommand(String keyword, ArrayList params) throws IllegalCommandException { + super(keyword, params); + if (!"sort".equals(keyword)) { + throw new IllegalCommandException("Invalid ListModifyCommand"); + } + } + + /** + * Executes the ListModifyCommand with the given TaskList, + * Ui and Storage + * + * @param tasks The TaskList to be acted on by the Command + * @param ui The Ui to be acted on by the Command + * @param storage The Storage to be acted on by the Command + * @throws dukeexceptions.DukeException when the Command is unable to be executed + */ + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (this.params.size() != 1 && !this.params.get(0).equals("")) { + throw new IllegalInputException("Wrong number of arguments!"); + } + if (tasks.getSize() == 0) { + throw new EmptyTaskListException("Trying to sort an empty task list"); + } + try { + tasks.sortByDescription(); + storage.refreshStorage(tasks); + ui.dukeDisplay("I have sorted the list by description!\nTry using the \"list\"" + + "command to see the new ordering of the list"); + } catch (IOException e) { + ui.dukeDisplay("Seems like there is something wrong with the storage file \n" + + "Any updates will not be saved!"); + ui.errorDisplay(e); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/commands/VoidCommand.java b/src/main/java/commands/VoidCommand.java index 485d6ab4af..128ed49bc3 100644 --- a/src/main/java/commands/VoidCommand.java +++ b/src/main/java/commands/VoidCommand.java @@ -3,7 +3,9 @@ import java.io.IOException; import java.util.ArrayList; +import duke.Duke; import dukeexceptions.DukeException; +import dukeexceptions.EmptyTaskListException; import dukeexceptions.IllegalCommandException; import dukeexceptions.IllegalInputException; import elems.Storage; @@ -64,29 +66,34 @@ public VoidCommand(String keyword, ArrayList params) throws IllegalComma public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { switch (voidType) { case LIST: + if (tasks.getSize() == 0) { + throw new EmptyTaskListException("Trying to list an empty task list"); + } String[] taskStringList = tasks.enumerate(); int listSize = taskStringList.length; - String listOutput = new String(); + StringBuilder listOutput = new StringBuilder(); for (int i = 0; i < listSize; i++) { - listOutput += i + 1 + ":" + taskStringList[i] + "\n"; + listOutput.append(i + 1).append(":").append(taskStringList[i]).append("\n"); } - ui.dukeDisplay(listOutput); + ui.dukeDisplay(listOutput.toString()); break; case FIND: if (this.params.size() > 2) { throw new IllegalInputException("Only 1 word can be searched at a time"); } + if (tasks.getSize() == 0) { + throw new EmptyTaskListException("Trying to find something in an empty list"); + } String[] foundTasks = tasks.searchTaskDescription(this.params.get(0)); - String findOutput = "I have found the following tasks!\n"; + StringBuilder findOutput = new StringBuilder("I have found the following tasks!\n"); for (int i = 0; i < foundTasks.length; i++) { - findOutput += i + 1 + ":" + foundTasks[i] + "\n"; + findOutput.append(i + 1).append(":").append(foundTasks[i]).append("\n"); } - ui.dukeDisplay(findOutput); + ui.dukeDisplay(findOutput.toString()); break; case BYE: try { storage.refreshStorage(tasks); - ui.dukeDisplay("Tasks saved successfully! Goodbye!"); System.exit(0); } catch (IOException e) { ui.errorDisplay(e); @@ -98,12 +105,10 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException case FORCEQUIT: try { storage.refreshStorage(tasks); - ui.dukeDisplay("Tasks saved successfully! Exiting now!"); System.exit(0); } catch (IOException e) { - e.printStackTrace(); ui.errorDisplay(e); - ui.dukeDisplay("Tasks not saved, exiting now!"); + e.printStackTrace(); System.exit(0); } break; diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index b9f01acfc9..7e6880bf85 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -30,6 +30,7 @@ public class Duke extends Application { private Scene scene; private Image user = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); private Image duke = new Image(this.getClass().getResourceAsStream("/images/DaDuke.jpg")); + private static boolean isClosing = false; @Override public void start(Stage stage) { diff --git a/src/main/java/dukeexceptions/EmptyTaskListException.java b/src/main/java/dukeexceptions/EmptyTaskListException.java new file mode 100644 index 0000000000..1ea1b077f9 --- /dev/null +++ b/src/main/java/dukeexceptions/EmptyTaskListException.java @@ -0,0 +1,15 @@ +package dukeexceptions; + +/** + * An exception thrown when operations are performed on an empty TaskList. + */ +public class EmptyTaskListException extends DukeException { + public EmptyTaskListException(String s) { + super(s); + } + + @Override + public String toString() { + return "The Task List is currently empty!" + getMessage(); + } +} diff --git a/src/main/java/elems/Parser.java b/src/main/java/elems/Parser.java index 88ec2c7794..c80ef3c6cb 100644 --- a/src/main/java/elems/Parser.java +++ b/src/main/java/elems/Parser.java @@ -4,11 +4,7 @@ import java.util.Arrays; import java.util.HashSet; -import commands.AddCommand; -import commands.Command; -import commands.DeleteCommand; -import commands.ModifyCommand; -import commands.VoidCommand; +import commands.*; import dukeexceptions.IllegalCommandException; /** @@ -24,6 +20,7 @@ public class Parser { private static final HashSet voidKeywords = new HashSet<>(Arrays.asList("list", "bye", "forcequit", "find")); private static final HashSet modifyKeywords = new HashSet<>(Arrays.asList("mark", "unmark")); + private static final HashSet listModifyKeywords = new HashSet<>(Arrays.asList("sort")); private static final String COMMAND_SEPARATOR = " "; private static final String PARAM_SEPARATOR = "/"; @@ -52,6 +49,8 @@ public Command parse(String input) throws IllegalCommandException { parsedCommand = new VoidCommand(keyword, params); } else if (modifyKeywords.contains(keyword)) { parsedCommand = new ModifyCommand(keyword, params); + } else if (listModifyKeywords.contains(keyword)) { + parsedCommand = new ListModifyCommand(keyword, params); } else { throw new IllegalCommandException("You have entered an invalid command"); } diff --git a/src/main/java/elems/TaskList.java b/src/main/java/elems/TaskList.java index c13c2cf96a..49808d3104 100644 --- a/src/main/java/elems/TaskList.java +++ b/src/main/java/elems/TaskList.java @@ -66,6 +66,10 @@ public String[] enumerate() { return taskStringList; } + /** + * Adds a new Task to the TaskList + * @param newTask The Task to be added. + */ public void addTask(Task newTask) { assert this.taskList != null; this.taskList.add(newTask); @@ -162,4 +166,11 @@ private void loadFromStorageText(ArrayList storageText) throws StorageEx } } } + + public void sortByDescription() { + this.taskList.sort(null); + } + public int getSize() { + return this.taskList.size(); + } } diff --git a/src/main/java/items/Task.java b/src/main/java/items/Task.java index e8daaa528d..fea16a27a3 100644 --- a/src/main/java/items/Task.java +++ b/src/main/java/items/Task.java @@ -4,7 +4,7 @@ * An abstract class the represents the types of tasks that can be added to the list * @author clydelhui */ -public abstract class Task { +public abstract class Task implements Comparable { protected String description; protected boolean isDone; protected String taskType; @@ -59,4 +59,8 @@ public String getDescription() { @Override public abstract String toString(); + @Override + public int compareTo(Task o) { + return this.description.compareTo(o.getDescription()); + } } From 9d7b757af713373fc331b447e599ab2fafe5d80a Mon Sep 17 00:00:00 2001 From: Clyde Lhui <62978225+clydelhui@users.noreply.github.com> Date: Mon, 20 Feb 2023 19:08:19 +0800 Subject: [PATCH 20/21] update README.md, make minor bug fixes --- build.gradle | 4 +- docs/README.md | 131 +++++++++++++++++++++--- docs/Ui.png | Bin 0 -> 126986 bytes src/main/java/commands/VoidCommand.java | 13 ++- src/main/java/duke/DialogBox.java | 9 +- src/main/java/duke/Duke.java | 2 +- src/main/java/elems/Parser.java | 7 +- src/main/java/elems/Ui.java | 11 ++ 8 files changed, 152 insertions(+), 25 deletions(-) create mode 100644 docs/Ui.png diff --git a/build.gradle b/build.gradle index ac3b375d7f..a9549285a4 100644 --- a/build.gradle +++ b/build.gradle @@ -45,11 +45,11 @@ test { } application { - mainClassName = "Duke" + mainClassName = "duke.Launcher" } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "duke.Launcher" archiveClassifier = null } diff --git a/docs/README.md b/docs/README.md index 8077118ebe..d8e3a53e28 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,29 +1,130 @@ -# User Guide +# Duke User Guide + +Duke is a chatbot that helps you to track your tasks via a **Command Line Interface (CLI)**. +Duke allows you to quickly perform tasks by typing commands into the chatbox. ## Features +[X] Track Deadlines, Todos and Events +[X] Mark tasks as done +[X] Store data on your local device +[X] Sort your task list for easy management +[X] Search for relevant tasks -### Feature-ABC +## Installation Guide +1. Ensure that you have Java 11 installed on your computer. If you don't have it installed, you can get it +[here](https://www.oracle.com/java/technologies/downloads/#java11). +4. Download the latest release of Duke from [here](https://github.com/clydelhui/ip/releases) +5. Open a terminal in the directory which contains the `duke.Launcher.jar` file that you downloaded +6. Run the command `java -jar .\duke.Launcher.jar` -Description of the feature. +## Usage -### Feature-XYZ +### Listing items currently in the list: `list` -Description of the feature. +Lists all the items currently stored by Duke in the order it is stored. +
Format: `list` +
+
-## Usage +### Adding a todo: `todo` +Adds a todo to Duke's task list.
+Format: `todo [task]`

+Examples: +- `todo buy eggs` +- `todo feed cat` +
+
+ + +### Adding a deadline: `deadline` +Adds a deadline to Duke's task list.
+Format: `deadline [task] /[YYYY-MM-DD]`

+Examples: +- `deadline file taxes /2023-03-15` +- `deadline buy presents /2023-04-13` +
+
+ + +### Adding an event: `event` +Adds an event to Duke's task list.
+Format: `event [task] /[YYYY-MM-DD]/[YYYY-MM-DD]`

+- The first date is the start date of the event and the second is the end date +Examples: +- `event food fair /2018-03-10/2018-03-11` +- `event project showcase /2018-05-23/2018-05-26` +
+
+ +### Marking a task: `mark` +Marks an existing task as done.
+Format: `mark [task number]`
+- Marks the task as done +- The `task number` refers to the index number shown in the displayed task list. +- The index must be a positive integer starting from 1.

+ Examples: +- `mark 1` +- `mark 3` +
+
+ +### Un-marking a task: `unmark` +Un-marks an existing task as not done.
+Format: `unmark [task number]`
+- Un-marks the task +- The `task number` refers to the index number shown in the displayed task list. +- The index must be a positive integer starting from 1.

+ Examples: +- `unmark 1` +- `unmark 3` +
+
+ +### Locating a task: `find` +Find tasks whose description contain the given keyword.
+Format: `find [keyword]`
+- The search is case-sensitive.

+ Examples: +- `find assignment` returns `[T][X]todo math assignment` +- `find science` returns `[D][X]deadline science homework /2023-03-15` +
+
-### `Keyword` - Describe action -Describe the action and its outcome. +### Deleting a task: `delete` +Deletes the task at the specified task number from the task list.
+Format: `delete [task number]`
+- Deletes the task +- The `task number` refers to the index number shown in the displayed task list. +- The index must be a positive integer starting from 1.

+ Examples: +- `delete 1` +- `delete 2` +
+
-Example of usage: +### Sorting the task list: `sort` +Sorts the items in the task list by description.
+Format: `sort` +
+
-`keyword (optional arguments)` +### Exiting the program: `bye` +Exits the program after saving the data in the task list.
+Format: `bye` +
+
-Expected outcome: +### Exiting the program forcefully: `forcequit` +Exits the program even if the data cannot be saved.
+Format: `forcequit` +
+
-Description of the outcome. -``` -expected output -``` +### Saving the data +Duke's data is saved in the hard disk automatically in your local directory where your `duke.Launcher.jar` file +is saved in after any command that changes the data. You do not need to save the data manually. +
+
+*** \ No newline at end of file diff --git a/docs/Ui.png b/docs/Ui.png new file mode 100644 index 0000000000000000000000000000000000000000..5301158375c72fdf5a73051254e81dfaa4ab00cd GIT binary patch literal 126986 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

r953zj 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 q33mQ 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 Date: Tue, 21 Feb 2023 22:33:43 +0800 Subject: [PATCH 21/21] Modify README.md --- docs/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index d8e3a53e28..b01cce1313 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,11 +4,11 @@ Duke is a chatbot that helps you to track your tasks via a **Command Line Interf Duke allows you to quickly perform tasks by typing commands into the chatbox. ## Features -[X] Track Deadlines, Todos and Events -[X] Mark tasks as done -[X] Store data on your local device -[X] Sort your task list for easy management -[X] Search for relevant tasks +- [X] Track Deadlines, Todos and Events +- [X] Mark tasks as done +- [X] Store data on your local device +- [X] Sort your task list for easy management +- [X] Search for relevant tasks ## Installation Guide 1. Ensure that you have Java 11 installed on your computer. If you don't have it installed, you can get it