From 556af3f47a96b32898ab4cdbd65b16486a4871e8 Mon Sep 17 00:00:00 2001 From: damithc Date: Mon, 25 May 2020 00:58:18 +0800 Subject: [PATCH 01/31] 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 f6fd68b1ad5c5525c04d446dfeb23250175002e8 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Mon, 15 Aug 2022 01:07:51 +0800 Subject: [PATCH 02/31] Level-1 Done --- src/main/java/Duke.java | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..145a37c220 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,29 @@ +import java.util.Scanner; + public class Duke { + private static Scanner scanner = new Scanner(System.in); + + private static void speak(String message) { + System.out.println("============================================================\n"); + System.out.println(message); + System.out.println("\n============================================================"); + } + + private static void greet() { + speak(" Greetings! My Name is Alfred ^_^\n How may I be of service today?"); + } + public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); + greet(); + + String cmd = ""; + while (!cmd.equals("bye")) { + cmd = scanner.nextLine().trim(); + if (!cmd.equals("bye")) { + speak(" " + cmd); + } else { + speak(" Farewell!"); + } + } } } From 7378eb96bf00b0f91878d738bbcb754b7ee5eb9e Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Tue, 16 Aug 2022 10:32:23 +0800 Subject: [PATCH 03/31] Level-2 Done --- src/main/java/Duke.java | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 145a37c220..c821ff877b 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,15 +2,43 @@ public class Duke { private static Scanner scanner = new Scanner(System.in); + private static String[] tasks = new String[100]; + + /** + * Points to the current index of tasks to insert the next task in + */ + private static int pointer = 0; private static void speak(String message) { System.out.println("============================================================\n"); System.out.println(message); - System.out.println("\n============================================================"); + System.out.println("============================================================"); } private static void greet() { - speak(" Greetings! My Name is Alfred ^_^\n How may I be of service today?"); + speak(" Greetings! My Name is Alfred ^_^\n How may I be of service today?\n"); + } + + private static void goodbye() { + speak(" Farewell!\n"); + } + + private static void listTasks() { + if (pointer == 0) { + speak(" You have not added any tasks!\n"); + } else { + String result = ""; + for (int i = 0; i < pointer; i++) { + result += " " + (i + 1) + ". " + tasks[i] + "\n"; + } + speak(result); + } + } + + private static void addTask(String task) { + tasks[pointer] = task; + pointer++; + speak(" added: " + task + "\n"); } public static void main(String[] args) { @@ -19,10 +47,12 @@ public static void main(String[] args) { String cmd = ""; while (!cmd.equals("bye")) { cmd = scanner.nextLine().trim(); - if (!cmd.equals("bye")) { - speak(" " + cmd); + if (cmd.equals("bye")) { + goodbye(); + } else if (cmd.equals("list")) { + listTasks(); } else { - speak(" Farewell!"); + addTask(cmd); } } } From a044c101a976a1ad567092b6d92e319c756c9cb0 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Tue, 16 Aug 2022 11:29:53 +0800 Subject: [PATCH 04/31] Level-3 Done --- src/main/java/Duke.java | 38 ++++++++++++++++++++++++++++++++++---- src/main/java/Task.java | 27 +++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 src/main/java/Task.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index c821ff877b..0e6b4e3844 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,7 +2,7 @@ public class Duke { private static Scanner scanner = new Scanner(System.in); - private static String[] tasks = new String[100]; + private static Task[] tasks = new Task[100]; /** * Points to the current index of tasks to insert the next task in @@ -27,20 +27,36 @@ private static void listTasks() { if (pointer == 0) { speak(" You have not added any tasks!\n"); } else { - String result = ""; + String result = " Here are your current tasks:\n"; for (int i = 0; i < pointer; i++) { - result += " " + (i + 1) + ". " + tasks[i] + "\n"; + result += " " + (i + 1) + "." + tasks[i].toString(); } speak(result); } } private static void addTask(String task) { - tasks[pointer] = task; + tasks[pointer] = new Task(task); pointer++; speak(" added: " + task + "\n"); } + private static void markTask(int taskNum) { + if (taskNum < pointer + 1) { + speak(tasks[taskNum - 1].mark()); + } else { + + } + } + + private static void unmarkTask(int taskNum) { + if (taskNum < pointer + 1) { + speak(tasks[taskNum - 1].unmark()); + } else { + + } + } + public static void main(String[] args) { greet(); @@ -51,6 +67,20 @@ public static void main(String[] args) { goodbye(); } else if (cmd.equals("list")) { listTasks(); + } else if (cmd.split(" ")[0].equals("mark")) { + try { + int num = Integer.parseInt(cmd.split(" ")[1]); + markTask(num); + } catch (NumberFormatException e) { + + } + } else if (cmd.split(" ")[0].equals("unmark")) { + try { + int num = Integer.parseInt(cmd.split(" ")[1]); + unmarkTask(num); + } catch (NumberFormatException e) { + + } } else { addTask(cmd); } diff --git a/src/main/java/Task.java b/src/main/java/Task.java new file mode 100644 index 0000000000..cf1f52b3bd --- /dev/null +++ b/src/main/java/Task.java @@ -0,0 +1,27 @@ +public class Task { + protected String description; + protected boolean isDone; + + public Task(String description) { + this.description = description; + this.isDone = false; + } + + public String mark() { + this.isDone = true; + return " Great job! I will mark the task as completed.\n" + + " " + this.toString(); + } + + public String unmark() { + this.isDone = false; + return " Understood. I will mark the task as uncompleted.\n" + + " " + this.toString(); + } + + @Override + public String toString() { + String symbol = this.isDone ? "X" : " "; + return "[" + symbol + "] " + this.description + "\n"; + } +} From 5fe495db9bc568faaf76197feb3660afd72b43a8 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Tue, 16 Aug 2022 22:57:16 +0800 Subject: [PATCH 05/31] Level-4 Done --- src/main/java/Deadline.java | 14 +++++ src/main/java/Duke.java | 112 ++++++++++++++++++++++++++---------- src/main/java/Event.java | 14 +++++ src/main/java/Task.java | 4 +- src/main/java/Todo.java | 11 ++++ 5 files changed, 124 insertions(+), 31 deletions(-) create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/Event.java create mode 100644 src/main/java/Todo.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 0000000000..e5fb5e13e9 --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,14 @@ +public class Deadline extends Task{ + protected String dateTime; + + public Deadline(String description, String dateTime) { + super(description); + this.dateTime = dateTime; + } + + @Override + public String toString() { + String symbol = this.isDone ? "X" : " "; + return "[D][" + symbol + "] " + this.description + "(by:" + this.dateTime + ")\n"; + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0e6b4e3844..d34b4ad086 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,11 +1,12 @@ import java.util.Scanner; public class Duke { - private static Scanner scanner = new Scanner(System.in); - private static Task[] tasks = new Task[100]; + private static final Scanner scanner = new Scanner(System.in); + private static final Task[] tasks = new Task[100]; /** - * Points to the current index of tasks to insert the next task in + * Points to the index of the tasks array to insert the next task in. + * Also acts as a counter for the number of tasks in the tasks array. */ private static int pointer = 0; @@ -27,22 +28,38 @@ private static void listTasks() { if (pointer == 0) { speak(" You have not added any tasks!\n"); } else { - String result = " Here are your current tasks:\n"; + StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); for (int i = 0; i < pointer; i++) { - result += " " + (i + 1) + "." + tasks[i].toString(); + result.append(" ").append(i + 1).append(".").append(tasks[i].toString()); } - speak(result); + speak(result.toString()); } } - private static void addTask(String task) { - tasks[pointer] = new Task(task); + private static void addTask(int type, String task, String dateTime) { + Task newTask; + switch (type) { + case 0: + newTask = new Todo(task); + break; + case 1: + newTask = new Deadline(task, dateTime); + break; + case 2: + newTask = new Event(task, dateTime); + break; + default: + newTask = new Task(task); + } + tasks[pointer] = newTask; pointer++; - speak(" added: " + task + "\n"); + speak(" Understood. I have added the following task:\n" + + " " + newTask + + " You have a total of " + pointer + " task(s).\n"); } private static void markTask(int taskNum) { - if (taskNum < pointer + 1) { + if (taskNum <= pointer && taskNum > 0) { speak(tasks[taskNum - 1].mark()); } else { @@ -50,40 +67,77 @@ private static void markTask(int taskNum) { } private static void unmarkTask(int taskNum) { - if (taskNum < pointer + 1) { + if (taskNum <= pointer && taskNum > 0) { speak(tasks[taskNum - 1].unmark()); } else { } } - public static void main(String[] args) { - greet(); + private static void parseCommand(String cmd) { + String[] firstParse = cmd.split(" ", 2); + String firstTerm = firstParse[0]; + boolean hasSecondTerm = firstParse.length > 1; - String cmd = ""; - while (!cmd.equals("bye")) { - cmd = scanner.nextLine().trim(); - if (cmd.equals("bye")) { + switch (firstTerm) { + case "bye": goodbye(); - } else if (cmd.equals("list")) { + break; + case "list": listTasks(); - } else if (cmd.split(" ")[0].equals("mark")) { + break; + case "mark": try { - int num = Integer.parseInt(cmd.split(" ")[1]); - markTask(num); + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + markTask(Integer.parseInt(secondTerm)); + break; } catch (NumberFormatException e) { - + break; } - } else if (cmd.split(" ")[0].equals("unmark")) { + case "unmark": try { - int num = Integer.parseInt(cmd.split(" ")[1]); - unmarkTask(num); + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + unmarkTask(Integer.parseInt(secondTerm)); + break; } catch (NumberFormatException e) { - + break; } - } else { - addTask(cmd); - } + case "todo": + if (hasSecondTerm) { + addTask(0, firstParse[1], ""); + } + break; + case "deadline": + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/by", 2); + if (secondParse.length > 1) { + addTask(1, secondParse[0], secondParse[1]); + } + } + break; + case "event": + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/at", 2); + if (secondParse.length > 1) { + addTask(2, secondParse[0], secondParse[1]); + } + } + break; + default: + } + } + + public static void main(String[] args) { + greet(); + + String cmd = ""; + while (!cmd.equals("bye")) { + cmd = scanner.nextLine().trim(); + parseCommand(cmd); } } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java new file mode 100644 index 0000000000..6068085a25 --- /dev/null +++ b/src/main/java/Event.java @@ -0,0 +1,14 @@ +public class Event extends Task{ + protected String dateTime; + + public Event(String description, String dateTime) { + super(description); + this.dateTime = dateTime; + } + + @Override + public String toString() { + String symbol = this.isDone ? "X" : " "; + return "[E][" + symbol + "] " + this.description + "(at:" + this.dateTime + ")\n"; + } +} diff --git a/src/main/java/Task.java b/src/main/java/Task.java index cf1f52b3bd..c651a75b92 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -10,13 +10,13 @@ public Task(String description) { public String mark() { this.isDone = true; return " Great job! I will mark the task as completed.\n" + - " " + this.toString(); + " " + this; } public String unmark() { this.isDone = false; return " Understood. I will mark the task as uncompleted.\n" + - " " + this.toString(); + " " + this; } @Override diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java new file mode 100644 index 0000000000..a37705bd14 --- /dev/null +++ b/src/main/java/Todo.java @@ -0,0 +1,11 @@ +public class Todo extends Task{ + public Todo(String description) { + super(description); + } + + @Override + public String toString() { + String symbol = this.isDone ? "X" : " "; + return "[T][" + symbol + "] " + this.description + "\n"; + } +} From 91f2fff59e4be812c2fc3356b9ac11517ca8532a Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Wed, 17 Aug 2022 11:36:58 +0800 Subject: [PATCH 06/31] A-TextUiTesting Done --- text-ui-test/EXPECTED.TXT | 147 ++++++++++++++++++++++++++++++++++++-- text-ui-test/input.txt | 29 ++++++++ 2 files changed, 170 insertions(+), 6 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 657e74f6e7..8445f2a15c 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,7 +1,142 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| +============================================================ + Greetings! My Name is Alfred ^_^ + How may I be of service today? + +============================================================ +============================================================ + + Understood. I have added the following task: + [T][ ] todoTest + You have a total of 1 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [T][ ] todoTest2 todoTest2 + You have a total of 2 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [D][ ] deadlineTest (by:) + You have a total of 3 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [D][ ] deadlineTest (by: TestDay) + You have a total of 4 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) + You have a total of 5 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [E][ ] eventTest (at:) + You have a total of 6 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [E][ ] eventTest (at: TestDay) + You have a total of 7 task(s). + +============================================================ +============================================================ + + Understood. I have added the following task: + [E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + You have a total of 8 task(s). + +============================================================ +============================================================ + + Here are your current tasks: + 1.[T][ ] todoTest + 2.[T][ ] todoTest2 todoTest2 + 3.[D][ ] deadlineTest (by:) + 4.[D][ ] deadlineTest (by: TestDay) + 5.[D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) + 6.[E][ ] eventTest (at:) + 7.[E][ ] eventTest (at: TestDay) + 8.[E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + +============================================================ +============================================================ + + Great job! I will mark the task as completed. + [T][X] todoTest2 todoTest2 + +============================================================ +============================================================ + + Great job! I will mark the task as completed. + [D][X] deadlineTest (by:) + +============================================================ +============================================================ + + Great job! I will mark the task as completed. + [T][X] todoTest2 todoTest2 + +============================================================ +============================================================ + + Here are your current tasks: + 1.[T][ ] todoTest + 2.[T][X] todoTest2 todoTest2 + 3.[D][X] deadlineTest (by:) + 4.[D][ ] deadlineTest (by: TestDay) + 5.[D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) + 6.[E][ ] eventTest (at:) + 7.[E][ ] eventTest (at: TestDay) + 8.[E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + +============================================================ +============================================================ + + Understood. I will mark the task as uncompleted. + [T][ ] todoTest2 todoTest2 + +============================================================ +============================================================ + + Understood. I will mark the task as uncompleted. + [D][ ] deadlineTest (by:) + +============================================================ +============================================================ + + Understood. I will mark the task as uncompleted. + [T][ ] todoTest2 todoTest2 + +============================================================ +============================================================ + + Here are your current tasks: + 1.[T][ ] todoTest + 2.[T][ ] todoTest2 todoTest2 + 3.[D][ ] deadlineTest (by:) + 4.[D][ ] deadlineTest (by: TestDay) + 5.[D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) + 6.[E][ ] eventTest (at:) + 7.[E][ ] eventTest (at: TestDay) + 8.[E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + +============================================================ +============================================================ + + Farewell! + +============================================================ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb2..95cbdcc92f 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1,29 @@ +todo +todo todoTest +todo todoTest2 todoTest2 +deadline +deadline deadlineTest +deadline deadlineTest /by +deadline deadlineTest /by TestDay +deadline deadlineTest2 deadlineTest2 /by TestDay2 TestDay2 +event +event eventTest +event eventTest /at +event eventTest /at TestDay +event eventTest2 eventTest2 /at TestDay2 TestDay2 +list +mark +mark 2 +mark -1 +mark 99 +mark 3 please +mark 2 +list +unmark +unmark 2 +unmark -1 +unmark 99 +unmark 3 now +unmark 2 +list +bye \ No newline at end of file From 9658653d5f505e60d1a142c8f3a3c6593ba92546 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Wed, 17 Aug 2022 13:23:40 +0800 Subject: [PATCH 07/31] Level-5 Done --- src/main/java/Deadline.java | 2 +- src/main/java/Duke.java | 40 ++++++++--- src/main/java/DukeException.java | 10 +++ src/main/java/Event.java | 2 +- src/main/java/Todo.java | 2 +- text-ui-test/EXPECTED.TXT | 117 +++++++++++++++++++------------ text-ui-test/input.txt | 11 ++- 7 files changed, 120 insertions(+), 64 deletions(-) create mode 100644 src/main/java/DukeException.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index e5fb5e13e9..120391f774 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,4 +1,4 @@ -public class Deadline extends Task{ +public class Deadline extends Task { protected String dateTime; public Deadline(String description, String dateTime) { diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index d34b4ad086..98aeab4714 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -58,23 +58,23 @@ private static void addTask(int type, String task, String dateTime) { " You have a total of " + pointer + " task(s).\n"); } - private static void markTask(int taskNum) { + private static void markTask(int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { speak(tasks[taskNum - 1].mark()); } else { - + throw new DukeException("Please indicate a task no. between 1 to " + pointer); } } - private static void unmarkTask(int taskNum) { + private static void unmarkTask(int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { speak(tasks[taskNum - 1].unmark()); } else { - + throw new DukeException("Please indicate a task no. between 1 to " + pointer); } } - private static void parseCommand(String cmd) { + private static void parseCommand(String cmd) throws DukeException { String[] firstParse = cmd.split(" ", 2); String firstTerm = firstParse[0]; boolean hasSecondTerm = firstParse.length > 1; @@ -94,6 +94,9 @@ private static void parseCommand(String cmd) { markTask(Integer.parseInt(secondTerm)); break; } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits"); + } catch (DukeException f) { + speak(f.toString()); break; } case "unmark": @@ -104,30 +107,44 @@ private static void parseCommand(String cmd) { unmarkTask(Integer.parseInt(secondTerm)); break; } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits"); + } catch (DukeException f) { + speak(f.toString()); break; } case "todo": if (hasSecondTerm) { addTask(0, firstParse[1], ""); + break; + } else { + throw new DukeException("Please provide a description for the todo"); } - break; case "deadline": if (hasSecondTerm) { String[] secondParse = firstParse[1].split("/by", 2); if (secondParse.length > 1) { addTask(1, secondParse[0], secondParse[1]); + break; + } else { + throw new DukeException("Please provide a date/time for the deadline"); } + } else { + throw new DukeException("Please provide a description for the deadline"); } - break; case "event": if (hasSecondTerm) { String[] secondParse = firstParse[1].split("/at", 2); if (secondParse.length > 1) { addTask(2, secondParse[0], secondParse[1]); + break; + } else { + throw new DukeException("Please provide a date/time for the event"); } + } else { + throw new DukeException("Please provide a description for the event"); } - break; default: + throw new DukeException("Please enter a supported command"); } } @@ -137,7 +154,12 @@ public static void main(String[] args) { String cmd = ""; while (!cmd.equals("bye")) { cmd = scanner.nextLine().trim(); - parseCommand(cmd); + + try { + parseCommand(cmd); + } catch (DukeException e) { + speak(e.toString()); + } } } } diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java new file mode 100644 index 0000000000..6600e2655b --- /dev/null +++ b/src/main/java/DukeException.java @@ -0,0 +1,10 @@ +public class DukeException extends Exception { + public DukeException(String message) { + super(message); + } + + @Override + public String toString() { + return " ☹ Apologies! "+ super.getMessage() + "\n"; + } +} diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 6068085a25..99a1bbe7f5 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -1,4 +1,4 @@ -public class Event extends Task{ +public class Event extends Task { protected String dateTime; public Event(String description, String dateTime) { diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index a37705bd14..d52328894d 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,4 +1,4 @@ -public class Todo extends Task{ +public class Todo extends Task { public Todo(String description) { super(description); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 8445f2a15c..7da69578a3 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -3,6 +3,16 @@ Greetings! My Name is Alfred ^_^ How may I be of service today? +============================================================ +============================================================ + + You have not added any tasks! + +============================================================ +============================================================ + + ☹ Apologies! Please provide a description for the todo + ============================================================ ============================================================ @@ -13,126 +23,141 @@ ============================================================ ============================================================ - Understood. I have added the following task: - [T][ ] todoTest2 todoTest2 - You have a total of 2 task(s). + ☹ Apologies! Please provide a description for the deadline ============================================================ ============================================================ - Understood. I have added the following task: - [D][ ] deadlineTest (by:) - You have a total of 3 task(s). + ☹ Apologies! Please provide a date/time for the deadline ============================================================ ============================================================ Understood. I have added the following task: [D][ ] deadlineTest (by: TestDay) - You have a total of 4 task(s). + You have a total of 2 task(s). ============================================================ ============================================================ - Understood. I have added the following task: - [D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) - You have a total of 5 task(s). + ☹ Apologies! Please provide a description for the event ============================================================ ============================================================ - Understood. I have added the following task: - [E][ ] eventTest (at:) - You have a total of 6 task(s). + ☹ Apologies! Please provide a date/time for the event ============================================================ ============================================================ Understood. I have added the following task: [E][ ] eventTest (at: TestDay) - You have a total of 7 task(s). + You have a total of 3 task(s). ============================================================ ============================================================ - Understood. I have added the following task: - [E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) - You have a total of 8 task(s). + Here are your current tasks: + 1.[T][ ] todoTest + 2.[D][ ] deadlineTest (by: TestDay) + 3.[E][ ] eventTest (at: TestDay) ============================================================ ============================================================ - Here are your current tasks: - 1.[T][ ] todoTest - 2.[T][ ] todoTest2 todoTest2 - 3.[D][ ] deadlineTest (by:) - 4.[D][ ] deadlineTest (by: TestDay) - 5.[D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) - 6.[E][ ] eventTest (at:) - 7.[E][ ] eventTest (at: TestDay) - 8.[E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + ☹ Apologies! Please indicate a task no. between 1 to 3 ============================================================ ============================================================ Great job! I will mark the task as completed. - [T][X] todoTest2 todoTest2 + [D][X] deadlineTest (by: TestDay) + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3 + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3 + +============================================================ +============================================================ + + ☹ Apologies! Please indicate the task no. in digits ============================================================ ============================================================ Great job! I will mark the task as completed. - [D][X] deadlineTest (by:) + [E][X] eventTest (at: TestDay) ============================================================ ============================================================ Great job! I will mark the task as completed. - [T][X] todoTest2 todoTest2 + [D][X] deadlineTest (by: TestDay) ============================================================ ============================================================ Here are your current tasks: 1.[T][ ] todoTest - 2.[T][X] todoTest2 todoTest2 - 3.[D][X] deadlineTest (by:) - 4.[D][ ] deadlineTest (by: TestDay) - 5.[D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) - 6.[E][ ] eventTest (at:) - 7.[E][ ] eventTest (at: TestDay) - 8.[E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + 2.[D][X] deadlineTest (by: TestDay) + 3.[E][X] eventTest (at: TestDay) + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3 ============================================================ ============================================================ Understood. I will mark the task as uncompleted. - [T][ ] todoTest2 todoTest2 + [D][ ] deadlineTest (by: TestDay) + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3 + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3 + +============================================================ +============================================================ + + ☹ Apologies! Please indicate the task no. in digits ============================================================ ============================================================ Understood. I will mark the task as uncompleted. - [D][ ] deadlineTest (by:) + [E][ ] eventTest (at: TestDay) ============================================================ ============================================================ Understood. I will mark the task as uncompleted. - [T][ ] todoTest2 todoTest2 + [D][ ] deadlineTest (by: TestDay) ============================================================ ============================================================ Here are your current tasks: 1.[T][ ] todoTest - 2.[T][ ] todoTest2 todoTest2 - 3.[D][ ] deadlineTest (by:) - 4.[D][ ] deadlineTest (by: TestDay) - 5.[D][ ] deadlineTest2 deadlineTest2 (by: TestDay2 TestDay2) - 6.[E][ ] eventTest (at:) - 7.[E][ ] eventTest (at: TestDay) - 8.[E][ ] eventTest2 eventTest2 (at: TestDay2 TestDay2) + 2.[D][ ] deadlineTest (by: TestDay) + 3.[E][ ] eventTest (at: TestDay) + +============================================================ +============================================================ + + ☹ Apologies! Please enter a supported command ============================================================ ============================================================ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 95cbdcc92f..1253ac5f2a 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,21 +1,18 @@ +list todo todo todoTest -todo todoTest2 todoTest2 deadline deadline deadlineTest -deadline deadlineTest /by deadline deadlineTest /by TestDay -deadline deadlineTest2 deadlineTest2 /by TestDay2 TestDay2 event event eventTest -event eventTest /at event eventTest /at TestDay -event eventTest2 eventTest2 /at TestDay2 TestDay2 list mark mark 2 mark -1 mark 99 +mark three mark 3 please mark 2 list @@ -23,7 +20,9 @@ unmark unmark 2 unmark -1 unmark 99 -unmark 3 now +unmark three +unmark 3 please unmark 2 list +blah bye \ No newline at end of file From 6f8dc32f489befa2914155848be1fc03f3ee48ae Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Wed, 17 Aug 2022 14:22:31 +0800 Subject: [PATCH 08/31] Level-6 Done --- src/main/java/Duke.java | 150 ++++++++++++++++++++++++-------------- text-ui-test/EXPECTED.TXT | 122 ++++++++++++++++++++++++++----- text-ui-test/input.txt | 20 ++++- 3 files changed, 217 insertions(+), 75 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 98aeab4714..0b1c064890 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,8 +1,16 @@ +import java.util.ArrayList; import java.util.Scanner; public class Duke { + /** + * Takes in commands entered by the user. + */ private static final Scanner scanner = new Scanner(System.in); - private static final Task[] tasks = new Task[100]; + + /** + * Stores the list of tasks added by the user. + */ + private static final ArrayList tasks = new ArrayList<>(); /** * Points to the index of the tasks array to insert the next task in. @@ -17,25 +25,13 @@ private static void speak(String message) { } private static void greet() { - speak(" Greetings! My Name is Alfred ^_^\n How may I be of service today?\n"); + speak(" Greetings! My name is Alfred ^_^\n How may I be of service today?\n"); } private static void goodbye() { speak(" Farewell!\n"); } - private static void listTasks() { - if (pointer == 0) { - speak(" You have not added any tasks!\n"); - } else { - StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); - for (int i = 0; i < pointer; i++) { - result.append(" ").append(i + 1).append(".").append(tasks[i].toString()); - } - speak(result.toString()); - } - } - private static void addTask(int type, String task, String dateTime) { Task newTask; switch (type) { @@ -51,29 +47,59 @@ private static void addTask(int type, String task, String dateTime) { default: newTask = new Task(task); } - tasks[pointer] = newTask; + tasks.add(newTask); pointer++; speak(" Understood. I have added the following task:\n" + " " + newTask + " You have a total of " + pointer + " task(s).\n"); } + private static void deleteTask(int taskNum) throws DukeException { + if (taskNum <= pointer && taskNum > 0) { + pointer--; + speak(" Understood. I have removed the following task:\n" + + " " + tasks.get(taskNum - 1) + + " You have a total of " + pointer + " task(s).\n"); + tasks.remove(taskNum - 1); + } else { + throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); + } + } + private static void markTask(int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { - speak(tasks[taskNum - 1].mark()); + speak(tasks.get(taskNum - 1).mark()); } else { - throw new DukeException("Please indicate a task no. between 1 to " + pointer); + throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); } } private static void unmarkTask(int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { - speak(tasks[taskNum - 1].unmark()); + speak(tasks.get(taskNum - 1).unmark()); + } else { + throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); + } + } + + private static void listTasks() { + if (pointer == 0) { + speak(" You have not added any tasks!\n"); } else { - throw new DukeException("Please indicate a task no. between 1 to " + pointer); + StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); + for (int i = 0; i < pointer; i++) { + result.append(" ").append(i + 1).append(".").append(tasks.get(i).toString()); + } + speak(result.toString()); } } + private static void emptyList() { + tasks.clear(); + pointer = 0; + speak(" Understood. I have emptied your list of tasks."); + } + private static void parseCommand(String cmd) throws DukeException { String[] firstParse = cmd.split(" ", 2); String firstTerm = firstParse[0]; @@ -83,41 +109,12 @@ private static void parseCommand(String cmd) throws DukeException { case "bye": goodbye(); break; - case "list": - listTasks(); - break; - case "mark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - markTask(Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits"); - } catch (DukeException f) { - speak(f.toString()); - break; - } - case "unmark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - unmarkTask(Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits"); - } catch (DukeException f) { - speak(f.toString()); - break; - } case "todo": if (hasSecondTerm) { addTask(0, firstParse[1], ""); break; } else { - throw new DukeException("Please provide a description for the todo"); + throw new DukeException("Please provide a description for the todo."); } case "deadline": if (hasSecondTerm) { @@ -126,10 +123,10 @@ private static void parseCommand(String cmd) throws DukeException { addTask(1, secondParse[0], secondParse[1]); break; } else { - throw new DukeException("Please provide a date/time for the deadline"); + throw new DukeException("Please provide a date/time for the deadline."); } } else { - throw new DukeException("Please provide a description for the deadline"); + throw new DukeException("Please provide a description for the deadline."); } case "event": if (hasSecondTerm) { @@ -138,13 +135,58 @@ private static void parseCommand(String cmd) throws DukeException { addTask(2, secondParse[0], secondParse[1]); break; } else { - throw new DukeException("Please provide a date/time for the event"); + throw new DukeException("Please provide a date/time for the event."); } } else { - throw new DukeException("Please provide a description for the event"); + throw new DukeException("Please provide a description for the event."); } + case "delete": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + deleteTask(Integer.parseInt(secondTerm)); + break; + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + speak(f.toString()); + break; + } + case "mark": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + markTask(Integer.parseInt(secondTerm)); + break; + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + speak(f.toString()); + break; + } + case "unmark": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + unmarkTask(Integer.parseInt(secondTerm)); + break; + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + speak(f.toString()); + break; + } + case "list": + listTasks(); + break; + case "empty": + emptyList(); + break; default: - throw new DukeException("Please enter a supported command"); + throw new DukeException("Please enter a supported command."); } } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 7da69578a3..6b489f378a 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,6 +1,6 @@ ============================================================ - Greetings! My Name is Alfred ^_^ + Greetings! My name is Alfred ^_^ How may I be of service today? ============================================================ @@ -11,7 +11,7 @@ ============================================================ ============================================================ - ☹ Apologies! Please provide a description for the todo + ☹ Apologies! Please provide a description for the todo. ============================================================ ============================================================ @@ -23,12 +23,12 @@ ============================================================ ============================================================ - ☹ Apologies! Please provide a description for the deadline + ☹ Apologies! Please provide a description for the deadline. ============================================================ ============================================================ - ☹ Apologies! Please provide a date/time for the deadline + ☹ Apologies! Please provide a date/time for the deadline. ============================================================ ============================================================ @@ -40,12 +40,12 @@ ============================================================ ============================================================ - ☹ Apologies! Please provide a description for the event + ☹ Apologies! Please provide a description for the event. ============================================================ ============================================================ - ☹ Apologies! Please provide a date/time for the event + ☹ Apologies! Please provide a date/time for the event. ============================================================ ============================================================ @@ -65,28 +65,28 @@ ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 3 + ☹ Apologies! Please indicate a task no. between 1 to 3. ============================================================ ============================================================ - Great job! I will mark the task as completed. - [D][X] deadlineTest (by: TestDay) + ☹ Apologies! Please indicate a task no. between 1 to 3. ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 3 + ☹ Apologies! Please indicate a task no. between 1 to 3. ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 3 + ☹ Apologies! Please indicate the task no. in digits. ============================================================ ============================================================ - ☹ Apologies! Please indicate the task no. in digits + Great job! I will mark the task as completed. + [D][X] deadlineTest (by: TestDay) ============================================================ ============================================================ @@ -111,28 +111,28 @@ ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 3 + ☹ Apologies! Please indicate a task no. between 1 to 3. ============================================================ ============================================================ - Understood. I will mark the task as uncompleted. - [D][ ] deadlineTest (by: TestDay) + ☹ Apologies! Please indicate a task no. between 1 to 3. ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 3 + ☹ Apologies! Please indicate a task no. between 1 to 3. ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 3 + ☹ Apologies! Please indicate the task no. in digits. ============================================================ ============================================================ - ☹ Apologies! Please indicate the task no. in digits + Understood. I will mark the task as uncompleted. + [D][ ] deadlineTest (by: TestDay) ============================================================ ============================================================ @@ -157,7 +157,91 @@ ============================================================ ============================================================ - ☹ Apologies! Please enter a supported command + ☹ Apologies! Please enter a supported command. + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3. + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3. + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 3. + +============================================================ +============================================================ + + ☹ Apologies! Please indicate the task no. in digits. + +============================================================ +============================================================ + + Understood. I have removed the following task: + [E][ ] eventTest (at: TestDay) + You have a total of 2 task(s). + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 2. + +============================================================ +============================================================ + + Here are your current tasks: + 1.[T][ ] todoTest + 2.[D][ ] deadlineTest (by: TestDay) + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 2. + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 2. + +============================================================ +============================================================ + + Understood. I have added the following task: + [E][ ] eventTest (at: TestDay) + You have a total of 3 task(s). + +============================================================ +============================================================ + + Understood. I have emptied your list of tasks. +============================================================ +============================================================ + + You have not added any tasks! + +============================================================ +============================================================ + + Understood. I have emptied your list of tasks. +============================================================ +============================================================ + + You have not added any tasks! + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 0. + +============================================================ +============================================================ + + ☹ Apologies! Please indicate a task no. between 1 to 0. ============================================================ ============================================================ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 1253ac5f2a..dccbdc693b 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -9,20 +9,36 @@ event eventTest event eventTest /at TestDay list mark -mark 2 mark -1 mark 99 mark three +mark 2 mark 3 please mark 2 list unmark -unmark 2 unmark -1 unmark 99 unmark three +unmark 2 unmark 3 please unmark 2 list blah +delete +delete -1 +delete 99 +delete three +delete 3 +delete 3 +list +mark 3 +unmark 3 +event eventTest /at TestDay +empty +list +empty +list +mark 1 +unmark 1 bye \ No newline at end of file From 30f5bb8f18eefc96674a0b00625b9bbc6281c8db Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Wed, 17 Aug 2022 15:12:07 +0800 Subject: [PATCH 09/31] A-Enums Done --- src/main/java/Duke.java | 48 +++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0b1c064890..57d38349f4 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -18,6 +18,17 @@ public class Duke { */ private static int pointer = 0; + enum TaskType { + TODO, + DEADLINE, + EVENT + } + + enum TaskFunc { + MARK, + UNMARK + } + private static void speak(String message) { System.out.println("============================================================\n"); System.out.println(message); @@ -32,16 +43,16 @@ private static void goodbye() { speak(" Farewell!\n"); } - private static void addTask(int type, String task, String dateTime) { + private static void addTask(TaskType type, String task, String dateTime) { Task newTask; switch (type) { - case 0: + case TODO: newTask = new Todo(task); break; - case 1: + case DEADLINE: newTask = new Deadline(task, dateTime); break; - case 2: + case EVENT: newTask = new Event(task, dateTime); break; default: @@ -66,17 +77,16 @@ private static void deleteTask(int taskNum) throws DukeException { } } - private static void markTask(int taskNum) throws DukeException { + private static void updateTask(TaskFunc func, int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { - speak(tasks.get(taskNum - 1).mark()); - } else { - throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); - } - } - - private static void unmarkTask(int taskNum) throws DukeException { - if (taskNum <= pointer && taskNum > 0) { - speak(tasks.get(taskNum - 1).unmark()); + switch (func) { + case MARK: + speak(tasks.get(taskNum - 1).mark()); + break; + case UNMARK: + speak(tasks.get(taskNum - 1).unmark()); + break; + } } else { throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); } @@ -111,7 +121,7 @@ private static void parseCommand(String cmd) throws DukeException { break; case "todo": if (hasSecondTerm) { - addTask(0, firstParse[1], ""); + addTask(TaskType.TODO, firstParse[1], ""); break; } else { throw new DukeException("Please provide a description for the todo."); @@ -120,7 +130,7 @@ private static void parseCommand(String cmd) throws DukeException { if (hasSecondTerm) { String[] secondParse = firstParse[1].split("/by", 2); if (secondParse.length > 1) { - addTask(1, secondParse[0], secondParse[1]); + addTask(TaskType.DEADLINE, secondParse[0], secondParse[1]); break; } else { throw new DukeException("Please provide a date/time for the deadline."); @@ -132,7 +142,7 @@ private static void parseCommand(String cmd) throws DukeException { if (hasSecondTerm) { String[] secondParse = firstParse[1].split("/at", 2); if (secondParse.length > 1) { - addTask(2, secondParse[0], secondParse[1]); + addTask(TaskType.EVENT, secondParse[0], secondParse[1]); break; } else { throw new DukeException("Please provide a date/time for the event."); @@ -158,7 +168,7 @@ private static void parseCommand(String cmd) throws DukeException { String secondTerm = hasSecondTerm ? firstParse[1].split(" ", 2)[0] : "0"; - markTask(Integer.parseInt(secondTerm)); + updateTask(TaskFunc.MARK, Integer.parseInt(secondTerm)); break; } catch (NumberFormatException e) { throw new DukeException("Please indicate the task no. in digits."); @@ -171,7 +181,7 @@ private static void parseCommand(String cmd) throws DukeException { String secondTerm = hasSecondTerm ? firstParse[1].split(" ", 2)[0] : "0"; - unmarkTask(Integer.parseInt(secondTerm)); + updateTask(TaskFunc.UNMARK, Integer.parseInt(secondTerm)); break; } catch (NumberFormatException e) { throw new DukeException("Please indicate the task no. in digits."); From 6d379a7fa32b1c04c79b33ea4c5e6989ca6a4cdf Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Wed, 17 Aug 2022 16:38:11 +0800 Subject: [PATCH 10/31] CheckStyle Done --- src/main/java/Deadline.java | 9 ++ src/main/java/Duke.java | 221 ++++++++++++++++--------------- src/main/java/DukeException.java | 5 +- src/main/java/Event.java | 9 ++ src/main/java/Task.java | 26 +++- src/main/java/Todo.java | 3 + 6 files changed, 161 insertions(+), 112 deletions(-) diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 120391f774..178dec1ab2 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,6 +1,15 @@ +/** + * Deadline Task represents an action that needs to be done by a certain date or time. + */ public class Deadline extends Task { protected String dateTime; + /** + * Constructor for a Deadline Task. + * + * @param description the description of the Task + * @param dateTime the deadline of the Task + */ public Deadline(String description, String dateTime) { super(description); this.dateTime = dateTime; diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 57d38349f4..162a62d4a4 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,6 +1,9 @@ import java.util.ArrayList; import java.util.Scanner; +/** + * Duke is a Task Manager program that helps a user keep track of and manager their tasks. + */ public class Duke { /** * Takes in commands entered by the user. @@ -18,17 +21,6 @@ public class Duke { */ private static int pointer = 0; - enum TaskType { - TODO, - DEADLINE, - EVENT - } - - enum TaskFunc { - MARK, - UNMARK - } - private static void speak(String message) { System.out.println("============================================================\n"); System.out.println(message); @@ -46,31 +38,31 @@ private static void goodbye() { private static void addTask(TaskType type, String task, String dateTime) { Task newTask; switch (type) { - case TODO: - newTask = new Todo(task); - break; - case DEADLINE: - newTask = new Deadline(task, dateTime); - break; - case EVENT: - newTask = new Event(task, dateTime); - break; - default: - newTask = new Task(task); + case TODO: + newTask = new Todo(task); + break; + case DEADLINE: + newTask = new Deadline(task, dateTime); + break; + case EVENT: + newTask = new Event(task, dateTime); + break; + default: + newTask = new Task(task); } tasks.add(newTask); pointer++; - speak(" Understood. I have added the following task:\n" + - " " + newTask + - " You have a total of " + pointer + " task(s).\n"); + speak(" Understood. I have added the following task:\n" + + " " + newTask + + " You have a total of " + pointer + " task(s).\n"); } private static void deleteTask(int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { pointer--; - speak(" Understood. I have removed the following task:\n" + - " " + tasks.get(taskNum - 1) + - " You have a total of " + pointer + " task(s).\n"); + speak(" Understood. I have removed the following task:\n" + + " " + tasks.get(taskNum - 1) + + " You have a total of " + pointer + " task(s).\n"); tasks.remove(taskNum - 1); } else { throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); @@ -80,12 +72,13 @@ private static void deleteTask(int taskNum) throws DukeException { private static void updateTask(TaskFunc func, int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { switch (func) { - case MARK: - speak(tasks.get(taskNum - 1).mark()); - break; - case UNMARK: - speak(tasks.get(taskNum - 1).unmark()); - break; + case MARK: + speak(tasks.get(taskNum - 1).mark()); + break; + case UNMARK: + speak(tasks.get(taskNum - 1).unmark()); + break; + default: } } else { throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); @@ -116,90 +109,93 @@ private static void parseCommand(String cmd) throws DukeException { boolean hasSecondTerm = firstParse.length > 1; switch (firstTerm) { - case "bye": - goodbye(); + case "bye": + goodbye(); + break; + case "todo": + if (hasSecondTerm) { + addTask(TaskType.TODO, firstParse[1], ""); break; - case "todo": - if (hasSecondTerm) { - addTask(TaskType.TODO, firstParse[1], ""); + } else { + throw new DukeException("Please provide a description for the todo."); + } + case "deadline": + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/by", 2); + if (secondParse.length > 1) { + addTask(TaskType.DEADLINE, secondParse[0], secondParse[1]); break; } else { - throw new DukeException("Please provide a description for the todo."); - } - case "deadline": - if (hasSecondTerm) { - String[] secondParse = firstParse[1].split("/by", 2); - if (secondParse.length > 1) { - addTask(TaskType.DEADLINE, secondParse[0], secondParse[1]); - break; - } else { - throw new DukeException("Please provide a date/time for the deadline."); - } - } else { - throw new DukeException("Please provide a description for the deadline."); + throw new DukeException("Please provide a date/time for the deadline."); } - case "event": - if (hasSecondTerm) { - String[] secondParse = firstParse[1].split("/at", 2); - if (secondParse.length > 1) { - addTask(TaskType.EVENT, secondParse[0], secondParse[1]); - break; - } else { - throw new DukeException("Please provide a date/time for the event."); - } - } else { - throw new DukeException("Please provide a description for the event."); - } - case "delete": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - deleteTask(Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { - speak(f.toString()); - break; - } - case "mark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - updateTask(TaskFunc.MARK, Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { - speak(f.toString()); - break; - } - case "unmark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - updateTask(TaskFunc.UNMARK, Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { - speak(f.toString()); + } else { + throw new DukeException("Please provide a description for the deadline."); + } + case "event": + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/at", 2); + if (secondParse.length > 1) { + addTask(TaskType.EVENT, secondParse[0], secondParse[1]); break; + } else { + throw new DukeException("Please provide a date/time for the event."); } - case "list": - listTasks(); + } else { + throw new DukeException("Please provide a description for the event."); + } + case "delete": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + deleteTask(Integer.parseInt(secondTerm)); break; - case "empty": - emptyList(); + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + speak(f.toString()); break; - default: - throw new DukeException("Please enter a supported command."); + } + case "mark": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + updateTask(TaskFunc.MARK, Integer.parseInt(secondTerm)); + break; + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + speak(f.toString()); + break; + } + case "unmark": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + updateTask(TaskFunc.UNMARK, Integer.parseInt(secondTerm)); + break; + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + speak(f.toString()); + break; + } + case "list": + listTasks(); + break; + case "empty": + emptyList(); + break; + default: + throw new DukeException("Please enter a supported command."); } } + /** + * Runs the Duke program until the user exits with the 'bye' command. + */ public static void main(String[] args) { greet(); @@ -214,4 +210,15 @@ public static void main(String[] args) { } } } + + enum TaskType { + TODO, + DEADLINE, + EVENT + } + + enum TaskFunc { + MARK, + UNMARK + } } diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java index 6600e2655b..0a373e4d49 100644 --- a/src/main/java/DukeException.java +++ b/src/main/java/DukeException.java @@ -1,3 +1,6 @@ +/** + * DukeExceptions represent errors in user input when using Alfred. + */ public class DukeException extends Exception { public DukeException(String message) { super(message); @@ -5,6 +8,6 @@ public DukeException(String message) { @Override public String toString() { - return " ☹ Apologies! "+ super.getMessage() + "\n"; + return " ☹ Apologies! " + super.getMessage() + "\n"; } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 99a1bbe7f5..28f0290793 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -1,6 +1,15 @@ +/** + * Event Task represents an event that takes place between certain dates/time. + */ public class Event extends Task { protected String dateTime; + /** + * Constructor for an Event Task. + * + * @param description the description of the Event + * @param dateTime the start and end dates/time of the Event + */ public Event(String description, String dateTime) { super(description); this.dateTime = dateTime; diff --git a/src/main/java/Task.java b/src/main/java/Task.java index c651a75b92..bf8e36a0ee 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,22 +1,40 @@ +/** + * Parent Class for all Tasks. + */ public class Task { protected String description; protected boolean isDone; + /** + * Constructor for a Task. + * + * @param description the description of the Task + */ public Task(String description) { this.description = description; this.isDone = false; } + /** + * Sets the Task as completed. + * + * @return string containing the completed message, to be displayed to the user + */ public String mark() { this.isDone = true; - return " Great job! I will mark the task as completed.\n" + - " " + this; + return " Great job! I will mark the task as completed.\n" + + " " + this; } + /** + * Sets the Task as uncompleted. + * + * @return string containing the uncompleted message, to be displayed to the user + */ public String unmark() { this.isDone = false; - return " Understood. I will mark the task as uncompleted.\n" + - " " + this; + return " Understood. I will mark the task as uncompleted.\n" + + " " + this; } @Override diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index d52328894d..3436efa768 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,3 +1,6 @@ +/** + * Todo Task represents an action that needs to be done. + */ public class Todo extends Task { public Todo(String description) { super(description); From 2013e878d2078b85b3ff576f30125f1547e2295e Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 13:27:55 +0800 Subject: [PATCH 11/31] Add Level-7 | Read from & Write to File The program starts with a fresh empty list on startup. Users will be able to use it as a long-term task manager if they are able to save their tasks. Implemented a Storage class that handles reading from and writing to a File stored in /data/. --- .gitignore | 1 + src/main/java/Deadline.java | 33 ++++++ src/main/java/Duke.java | 80 ++++++++------ src/main/java/DukeException.java | 10 ++ src/main/java/Event.java | 33 ++++++ src/main/java/Storage.java | 181 +++++++++++++++++++++++++++++++ src/main/java/Task.java | 34 +++--- src/main/java/Todo.java | 38 +++++++ text-ui-test/EXPECTED.TXT | 14 +-- 9 files changed, 365 insertions(+), 59 deletions(-) create mode 100644 src/main/java/Storage.java diff --git a/.gitignore b/.gitignore index f69985ef1f..9d877b9aba 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,6 @@ src/main/resources/docs/ *.iml bin/ +data/ /text-ui-test/ACTUAL.txt text-ui-test/EXPECTED-UNIX.TXT diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 178dec1ab2..132b80ef50 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -15,6 +15,39 @@ public Deadline(String description, String dateTime) { this.dateTime = dateTime; } + /** + * Returns a Deadline Task constructed with data read from File. + * + * @param data Data of a Deadline Task. + * @return Deadline Task or null if data is corrupted. + */ + public static Deadline readData(String[] data) { + if (data.length < 4) { + return null; + } + Deadline newDeadline = new Deadline(data[2], data[3]); + if (data[1].equals("X")) { + newDeadline.setDone(true); + } + return newDeadline; + } + + /** + * Returns the Deadline Task information for writing to a File. + * + * @return String with Deadline Task information. + */ + @Override + public String writeData() { + String symbol = this.isDone ? "X" : " "; + return "D|" + symbol + "|" + this.description + "|" + this.dateTime; + } + + /** + * Returns the string representation of this Deadline Task. + * + * @return String Representation. + */ @Override public String toString() { String symbol = this.isDone ? "X" : " "; diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 162a62d4a4..3c1eefc739 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,41 +2,45 @@ import java.util.Scanner; /** - * Duke is a Task Manager program that helps a user keep track of and manager their tasks. + * Duke is a Task Manager program that helps a user keep track of and manage their tasks. */ public class Duke { - /** - * Takes in commands entered by the user. - */ - private static final Scanner scanner = new Scanner(System.in); + /** Stores the list of tasks added by the user. */ + private final ArrayList tasks; /** - * Stores the list of tasks added by the user. + * Points to the index of the tasks array to insert the next task in. + * Also acts as a counter for the number of tasks in the tasks array. */ - private static final ArrayList tasks = new ArrayList<>(); + private int pointer; + + private final Storage storage = new Storage("data/list.txt"); /** - * Points to the index of the tasks array to insert the next task in. - * Also acts as a counter for the number of tasks in the tasks array. + * Constructor for a Duke bot. */ - private static int pointer = 0; + public Duke() { + tasks = storage.load(); + pointer = tasks.size(); + greet(); + } - private static void speak(String message) { + private void speak(String message) { System.out.println("============================================================\n"); System.out.println(message); System.out.println("============================================================"); } - private static void greet() { + private void greet() { speak(" Greetings! My name is Alfred ^_^\n How may I be of service today?\n"); } - private static void goodbye() { + private void goodbye() { speak(" Farewell!\n"); } - private static void addTask(TaskType type, String task, String dateTime) { - Task newTask; + private void addTask(TaskType type, String task, String dateTime) { + Task newTask = null; switch (type) { case TODO: newTask = new Todo(task); @@ -48,44 +52,50 @@ private static void addTask(TaskType type, String task, String dateTime) { newTask = new Event(task, dateTime); break; default: - newTask = new Task(task); } tasks.add(newTask); + storage.addTask(newTask); pointer++; speak(" Understood. I have added the following task:\n" + " " + newTask - + " You have a total of " + pointer + " task(s).\n"); + + " You now have a total of " + pointer + " task(s).\n"); } - private static void deleteTask(int taskNum) throws DukeException { + private void deleteTask(int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { pointer--; speak(" Understood. I have removed the following task:\n" + " " + tasks.get(taskNum - 1) - + " You have a total of " + pointer + " task(s).\n"); + + " You have a total of " + pointer + " task(s) left.\n"); tasks.remove(taskNum - 1); + storage.deleteTask(taskNum - 1); + } else if (pointer == 0) { + throw new DukeException("You have no tasks to delete."); } else { throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); } } - private static void updateTask(TaskFunc func, int taskNum) throws DukeException { + private void updateTask(TaskAction func, int taskNum) throws DukeException { if (taskNum <= pointer && taskNum > 0) { switch (func) { case MARK: - speak(tasks.get(taskNum - 1).mark()); + speak(tasks.get(taskNum - 1).setDone(true)); break; case UNMARK: - speak(tasks.get(taskNum - 1).unmark()); + speak(tasks.get(taskNum - 1).setDone(false)); break; default: } + storage.updateTask(tasks.get(taskNum - 1), taskNum - 1); + } else if (pointer == 0) { + throw new DukeException("You have no tasks to mark or unmark."); } else { throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); } } - private static void listTasks() { + private void listTasks() { if (pointer == 0) { speak(" You have not added any tasks!\n"); } else { @@ -97,13 +107,14 @@ private static void listTasks() { } } - private static void emptyList() { + private void emptyList() { tasks.clear(); + storage.emptyList(); pointer = 0; speak(" Understood. I have emptied your list of tasks."); } - private static void parseCommand(String cmd) throws DukeException { + private void parseCommand(String cmd) throws DukeException { String[] firstParse = cmd.split(" ", 2); String firstTerm = firstParse[0]; boolean hasSecondTerm = firstParse.length > 1; @@ -161,7 +172,7 @@ private static void parseCommand(String cmd) throws DukeException { String secondTerm = hasSecondTerm ? firstParse[1].split(" ", 2)[0] : "0"; - updateTask(TaskFunc.MARK, Integer.parseInt(secondTerm)); + updateTask(TaskAction.MARK, Integer.parseInt(secondTerm)); break; } catch (NumberFormatException e) { throw new DukeException("Please indicate the task no. in digits."); @@ -174,7 +185,7 @@ private static void parseCommand(String cmd) throws DukeException { String secondTerm = hasSecondTerm ? firstParse[1].split(" ", 2)[0] : "0"; - updateTask(TaskFunc.UNMARK, Integer.parseInt(secondTerm)); + updateTask(TaskAction.UNMARK, Integer.parseInt(secondTerm)); break; } catch (NumberFormatException e) { throw new DukeException("Please indicate the task no. in digits."); @@ -196,9 +207,8 @@ private static void parseCommand(String cmd) throws DukeException { /** * Runs the Duke program until the user exits with the 'bye' command. */ - public static void main(String[] args) { - greet(); - + public void run() { + Scanner scanner = new Scanner(System.in); String cmd = ""; while (!cmd.equals("bye")) { cmd = scanner.nextLine().trim(); @@ -209,6 +219,14 @@ public static void main(String[] args) { speak(e.toString()); } } + scanner.close(); + } + + /** + * Driver method for Duke. + */ + public static void main(String[] args) { + new Duke().run(); } enum TaskType { @@ -217,7 +235,7 @@ enum TaskType { EVENT } - enum TaskFunc { + enum TaskAction { MARK, UNMARK } diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java index 0a373e4d49..f0da0ca21d 100644 --- a/src/main/java/DukeException.java +++ b/src/main/java/DukeException.java @@ -2,10 +2,20 @@ * DukeExceptions represent errors in user input when using Alfred. */ public class DukeException extends Exception { + /** + * Constructor for a DukeException. + * + * @param message Error Message. + */ public DukeException(String message) { super(message); } + /** + * Returns the string representation of this DukeException. + * + * @return String Representation. + */ @Override public String toString() { return " ☹ Apologies! " + super.getMessage() + "\n"; diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 28f0290793..ef4de31b53 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -15,6 +15,39 @@ public Event(String description, String dateTime) { this.dateTime = dateTime; } + /** + * Returns an Event constructed with data read from File. + * + * @param data Data of an Event. + * @return Event or null if data is corrupted. + */ + public static Event readData(String[] data) { + if (data.length < 4) { + return null; + } + Event newEvent = new Event(data[2], data[3]); + if (data[1].equals("X")) { + newEvent.setDone(true); + } + return newEvent; + } + + /** + * Returns the Event information for writing to a File. + * + * @return String with Event information. + */ + @Override + public String writeData() { + String symbol = this.isDone ? "X" : " "; + return "E|" + symbol + "|" + this.description + "|" + this.dateTime; + } + + /** + * Returns the string representation of this Event. + * + * @return String Representation. + */ @Override public String toString() { String symbol = this.isDone ? "X" : " "; diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java new file mode 100644 index 0000000000..bd9bb732ed --- /dev/null +++ b/src/main/java/Storage.java @@ -0,0 +1,181 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Scanner; + +/** + * Storage handles the reading and writing of Tasks to a File. + */ +public class Storage { + /** Path of the File. */ + private final String filePath; + + /** File that will store the list of Tasks. */ + private final File dataFile; + + /** Array that stores each line of the File as an element. */ + private final ArrayList dataArray = new ArrayList<>(); + + /** Counter for number of lines in the File. */ + private int counter = 0; + + /** Indicator for whether an error has occurred in the File. */ + private boolean hasError = false; + + /** + * Constructor for Storage. + * + * @param filePath Path of the File to read from and write to. + */ + public Storage(String filePath) { + this.filePath = filePath; + this.dataFile = new File(filePath); + init(); + } + + private void init() { + if (!dataFile.exists()) { + try { + if (!dataFile.getParentFile().exists()) { + dataFile.getParentFile().mkdir(); + } + dataFile.createNewFile(); + } catch (IOException e) { + this.hasError = true; + } + } else { + try { + Scanner dataSource = new Scanner(dataFile); + while (dataSource.hasNext()) { + dataArray.add(dataSource.nextLine()); + counter++; + } + dataSource.close(); + } catch (FileNotFoundException e) { + this.hasError = true; + } + } + } + + private void newFile() { + try { + dataFile.delete(); + dataFile.createNewFile(); + } catch (IOException e) { + this.hasError = true; + } + } + + private void writeToFile() { + // Disable writing to File if error occurred during creation of file or reading of file. + if (hasError) { + return; + } + try { + FileWriter writer = new FileWriter(filePath); + StringBuilder contents = new StringBuilder(dataArray.get(0)); + for (int i = 1; i < counter; i++) { + contents.append(System.lineSeparator()); + contents.append(dataArray.get(i)); + } + writer.write(contents.toString()); + writer.close(); + } catch (IOException e) { + this.hasError = true; + } + } + + private void appendToFile() { + // Disable writing to File if error occurred during creation of file or reading of file. + if (hasError) { + return; + } + try { + FileWriter writer = new FileWriter(filePath, true); + StringBuilder contents; + if (counter == 1) { + contents = new StringBuilder(dataArray.get(0)); + } else { + contents = new StringBuilder(System.lineSeparator()); + contents.append(dataArray.get(0)); + } + writer.write(contents.toString()); + writer.close(); + } catch (IOException e) { + this.hasError = true; + } + } + + /** + * Returns a list of Tasks read from File. + * + * @return ArrayList of Tasks. + */ + public ArrayList load() { + ArrayList tasks = new ArrayList<>(); + for (int i = 0; i < this.counter; i++) { + String[] data = dataArray.get(i).split("\\|"); + Task newTask = null; + switch (data[0]) { + case "T": + newTask = Todo.readData(data); + break; + case "D": + newTask = Deadline.readData(data); + break; + case "E": + newTask = Event.readData(data); + break; + default: + } + if (newTask != null) { + tasks.add(newTask); + } + } + return tasks; + } + + /** + * Writes a new Task to File. + * + * @param newTask Task to be written. + */ + public void addTask(Task newTask) { + dataArray.add(newTask.writeData()); + counter++; + appendToFile(); + } + + /** + * Modifies a Task in File. + * + * @param newTask Task that was modified. + * @param index Index of the modified Task. + */ + public void updateTask(Task newTask, int index) { + dataArray.set(index, newTask.writeData()); + writeToFile(); + } + + /** + * Removes a Task from File. + * + * @param index Index of the Task to be removed. + */ + public void deleteTask(int index) { + dataArray.remove(index); + counter--; + writeToFile(); + } + + /** + * Removes all Tasks from File. + */ + public void emptyList() { + dataArray.clear(); + counter = 0; + newFile(); + } +} diff --git a/src/main/java/Task.java b/src/main/java/Task.java index bf8e36a0ee..84137e81b4 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,14 +1,14 @@ /** * Parent Class for all Tasks. */ -public class Task { +public abstract class Task { protected String description; protected boolean isDone; /** * Constructor for a Task. * - * @param description the description of the Task + * @param description Description of the Task. */ public Task(String description) { this.description = description; @@ -16,30 +16,22 @@ public Task(String description) { } /** - * Sets the Task as completed. + * Returns the Task information for writing to a File. * - * @return string containing the completed message, to be displayed to the user + * @return String with Task information. */ - public String mark() { - this.isDone = true; - return " Great job! I will mark the task as completed.\n" - + " " + this; - } + public abstract String writeData(); /** - * Sets the Task as uncompleted. + * Sets the completion status of this task. * - * @return string containing the uncompleted message, to be displayed to the user + * @param isDone New completion status of the task. + * @return String with message for user. */ - public String unmark() { - this.isDone = false; - return " Understood. I will mark the task as uncompleted.\n" - + " " + this; - } - - @Override - public String toString() { - String symbol = this.isDone ? "X" : " "; - return "[" + symbol + "] " + this.description + "\n"; + public String setDone(boolean isDone) { + this.isDone = isDone; + return isDone + ? " Great job! I will mark the task as completed.\n" + " " + this + : " Understood. I will mark the task as uncompleted.\n" + " " + this; } } diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index 3436efa768..7c16310274 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -2,10 +2,48 @@ * Todo Task represents an action that needs to be done. */ public class Todo extends Task { + /** + * Constructor for a Todo Task. + * + * @param description Description of the Task. + */ public Todo(String description) { super(description); } + /** + * Returns a Todo Task constructed with data read from File. + * + * @param data Data of a Todo Task. + * @return Todo Task or null if data is corrupted. + */ + public static Todo readData(String[] data) { + if (data.length < 3) { + return null; + } + Todo newTodo = new Todo(data[2]); + if (data[1].equals("X")) { + newTodo.setDone(true); + } + return newTodo; + } + + /** + * Returns the Todo Task information for writing to a File. + * + * @return String with Todo Task information. + */ + @Override + public String writeData() { + String symbol = this.isDone ? "X" : " "; + return "T|" + symbol + "|" + this.description; + } + + /** + * Returns the string representation of this Todo Task. + * + * @return String Representation. + */ @Override public String toString() { String symbol = this.isDone ? "X" : " "; diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 6b489f378a..23dc5c4381 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -18,7 +18,7 @@ Understood. I have added the following task: [T][ ] todoTest - You have a total of 1 task(s). + You now have a total of 1 task(s). ============================================================ ============================================================ @@ -35,7 +35,7 @@ Understood. I have added the following task: [D][ ] deadlineTest (by: TestDay) - You have a total of 2 task(s). + You now have a total of 2 task(s). ============================================================ ============================================================ @@ -52,7 +52,7 @@ Understood. I have added the following task: [E][ ] eventTest (at: TestDay) - You have a total of 3 task(s). + You now have a total of 3 task(s). ============================================================ ============================================================ @@ -184,7 +184,7 @@ Understood. I have removed the following task: [E][ ] eventTest (at: TestDay) - You have a total of 2 task(s). + You have a total of 2 task(s) left. ============================================================ ============================================================ @@ -213,7 +213,7 @@ Understood. I have added the following task: [E][ ] eventTest (at: TestDay) - You have a total of 3 task(s). + You now have a total of 3 task(s). ============================================================ ============================================================ @@ -236,12 +236,12 @@ ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 0. + ☹ Apologies! You have no tasks to mark or unmark. ============================================================ ============================================================ - ☹ Apologies! Please indicate a task no. between 1 to 0. + ☹ Apologies! You have no tasks to mark or unmark. ============================================================ ============================================================ From 84d0c49e5fdf4319994b1107fd218f89d4582873 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 15:40:46 +0800 Subject: [PATCH 12/31] Add Level-8 | Timestamps properly implemented Time and Date for Tasks are stored as Strings. This imposes limitations on possible future features like filtering Tasks by date. TimeStamp class implemented to store date and time information. --- src/main/java/Deadline.java | 6 +++--- src/main/java/Duke.java | 41 ++++++++++++++++++++---------------- src/main/java/Event.java | 11 ++++++---- src/main/java/TimeStamp.java | 35 ++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 src/main/java/TimeStamp.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 178dec1ab2..8673e02b23 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -2,7 +2,7 @@ * Deadline Task represents an action that needs to be done by a certain date or time. */ public class Deadline extends Task { - protected String dateTime; + protected TimeStamp dateTime; /** * Constructor for a Deadline Task. @@ -10,9 +10,9 @@ public class Deadline extends Task { * @param description the description of the Task * @param dateTime the deadline of the Task */ - public Deadline(String description, String dateTime) { + public Deadline(String description, String dateTime) throws DukeException { super(description); - this.dateTime = dateTime; + this.dateTime = TimeStamp.of(dateTime); } @Override diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 162a62d4a4..aa6fc91da7 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -36,25 +36,30 @@ private static void goodbye() { } private static void addTask(TaskType type, String task, String dateTime) { - Task newTask; - switch (type) { - case TODO: - newTask = new Todo(task); - break; - case DEADLINE: - newTask = new Deadline(task, dateTime); - break; - case EVENT: - newTask = new Event(task, dateTime); - break; - default: - newTask = new Task(task); + try { + Task newTask; + switch (type) { + case TODO: + newTask = new Todo(task); + break; + case DEADLINE: + newTask = new Deadline(task, dateTime); + break; + case EVENT: + newTask = new Event(task, dateTime); + break; + default: + newTask = new Task(task); + } + tasks.add(newTask); + pointer++; + speak(" Understood. I have added the following task:\n" + + " " + newTask + + " You have a total of " + pointer + " task(s).\n"); + } catch (DukeException e) { + speak(e.toString()); } - tasks.add(newTask); - pointer++; - speak(" Understood. I have added the following task:\n" - + " " + newTask - + " You have a total of " + pointer + " task(s).\n"); + } private static void deleteTask(int taskNum) throws DukeException { diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 28f0290793..498948a420 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -2,7 +2,8 @@ * Event Task represents an event that takes place between certain dates/time. */ public class Event extends Task { - protected String dateTime; + protected TimeStamp start; + protected TimeStamp end; /** * Constructor for an Event Task. @@ -10,14 +11,16 @@ public class Event extends Task { * @param description the description of the Event * @param dateTime the start and end dates/time of the Event */ - public Event(String description, String dateTime) { + public Event(String description, String dateTime) throws DukeException { super(description); - this.dateTime = dateTime; + String[] duration = dateTime.split(" ~ ", 2); + this.start = TimeStamp.of(duration[0]); + this.end = TimeStamp.of(duration[1]); } @Override public String toString() { String symbol = this.isDone ? "X" : " "; - return "[E][" + symbol + "] " + this.description + "(at:" + this.dateTime + ")\n"; + return "[E][" + symbol + "] " + this.description + "(at:" + this.start + " -" + this.end + ")\n"; } } diff --git a/src/main/java/TimeStamp.java b/src/main/java/TimeStamp.java new file mode 100644 index 0000000000..e7f6794fde --- /dev/null +++ b/src/main/java/TimeStamp.java @@ -0,0 +1,35 @@ +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * TimeStamp stores the date and time information of Deadline Tasks and Events. + */ +public class TimeStamp { + private final LocalDateTime timestamp; + + private TimeStamp(LocalDateTime timestamp) { + this.timestamp = timestamp; + } + + /** + * Factory method for TimeStamps + * + * @param dateTime Date and Time information in the format of (dd/MM/yyyy-HH:mm). + * @return TimeStamp. + * @throws DukeException If dateTime is not formatted correctly. + */ + public static TimeStamp of(String dateTime) throws DukeException { + DateTimeFormatter format = DateTimeFormatter.ofPattern("d/M/yyyy-H:mm"); + try { + return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); + } catch (DateTimeParseException e) { + throw new DukeException("Please indicate date and time properly. (20/8/2022-15:37)"); + } + } + + @Override + public String toString() { + return " " + timestamp.format(DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a")); + } +} From b8119d67a07f57b71bb404f616d6f4f278ed8931 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 18:18:31 +0800 Subject: [PATCH 13/31] More OOP | Add Ui, Parser, TaskList classes Alot of code resides in Duke.java Related functions should be bundled into new classes so future changes will be easier to implement. Extracted Ui, Parser, TaskList classes from Duke.java Now, Duke.java does not hold any complicated code. --- .gitignore | 5 +- src/main/java/Deadline.java | 9 +- src/main/java/Duke.java | 214 +--------------------------- src/main/java/Event.java | 12 +- src/main/java/Parser.java | 90 ++++++++++++ src/main/java/Storage.java | 2 +- src/main/java/TaskList.java | 121 ++++++++++++++++ src/main/java/TimeStamp.java | 21 +++ src/main/java/Ui.java | 42 ++++++ text-ui-test/EXPECTED.TXT | 264 +++++++++++++++++++---------------- text-ui-test/input.txt | 21 +-- 11 files changed, 454 insertions(+), 347 deletions(-) create mode 100644 src/main/java/Parser.java create mode 100644 src/main/java/TaskList.java create mode 100644 src/main/java/Ui.java diff --git a/.gitignore b/.gitignore index 9d877b9aba..98c24b7e05 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ src/main/resources/docs/ *.iml bin/ -data/ +/data/ +/text-ui-test/data/ /text-ui-test/ACTUAL.txt -text-ui-test/EXPECTED-UNIX.TXT +/text-ui-test/EXPECTED-UNIX.TXT \ No newline at end of file diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 3342b75c45..5804ec7cf0 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -15,6 +15,11 @@ public Deadline(String description, String dateTime) throws DukeException { this.dateTime = TimeStamp.of(dateTime); } + private Deadline(String description, TimeStamp dateTime) { + super(description); + this.dateTime = dateTime; + } + /** * Returns a Deadline Task constructed with data read from File. * @@ -25,7 +30,7 @@ public static Deadline readData(String[] data) { if (data.length < 4) { return null; } - Deadline newDeadline = new Deadline(data[2], data[3]); + Deadline newDeadline = new Deadline(data[2], TimeStamp.fromFile(data[3])); if (data[1].equals("X")) { newDeadline.setDone(true); } @@ -40,7 +45,7 @@ public static Deadline readData(String[] data) { @Override public String writeData() { String symbol = this.isDone ? "X" : " "; - return "D|" + symbol + "|" + this.description + "|" + this.dateTime; + return "D|" + symbol + "|" + this.description + "|" + this.dateTime.toString(); } /** diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index cbd70f9938..2848b5ca10 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,229 +1,34 @@ -import java.util.ArrayList; -import java.util.Scanner; - /** * Duke is a Task Manager program that helps a user keep track of and manage their tasks. */ public class Duke { /** Stores the list of tasks added by the user. */ - private final ArrayList tasks; - - /** - * Points to the index of the tasks array to insert the next task in. - * Also acts as a counter for the number of tasks in the tasks array. - */ - private int pointer; + private final TaskList tasks; - private final Storage storage = new Storage("data/list.txt"); + private final Ui ui = new Ui(); /** * Constructor for a Duke bot. */ public Duke() { - tasks = storage.load(); - pointer = tasks.size(); - greet(); - } - - private void speak(String message) { - System.out.println("============================================================\n"); - System.out.println(message); - System.out.println("============================================================"); - } - - private void greet() { - speak(" Greetings! My name is Alfred ^_^\n How may I be of service today?\n"); - } - - private void goodbye() { - speak(" Farewell!\n"); - } - - private void addTask(TaskType type, String task, String dateTime) { - try { - Task newTask = null; - switch (type) { - case TODO: - newTask = new Todo(task); - break; - case DEADLINE: - newTask = new Deadline(task, dateTime); - break; - case EVENT: - newTask = new Event(task, dateTime); - break; - default: - } - tasks.add(newTask); - storage.addTask(newTask); - pointer++; - speak(" Understood. I have added the following task:\n" - + " " + newTask - + " You now have a total of " + pointer + " task(s).\n"); - } catch (DukeException e) { - speak(e.toString()); - } - } - - private void deleteTask(int taskNum) throws DukeException { - if (taskNum <= pointer && taskNum > 0) { - pointer--; - speak(" Understood. I have removed the following task:\n" - + " " + tasks.get(taskNum - 1) - + " You have a total of " + pointer + " task(s) left.\n"); - tasks.remove(taskNum - 1); - storage.deleteTask(taskNum - 1); - } else if (pointer == 0) { - throw new DukeException("You have no tasks to delete."); - } else { - throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); - } - } - - private void updateTask(TaskAction func, int taskNum) throws DukeException { - if (taskNum <= pointer && taskNum > 0) { - switch (func) { - case MARK: - speak(tasks.get(taskNum - 1).setDone(true)); - break; - case UNMARK: - speak(tasks.get(taskNum - 1).setDone(false)); - break; - default: - } - storage.updateTask(tasks.get(taskNum - 1), taskNum - 1); - } else if (pointer == 0) { - throw new DukeException("You have no tasks to mark or unmark."); - } else { - throw new DukeException("Please indicate a task no. between 1 to " + pointer + "."); - } - } - - private void listTasks() { - if (pointer == 0) { - speak(" You have not added any tasks!\n"); - } else { - StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); - for (int i = 0; i < pointer; i++) { - result.append(" ").append(i + 1).append(".").append(tasks.get(i).toString()); - } - speak(result.toString()); - } - } - - private void emptyList() { - tasks.clear(); - storage.emptyList(); - pointer = 0; - speak(" Understood. I have emptied your list of tasks."); - } - - private void parseCommand(String cmd) throws DukeException { - String[] firstParse = cmd.split(" ", 2); - String firstTerm = firstParse[0]; - boolean hasSecondTerm = firstParse.length > 1; - - switch (firstTerm) { - case "bye": - goodbye(); - break; - case "todo": - if (hasSecondTerm) { - addTask(TaskType.TODO, firstParse[1], ""); - break; - } else { - throw new DukeException("Please provide a description for the todo."); - } - case "deadline": - if (hasSecondTerm) { - String[] secondParse = firstParse[1].split("/by", 2); - if (secondParse.length > 1) { - addTask(TaskType.DEADLINE, secondParse[0], secondParse[1]); - break; - } else { - throw new DukeException("Please provide a date/time for the deadline."); - } - } else { - throw new DukeException("Please provide a description for the deadline."); - } - case "event": - if (hasSecondTerm) { - String[] secondParse = firstParse[1].split("/at", 2); - if (secondParse.length > 1) { - addTask(TaskType.EVENT, secondParse[0], secondParse[1]); - break; - } else { - throw new DukeException("Please provide a date/time for the event."); - } - } else { - throw new DukeException("Please provide a description for the event."); - } - case "delete": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - deleteTask(Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { - speak(f.toString()); - break; - } - case "mark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - updateTask(TaskAction.MARK, Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { - speak(f.toString()); - break; - } - case "unmark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - updateTask(TaskAction.UNMARK, Integer.parseInt(secondTerm)); - break; - } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { - speak(f.toString()); - break; - } - case "list": - listTasks(); - break; - case "empty": - emptyList(); - break; - default: - throw new DukeException("Please enter a supported command."); - } + tasks = new TaskList(new Storage("data/list.txt")); } /** * Runs the Duke program until the user exits with the 'bye' command. */ public void run() { - Scanner scanner = new Scanner(System.in); + ui.greet(); String cmd = ""; while (!cmd.equals("bye")) { - cmd = scanner.nextLine().trim(); + cmd = ui.readCommand(); try { - parseCommand(cmd); + ui.speak(Parser.parseCommand(cmd, this.tasks)); } catch (DukeException e) { - speak(e.toString()); + ui.speak(e.toString()); } } - scanner.close(); } /** @@ -238,9 +43,4 @@ enum TaskType { DEADLINE, EVENT } - - enum TaskAction { - MARK, - UNMARK - } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 1e401d1954..720d21a6d1 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -18,6 +18,12 @@ public Event(String description, String dateTime) throws DukeException { this.end = TimeStamp.of(duration[1]); } + private Event(String description, TimeStamp start, TimeStamp end) { + super(description); + this.start = start; + this.end = end; + } + /** * Returns an Event constructed with data read from File. * @@ -25,10 +31,10 @@ public Event(String description, String dateTime) throws DukeException { * @return Event or null if data is corrupted. */ public static Event readData(String[] data) { - if (data.length < 4) { + if (data.length < 5) { return null; } - Event newEvent = new Event(data[2], data[3]); + Event newEvent = new Event(data[2], TimeStamp.fromFile(data[3]), TimeStamp.fromFile(data[4])); if (data[1].equals("X")) { newEvent.setDone(true); } @@ -43,7 +49,7 @@ public static Event readData(String[] data) { @Override public String writeData() { String symbol = this.isDone ? "X" : " "; - return "E|" + symbol + "|" + this.description + "|" + this.dateTime; + return "E|" + symbol + "|" + this.description + "|" + this.start + "|" + this.end; } /** diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java new file mode 100644 index 0000000000..a9dfcc762c --- /dev/null +++ b/src/main/java/Parser.java @@ -0,0 +1,90 @@ +/** + * Parser interprets user commands and executes them. + */ +public class Parser { + /** + * Interprets user commands ad executes them. + * + * @param cmd Command to execute. + * @param tasks TaskList to execute commands on. + * @return String containing a message for the user. + * @throws DukeException If command is invalid. + */ + public static String parseCommand(String cmd, TaskList tasks) throws DukeException { + String[] firstParse = cmd.split(" ", 2); + String firstTerm = firstParse[0]; + boolean hasSecondTerm = firstParse.length > 1; + + switch (firstTerm) { + case "bye": + return Ui.goodbye(); + case "todo": + if (hasSecondTerm) { + return tasks.addTask(Duke.TaskType.TODO, firstParse[1], ""); + } else { + throw new DukeException("Please provide a description for the todo."); + } + case "deadline": + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/by", 2); + if (secondParse.length > 1) { + return tasks.addTask(Duke.TaskType.DEADLINE, secondParse[0], secondParse[1]); + } else { + throw new DukeException("Please provide a date/time for the deadline."); + } + } else { + throw new DukeException("Please provide a description for the deadline."); + } + case "event": + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/at", 2); + if (secondParse.length > 1) { + return tasks.addTask(Duke.TaskType.EVENT, secondParse[0], secondParse[1]); + } else { + throw new DukeException("Please provide a date/time for the event."); + } + } else { + throw new DukeException("Please provide a description for the event."); + } + case "delete": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + return tasks.deleteTask(Integer.parseInt(secondTerm)); + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + return f.toString(); + } + case "mark": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + return tasks.updateTask(true, Integer.parseInt(secondTerm)); + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + return f.toString(); + } + case "unmark": + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + return tasks.updateTask(false, Integer.parseInt(secondTerm)); + } catch (NumberFormatException e) { + throw new DukeException("Please indicate the task no. in digits."); + } catch (DukeException f) { + return f.toString(); + } + case "list": + return tasks.listTasks(); + case "empty": + return tasks.emptyList(); + default: + throw new DukeException("Please enter a supported command."); + } + } +} diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index bd9bb732ed..4808656055 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -99,7 +99,7 @@ private void appendToFile() { contents = new StringBuilder(dataArray.get(0)); } else { contents = new StringBuilder(System.lineSeparator()); - contents.append(dataArray.get(0)); + contents.append(dataArray.get(counter - 1)); } writer.write(contents.toString()); writer.close(); diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java new file mode 100644 index 0000000000..883fc34f81 --- /dev/null +++ b/src/main/java/TaskList.java @@ -0,0 +1,121 @@ +import java.util.ArrayList; + +/** + * TaskList contains a list of Tasks as well methods to add, delete, update tasks. + */ +public class TaskList { + /** ArrayList to store all Tasks. */ + private final ArrayList tasks; + + /** Storage to read and write all Tasks to File. */ + private final Storage storage; + + /** + * Constructor for a TaskList. + * + * @param storage Storage to read and write all Tasks to. + */ + public TaskList(Storage storage) { + this.tasks = storage.load(); + this.storage = storage; + } + + /** + * Adds a Task to the TaskList. + * + * @param type The type of the new Task. + * @param task The information of the new Task. + * @param dateTime The date and time information of the new Task. + * @return String containing a message for the user. + * @throws DukeException If task or dateTime is invalid. + */ + public String addTask(Duke.TaskType type, String task, String dateTime) throws DukeException { + Task newTask = null; + switch (type) { + case TODO: + newTask = new Todo(task); + break; + case DEADLINE: + newTask = new Deadline(task, dateTime); + break; + case EVENT: + newTask = new Event(task, dateTime); + break; + default: + } + tasks.add(newTask); + storage.addTask(newTask); + return " Understood. I have added the following task:\n" + + " " + newTask + + " You now have a total of " + tasks.size() + " task(s).\n"; + } + + /** + * Removes a Task from the TaskList. + * + * @param taskNum The index of the Task to remove. + * @return String containing a message for the user. + * @throws DukeException If taskNum is invalid. + */ + public String deleteTask(int taskNum) throws DukeException { + if (taskNum <= tasks.size() && taskNum > 0) { + Task removedTask = tasks.remove(taskNum - 1); + storage.deleteTask(taskNum - 1); + return " Understood. I have removed the following task:\n" + + " " + removedTask + + " You have a total of " + tasks.size() + " task(s) left.\n"; + } else if (tasks.size() == 0) { + throw new DukeException("You have no tasks to delete."); + } else { + throw new DukeException("Please indicate a task no. between 1 to " + tasks.size() + "."); + } + } + + /** + * Updates a Task in the TaskList. + * + * @param status The new status of the Task. + * @param taskNum The index of the Task to update. + * @return String containing a message for the user. + * @throws DukeException If taskNum is invalid. + */ + public String updateTask(boolean status, int taskNum) throws DukeException { + if (taskNum <= tasks.size() && taskNum > 0) { + String message = tasks.get(taskNum - 1).setDone(status); + storage.updateTask(tasks.get(taskNum - 1), taskNum - 1); + return message; + } else if (tasks.size() == 0) { + throw new DukeException("You have no tasks to mark or unmark."); + } else { + throw new DukeException("Please indicate a task no. between 1 to " + tasks.size() + "."); + } + } + + /** + * Lists all Tasks in the TaskList. + * + * @return String containing the list. + */ + public String listTasks() { + if (tasks.size() == 0) { + return " You have not added any tasks!\n"; + } else { + StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); + for (int i = 0; i < tasks.size(); i++) { + result.append(" ").append(i + 1).append(".").append(tasks.get(i).toString()); + } + return result.toString(); + } + } + + /** + * Removes all Tasks from the TaskList. + * + * @return String containing a message for the user. + */ + public String emptyList() { + tasks.clear(); + storage.emptyList(); + return " Understood. I have emptied your list of tasks."; + } +} diff --git a/src/main/java/TimeStamp.java b/src/main/java/TimeStamp.java index e7f6794fde..66c8bb8faf 100644 --- a/src/main/java/TimeStamp.java +++ b/src/main/java/TimeStamp.java @@ -28,6 +28,27 @@ public static TimeStamp of(String dateTime) throws DukeException { } } + /** + * Factory method for TimeStamps, meant for reading from File. + * + * @param dateTime Date and Time information in the format of (dd/MM/yyyy-HH:mm). + * @return TimeStamp. + */ + public static TimeStamp fromFile(String dateTime) { + DateTimeFormatter format = DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a"); + try { + return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); + } catch (DateTimeParseException e) { + System.out.println("fromFile failed"); + return new TimeStamp(LocalDateTime.now()); + } + } + + /** + * Returns String Representation of a TimeStamp. + * + * @return String Representation. + */ @Override public String toString() { return " " + timestamp.format(DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a")); diff --git a/src/main/java/Ui.java b/src/main/java/Ui.java new file mode 100644 index 0000000000..b6ea31123a --- /dev/null +++ b/src/main/java/Ui.java @@ -0,0 +1,42 @@ +import java.util.Scanner; + +/** + * Ui handles all interactions with the user. + */ +public class Ui { + private final Scanner scanner = new Scanner(System.in); + + /** + * Prints a message with message borders. + * + * @param message Message to print. + */ + public void speak(String message) { + System.out.println("=======================================================================================\n"); + System.out.println(message); + System.out.println("======================================================================================="); + } + + /** + * Greets the user. + */ + public void greet() { + speak(" Greetings! My name is Alfred ^_^\n How may I be of service today?\n"); + } + + /** + * Say Goodbye to the user. + */ + public static String goodbye() { + return " Farewell!\n"; + } + + /** + * Reads a command from the user. + * + * @return String with the command. + */ + public String readCommand() { + return scanner.nextLine().trim(); + } +} diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 23dc5c4381..4ac33f7c24 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,251 +1,269 @@ -============================================================ +======================================================================================= Greetings! My name is Alfred ^_^ How may I be of service today? -============================================================ -============================================================ +======================================================================================= +======================================================================================= + + Here are your current tasks: + 1.[T][ ] todoTest + 2.[D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) + 3.[E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) + +======================================================================================= +======================================================================================= + + Understood. I have emptied your list of tasks. +======================================================================================= +======================================================================================= + + You have not added any tasks! + +======================================================================================= +======================================================================================= + + Understood. I have emptied your list of tasks. +======================================================================================= +======================================================================================= You have not added any tasks! -============================================================ -============================================================ +======================================================================================= +======================================================================================= + + ☹ Apologies! You have no tasks to mark or unmark. + +======================================================================================= +======================================================================================= + + ☹ Apologies! You have no tasks to mark or unmark. + +======================================================================================= +======================================================================================= + + ☹ Apologies! You have no tasks to delete. + +======================================================================================= +======================================================================================= ☹ Apologies! Please provide a description for the todo. -============================================================ -============================================================ +======================================================================================= +======================================================================================= Understood. I have added the following task: [T][ ] todoTest You now have a total of 1 task(s). -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please provide a description for the deadline. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please provide a date/time for the deadline. -============================================================ -============================================================ +======================================================================================= +======================================================================================= + + ☹ Apologies! Please indicate date and time properly. (20/8/2022-15:37) + +======================================================================================= +======================================================================================= Understood. I have added the following task: - [D][ ] deadlineTest (by: TestDay) + [D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) You now have a total of 2 task(s). -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please provide a description for the event. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please provide a date/time for the event. -============================================================ -============================================================ +======================================================================================= +======================================================================================= + + ☹ Apologies! Please indicate date and time properly. (20/8/2022-15:37) + +======================================================================================= +======================================================================================= Understood. I have added the following task: - [E][ ] eventTest (at: TestDay) + [E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) You now have a total of 3 task(s). -============================================================ -============================================================ +======================================================================================= +======================================================================================= Here are your current tasks: 1.[T][ ] todoTest - 2.[D][ ] deadlineTest (by: TestDay) - 3.[E][ ] eventTest (at: TestDay) + 2.[D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) + 3.[E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate the task no. in digits. -============================================================ -============================================================ +======================================================================================= +======================================================================================= Great job! I will mark the task as completed. - [D][X] deadlineTest (by: TestDay) + [D][X] deadlineTest (by: Sat, 8 January 2000 12:00 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= Great job! I will mark the task as completed. - [E][X] eventTest (at: TestDay) + [E][X] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= Great job! I will mark the task as completed. - [D][X] deadlineTest (by: TestDay) + [D][X] deadlineTest (by: Sat, 8 January 2000 12:00 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= Here are your current tasks: 1.[T][ ] todoTest - 2.[D][X] deadlineTest (by: TestDay) - 3.[E][X] eventTest (at: TestDay) + 2.[D][X] deadlineTest (by: Sat, 8 January 2000 12:00 PM) + 3.[E][X] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate the task no. in digits. -============================================================ -============================================================ +======================================================================================= +======================================================================================= Understood. I will mark the task as uncompleted. - [D][ ] deadlineTest (by: TestDay) + [D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= Understood. I will mark the task as uncompleted. - [E][ ] eventTest (at: TestDay) + [E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= Understood. I will mark the task as uncompleted. - [D][ ] deadlineTest (by: TestDay) + [D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= Here are your current tasks: 1.[T][ ] todoTest - 2.[D][ ] deadlineTest (by: TestDay) - 3.[E][ ] eventTest (at: TestDay) + 2.[D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) + 3.[E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please enter a supported command. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 3. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate the task no. in digits. -============================================================ -============================================================ +======================================================================================= +======================================================================================= Understood. I have removed the following task: - [E][ ] eventTest (at: TestDay) + [E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) You have a total of 2 task(s) left. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 2. -============================================================ -============================================================ +======================================================================================= +======================================================================================= Here are your current tasks: 1.[T][ ] todoTest - 2.[D][ ] deadlineTest (by: TestDay) + 2.[D][ ] deadlineTest (by: Sat, 8 January 2000 12:00 PM) -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 2. -============================================================ -============================================================ +======================================================================================= +======================================================================================= ☹ Apologies! Please indicate a task no. between 1 to 2. -============================================================ -============================================================ +======================================================================================= +======================================================================================= Understood. I have added the following task: - [E][ ] eventTest (at: TestDay) + [E][ ] eventTest (at: Sat, 8 January 2000 12:00 PM - Sat, 20 August 2022 5:59 PM) You now have a total of 3 task(s). -============================================================ -============================================================ - - Understood. I have emptied your list of tasks. -============================================================ -============================================================ - - You have not added any tasks! - -============================================================ -============================================================ - - Understood. I have emptied your list of tasks. -============================================================ -============================================================ - - You have not added any tasks! - -============================================================ -============================================================ - - ☹ Apologies! You have no tasks to mark or unmark. - -============================================================ -============================================================ - - ☹ Apologies! You have no tasks to mark or unmark. - -============================================================ -============================================================ +======================================================================================= +======================================================================================= Farewell! -============================================================ +======================================================================================= diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index dccbdc693b..b1fc3a9667 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,12 +1,21 @@ list +empty +list +empty +list +mark 0 +unmark 0 +delete 0 todo todo todoTest deadline deadline deadlineTest -deadline deadlineTest /by TestDay +deadline deadlineTest /by 99/99/9999-99:99 +deadline deadlineTest /by 08/01/2000-12:00 event event eventTest -event eventTest /at TestDay +event eventTest /at 00/00/0000-00:00 ~ 99/99/9999-99:99 +event eventTest /at 08/01/2000-12:00 ~ 20/8/2022-17:59 list mark mark -1 @@ -34,11 +43,5 @@ delete 3 list mark 3 unmark 3 -event eventTest /at TestDay -empty -list -empty -list -mark 1 -unmark 1 +event eventTest /at 08/01/2000-12:00 ~ 20/8/2022-17:59 bye \ No newline at end of file From 7823c9cb6ea58673d9e0fa9d05d64e82d687cb85 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 20:17:45 +0800 Subject: [PATCH 14/31] Rename Duke/Alfred to Ren and Add 2 packages Name alternated between Duke and Alfred. Confusing for users. Name has been standardized to Ren. ren package and ren.task package added. --- src/main/java/{ => ren}/Parser.java | 36 ++++++++++--------- src/main/java/{Duke.java => ren/Ren.java} | 18 +++++----- .../RenException.java} | 12 ++++--- src/main/java/{ => ren}/Storage.java | 7 ++++ src/main/java/{ => ren}/TaskList.java | 28 +++++++++------ src/main/java/{ => ren}/TimeStamp.java | 8 +++-- src/main/java/{ => ren}/Ui.java | 4 ++- src/main/java/{ => ren/task}/Deadline.java | 7 +++- src/main/java/{ => ren/task}/Event.java | 7 +++- src/main/java/{ => ren/task}/Task.java | 2 ++ src/main/java/{ => ren/task}/Todo.java | 2 ++ text-ui-test/EXPECTED.TXT | 2 +- text-ui-test/runtest.bat | 9 +++-- text-ui-test/runtest.sh | 9 +++-- 14 files changed, 100 insertions(+), 51 deletions(-) rename src/main/java/{ => ren}/Parser.java (65%) rename src/main/java/{Duke.java => ren/Ren.java} (66%) rename src/main/java/{DukeException.java => ren/RenException.java} (50%) rename src/main/java/{ => ren}/Storage.java (97%) rename src/main/java/{ => ren}/TaskList.java (81%) rename src/main/java/{ => ren}/TimeStamp.java (86%) rename src/main/java/{ => ren}/Ui.java (90%) rename src/main/java/{ => ren/task}/Deadline.java (95%) rename src/main/java/{ => ren/task}/Event.java (92%) rename src/main/java/{ => ren/task}/Task.java (98%) rename src/main/java/{ => ren/task}/Todo.java (98%) diff --git a/src/main/java/Parser.java b/src/main/java/ren/Parser.java similarity index 65% rename from src/main/java/Parser.java rename to src/main/java/ren/Parser.java index a9dfcc762c..437a5bd230 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/ren/Parser.java @@ -1,3 +1,5 @@ +package ren; + /** * Parser interprets user commands and executes them. */ @@ -8,9 +10,9 @@ public class Parser { * @param cmd Command to execute. * @param tasks TaskList to execute commands on. * @return String containing a message for the user. - * @throws DukeException If command is invalid. + * @throws RenException If command is invalid. */ - public static String parseCommand(String cmd, TaskList tasks) throws DukeException { + public static String parseCommand(String cmd, TaskList tasks) throws RenException { String[] firstParse = cmd.split(" ", 2); String firstTerm = firstParse[0]; boolean hasSecondTerm = firstParse.length > 1; @@ -20,31 +22,31 @@ public static String parseCommand(String cmd, TaskList tasks) throws DukeExcepti return Ui.goodbye(); case "todo": if (hasSecondTerm) { - return tasks.addTask(Duke.TaskType.TODO, firstParse[1], ""); + return tasks.addTask(Ren.TaskType.TODO, firstParse[1], ""); } else { - throw new DukeException("Please provide a description for the todo."); + throw new RenException("Please provide a description for the todo."); } case "deadline": if (hasSecondTerm) { String[] secondParse = firstParse[1].split("/by", 2); if (secondParse.length > 1) { - return tasks.addTask(Duke.TaskType.DEADLINE, secondParse[0], secondParse[1]); + return tasks.addTask(Ren.TaskType.DEADLINE, secondParse[0], secondParse[1]); } else { - throw new DukeException("Please provide a date/time for the deadline."); + throw new RenException("Please provide a date/time for the deadline."); } } else { - throw new DukeException("Please provide a description for the deadline."); + throw new RenException("Please provide a description for the deadline."); } case "event": if (hasSecondTerm) { String[] secondParse = firstParse[1].split("/at", 2); if (secondParse.length > 1) { - return tasks.addTask(Duke.TaskType.EVENT, secondParse[0], secondParse[1]); + return tasks.addTask(Ren.TaskType.EVENT, secondParse[0], secondParse[1]); } else { - throw new DukeException("Please provide a date/time for the event."); + throw new RenException("Please provide a date/time for the event."); } } else { - throw new DukeException("Please provide a description for the event."); + throw new RenException("Please provide a description for the event."); } case "delete": try { @@ -53,8 +55,8 @@ public static String parseCommand(String cmd, TaskList tasks) throws DukeExcepti : "0"; return tasks.deleteTask(Integer.parseInt(secondTerm)); } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { + throw new RenException("Please indicate the task no. in digits."); + } catch (RenException f) { return f.toString(); } case "mark": @@ -64,8 +66,8 @@ public static String parseCommand(String cmd, TaskList tasks) throws DukeExcepti : "0"; return tasks.updateTask(true, Integer.parseInt(secondTerm)); } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { + throw new RenException("Please indicate the task no. in digits."); + } catch (RenException f) { return f.toString(); } case "unmark": @@ -75,8 +77,8 @@ public static String parseCommand(String cmd, TaskList tasks) throws DukeExcepti : "0"; return tasks.updateTask(false, Integer.parseInt(secondTerm)); } catch (NumberFormatException e) { - throw new DukeException("Please indicate the task no. in digits."); - } catch (DukeException f) { + throw new RenException("Please indicate the task no. in digits."); + } catch (RenException f) { return f.toString(); } case "list": @@ -84,7 +86,7 @@ public static String parseCommand(String cmd, TaskList tasks) throws DukeExcepti case "empty": return tasks.emptyList(); default: - throw new DukeException("Please enter a supported command."); + throw new RenException("Please enter a supported command."); } } } diff --git a/src/main/java/Duke.java b/src/main/java/ren/Ren.java similarity index 66% rename from src/main/java/Duke.java rename to src/main/java/ren/Ren.java index 2848b5ca10..4746a3db58 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/ren/Ren.java @@ -1,21 +1,23 @@ +package ren; + /** - * Duke is a Task Manager program that helps a user keep track of and manage their tasks. + * Ren is a Task Manager program that helps a user keep track of and manage their tasks. */ -public class Duke { +public class Ren { /** Stores the list of tasks added by the user. */ private final TaskList tasks; private final Ui ui = new Ui(); /** - * Constructor for a Duke bot. + * Constructor for a Ren bot. */ - public Duke() { + public Ren() { tasks = new TaskList(new Storage("data/list.txt")); } /** - * Runs the Duke program until the user exits with the 'bye' command. + * Runs the Ren program until the user exits with the 'bye' command. */ public void run() { ui.greet(); @@ -25,17 +27,17 @@ public void run() { try { ui.speak(Parser.parseCommand(cmd, this.tasks)); - } catch (DukeException e) { + } catch (RenException e) { ui.speak(e.toString()); } } } /** - * Driver method for Duke. + * Driver method for Ren. */ public static void main(String[] args) { - new Duke().run(); + new Ren().run(); } enum TaskType { diff --git a/src/main/java/DukeException.java b/src/main/java/ren/RenException.java similarity index 50% rename from src/main/java/DukeException.java rename to src/main/java/ren/RenException.java index f0da0ca21d..f9582476a0 100644 --- a/src/main/java/DukeException.java +++ b/src/main/java/ren/RenException.java @@ -1,18 +1,20 @@ +package ren; + /** - * DukeExceptions represent errors in user input when using Alfred. + * RenExceptions represent errors in user input when using Ren. */ -public class DukeException extends Exception { +public class RenException extends Exception { /** - * Constructor for a DukeException. + * Constructor for a RenException. * * @param message Error Message. */ - public DukeException(String message) { + public RenException(String message) { super(message); } /** - * Returns the string representation of this DukeException. + * Returns the string representation of this RenException. * * @return String Representation. */ diff --git a/src/main/java/Storage.java b/src/main/java/ren/Storage.java similarity index 97% rename from src/main/java/Storage.java rename to src/main/java/ren/Storage.java index 4808656055..91aaa04c7f 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/ren/Storage.java @@ -1,3 +1,5 @@ +package ren; + import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; @@ -5,6 +7,11 @@ import java.util.ArrayList; import java.util.Scanner; +import ren.task.Deadline; +import ren.task.Event; +import ren.task.Task; +import ren.task.Todo; + /** * Storage handles the reading and writing of Tasks to a File. */ diff --git a/src/main/java/TaskList.java b/src/main/java/ren/TaskList.java similarity index 81% rename from src/main/java/TaskList.java rename to src/main/java/ren/TaskList.java index 883fc34f81..0361b1a6a7 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -1,5 +1,13 @@ +package ren; + import java.util.ArrayList; +import ren.task.Deadline; +import ren.task.Event; +import ren.task.Task; +import ren.task.Todo; + + /** * TaskList contains a list of Tasks as well methods to add, delete, update tasks. */ @@ -27,9 +35,9 @@ public TaskList(Storage storage) { * @param task The information of the new Task. * @param dateTime The date and time information of the new Task. * @return String containing a message for the user. - * @throws DukeException If task or dateTime is invalid. + * @throws RenException If task or dateTime is invalid. */ - public String addTask(Duke.TaskType type, String task, String dateTime) throws DukeException { + public String addTask(Ren.TaskType type, String task, String dateTime) throws RenException { Task newTask = null; switch (type) { case TODO: @@ -55,9 +63,9 @@ public String addTask(Duke.TaskType type, String task, String dateTime) throws D * * @param taskNum The index of the Task to remove. * @return String containing a message for the user. - * @throws DukeException If taskNum is invalid. + * @throws RenException If taskNum is invalid. */ - public String deleteTask(int taskNum) throws DukeException { + public String deleteTask(int taskNum) throws RenException { if (taskNum <= tasks.size() && taskNum > 0) { Task removedTask = tasks.remove(taskNum - 1); storage.deleteTask(taskNum - 1); @@ -65,9 +73,9 @@ public String deleteTask(int taskNum) throws DukeException { + " " + removedTask + " You have a total of " + tasks.size() + " task(s) left.\n"; } else if (tasks.size() == 0) { - throw new DukeException("You have no tasks to delete."); + throw new RenException("You have no tasks to delete."); } else { - throw new DukeException("Please indicate a task no. between 1 to " + tasks.size() + "."); + throw new RenException("Please indicate a task no. between 1 to " + tasks.size() + "."); } } @@ -77,17 +85,17 @@ public String deleteTask(int taskNum) throws DukeException { * @param status The new status of the Task. * @param taskNum The index of the Task to update. * @return String containing a message for the user. - * @throws DukeException If taskNum is invalid. + * @throws RenException If taskNum is invalid. */ - public String updateTask(boolean status, int taskNum) throws DukeException { + public String updateTask(boolean status, int taskNum) throws RenException { if (taskNum <= tasks.size() && taskNum > 0) { String message = tasks.get(taskNum - 1).setDone(status); storage.updateTask(tasks.get(taskNum - 1), taskNum - 1); return message; } else if (tasks.size() == 0) { - throw new DukeException("You have no tasks to mark or unmark."); + throw new RenException("You have no tasks to mark or unmark."); } else { - throw new DukeException("Please indicate a task no. between 1 to " + tasks.size() + "."); + throw new RenException("Please indicate a task no. between 1 to " + tasks.size() + "."); } } diff --git a/src/main/java/TimeStamp.java b/src/main/java/ren/TimeStamp.java similarity index 86% rename from src/main/java/TimeStamp.java rename to src/main/java/ren/TimeStamp.java index 66c8bb8faf..422ff15db2 100644 --- a/src/main/java/TimeStamp.java +++ b/src/main/java/ren/TimeStamp.java @@ -1,3 +1,5 @@ +package ren; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -17,14 +19,14 @@ private TimeStamp(LocalDateTime timestamp) { * * @param dateTime Date and Time information in the format of (dd/MM/yyyy-HH:mm). * @return TimeStamp. - * @throws DukeException If dateTime is not formatted correctly. + * @throws RenException If dateTime is not formatted correctly. */ - public static TimeStamp of(String dateTime) throws DukeException { + public static TimeStamp of(String dateTime) throws RenException { DateTimeFormatter format = DateTimeFormatter.ofPattern("d/M/yyyy-H:mm"); try { return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); } catch (DateTimeParseException e) { - throw new DukeException("Please indicate date and time properly. (20/8/2022-15:37)"); + throw new RenException("Please indicate date and time properly. (20/8/2022-15:37)"); } } diff --git a/src/main/java/Ui.java b/src/main/java/ren/Ui.java similarity index 90% rename from src/main/java/Ui.java rename to src/main/java/ren/Ui.java index b6ea31123a..e866eb911a 100644 --- a/src/main/java/Ui.java +++ b/src/main/java/ren/Ui.java @@ -1,3 +1,5 @@ +package ren; + import java.util.Scanner; /** @@ -21,7 +23,7 @@ public void speak(String message) { * Greets the user. */ public void greet() { - speak(" Greetings! My name is Alfred ^_^\n How may I be of service today?\n"); + speak(" Greetings! My name is Ren ^_^\n How may I be of service today?\n"); } /** diff --git a/src/main/java/Deadline.java b/src/main/java/ren/task/Deadline.java similarity index 95% rename from src/main/java/Deadline.java rename to src/main/java/ren/task/Deadline.java index 5804ec7cf0..3668d982aa 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/ren/task/Deadline.java @@ -1,3 +1,8 @@ +package ren.task; + +import ren.RenException; +import ren.TimeStamp; + /** * Deadline Task represents an action that needs to be done by a certain date or time. */ @@ -10,7 +15,7 @@ public class Deadline extends Task { * @param description the description of the Task * @param dateTime the deadline of the Task */ - public Deadline(String description, String dateTime) throws DukeException { + public Deadline(String description, String dateTime) throws RenException { super(description); this.dateTime = TimeStamp.of(dateTime); } diff --git a/src/main/java/Event.java b/src/main/java/ren/task/Event.java similarity index 92% rename from src/main/java/Event.java rename to src/main/java/ren/task/Event.java index 720d21a6d1..3cf865a26d 100644 --- a/src/main/java/Event.java +++ b/src/main/java/ren/task/Event.java @@ -1,3 +1,8 @@ +package ren.task; + +import ren.RenException; +import ren.TimeStamp; + /** * Event Task represents an event that takes place between certain dates/time. */ @@ -11,7 +16,7 @@ public class Event extends Task { * @param description the description of the Event * @param dateTime the start and end dates/time of the Event */ - public Event(String description, String dateTime) throws DukeException { + public Event(String description, String dateTime) throws RenException { super(description); String[] duration = dateTime.split(" ~ ", 2); this.start = TimeStamp.of(duration[0]); diff --git a/src/main/java/Task.java b/src/main/java/ren/task/Task.java similarity index 98% rename from src/main/java/Task.java rename to src/main/java/ren/task/Task.java index 84137e81b4..679eac398c 100644 --- a/src/main/java/Task.java +++ b/src/main/java/ren/task/Task.java @@ -1,3 +1,5 @@ +package ren.task; + /** * Parent Class for all Tasks. */ diff --git a/src/main/java/Todo.java b/src/main/java/ren/task/Todo.java similarity index 98% rename from src/main/java/Todo.java rename to src/main/java/ren/task/Todo.java index 7c16310274..11c1e8c105 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/ren/task/Todo.java @@ -1,3 +1,5 @@ +package ren.task; + /** * Todo Task represents an action that needs to be done. */ diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 4ac33f7c24..736be26b02 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,6 +1,6 @@ ======================================================================================= - Greetings! My name is Alfred ^_^ + Greetings! My name is Ren ^_^ How may I be of service today? ======================================================================================= diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 0873744649..140a9bac99 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -7,7 +7,12 @@ REM delete output from previous run 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 -Xlint:none -d ..\bin ..\src\main\java\ren\*.java +IF ERRORLEVEL 1 ( + echo ********** BUILD FAILURE ********** + exit /b 1 +) +javac -cp ..\src\main\java -Xlint:none -d ..\bin ..\src\main\java\ren\task\*.java IF ERRORLEVEL 1 ( echo ********** BUILD FAILURE ********** exit /b 1 @@ -15,7 +20,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 ren.Ren < input.txt > ACTUAL.TXT REM compare the output to the expected output FC ACTUAL.TXT EXPECTED.TXT diff --git a/text-ui-test/runtest.sh b/text-ui-test/runtest.sh index c9ec870033..926f95e305 100644 --- a/text-ui-test/runtest.sh +++ b/text-ui-test/runtest.sh @@ -13,14 +13,19 @@ then fi # compile the code into the bin folder, terminates if error occurred -if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java +if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/ren/*.java +then + echo "********** BUILD FAILURE **********" + exit 1 +fi +if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/ren/task/*.java then echo "********** BUILD FAILURE **********" exit 1 fi # 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 ren.Ren < input.txt > ACTUAL.TXT # convert to UNIX format cp EXPECTED.TXT EXPECTED-UNIX.TXT From 1f4739e4036e1c08d708829bcc354e189b803642 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 21:13:56 +0800 Subject: [PATCH 15/31] Add Gradle Support --- build.gradle | 5 + config/checkstyle/checkstyle.xml | 434 +++++++++++++++++++++++++++++ config/checkstyle/suppressions.xml | 10 + 3 files changed, 449 insertions(+) create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/checkstyle/suppressions.xml diff --git a/build.gradle b/build.gradle index 885198fcfa..e8437b12f9 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' } @@ -31,6 +32,10 @@ application { mainClassName = "seedu.duke.Duke" } +checkstyle { + toolVersion = '10.2' +} + shadowJar { archiveBaseName = "duke" archiveClassifier = null diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000000..d618671b83 --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml new file mode 100644 index 0000000000..39efb6e4ac --- /dev/null +++ b/config/checkstyle/suppressions.xml @@ -0,0 +1,10 @@ + + + + + + + + From f6491cfc66a9cf97eec35316470576c4f140b7af Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 23:32:26 +0800 Subject: [PATCH 16/31] Add JUnit Tests Added JUnit Tests for 6 out of 11 classes. Classes without JUnit Tests: * Ren * Ui * TaskList * Storage * Tasks --- src/test/java/ren/ParserTest.java | 182 +++++++++++++++++++++++ src/test/java/ren/RenExceptionTest.java | 18 +++ src/test/java/ren/TaskListStub.java | 32 ++++ src/test/java/ren/TimeStampTest.java | 34 +++++ src/test/java/ren/task/DeadlineTest.java | 36 +++++ src/test/java/ren/task/EventTest.java | 40 +++++ src/test/java/ren/task/TodoTest.java | 24 +++ 7 files changed, 366 insertions(+) create mode 100644 src/test/java/ren/ParserTest.java create mode 100644 src/test/java/ren/RenExceptionTest.java create mode 100644 src/test/java/ren/TaskListStub.java create mode 100644 src/test/java/ren/TimeStampTest.java create mode 100644 src/test/java/ren/task/DeadlineTest.java create mode 100644 src/test/java/ren/task/EventTest.java create mode 100644 src/test/java/ren/task/TodoTest.java diff --git a/src/test/java/ren/ParserTest.java b/src/test/java/ren/ParserTest.java new file mode 100644 index 0000000000..85d4da1a95 --- /dev/null +++ b/src/test/java/ren/ParserTest.java @@ -0,0 +1,182 @@ +package ren; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +public class ParserTest { + private final TaskList stub = new TaskListStub(); + + @Test + public void parseCommand_bye_success () { + try { + assertEquals(" Farewell!\n", Parser.parseCommand("bye", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_todo_success () { + try { + assertEquals("", Parser.parseCommand("todo test", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_todo_exceptionThrown () { + try { + Parser.parseCommand("todo", stub); + fail(); + } catch (RenException e) { + assertEquals("Please provide a description for the todo.", e.getMessage()); + } + } + + @Test + public void parseCommand_deadline_success () { + try { + assertEquals("", Parser.parseCommand("deadline test /by test", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_deadline_exceptionThrown () { + try { + Parser.parseCommand("deadline", stub); + fail(); + } catch (RenException e) { + assertEquals("Please provide a description for the deadline.", e.getMessage()); + } + } + + @Test + public void parseCommand_deadline2_exceptionThrown () { + try { + Parser.parseCommand("deadline test", stub); + fail(); + } catch (RenException e) { + assertEquals("Please provide a date/time for the deadline.", e.getMessage()); + } + } + + @Test + public void parseCommand_event_success () { + try { + assertEquals("", Parser.parseCommand("event test /at test", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_event_exceptionThrown () { + try { + Parser.parseCommand("event", stub); + fail(); + } catch (RenException e) { + assertEquals("Please provide a description for the event.", e.getMessage()); + } + } + + @Test + public void parseCommand_event2_exceptionThrown () { + try { + Parser.parseCommand("event test", stub); + fail(); + } catch (RenException e) { + assertEquals("Please provide a date/time for the event.", e.getMessage()); + } + } + + @Test + public void parseCommand_delete_success () { + try { + assertEquals("", Parser.parseCommand("delete 2", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_delete_exceptionThrown () { + try { + Parser.parseCommand("delete one", stub); + fail(); + } catch (RenException e) { + assertEquals("Please indicate the task no. in digits.", e.getMessage()); + } + } + + @Test + public void parseCommand_mark_success () { + try { + assertEquals("", Parser.parseCommand("mark 2", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_mark_exceptionThrown () { + try { + Parser.parseCommand("unmark one", stub); + fail(); + } catch (RenException e) { + assertEquals("Please indicate the task no. in digits.", e.getMessage()); + } + } + + @Test + public void parseCommand_unmark_success () { + try { + assertEquals("", Parser.parseCommand("unmark 2", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_unmark_exceptionThrown () { + try { + Parser.parseCommand("unmark one", stub); + fail(); + } catch (RenException e) { + assertEquals("Please indicate the task no. in digits.", e.getMessage()); + } + } + + @Test + public void parseCommand_list_success () { + try { + assertEquals("", Parser.parseCommand("list", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_empty_success () { + try { + assertEquals("", Parser.parseCommand("empty", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_blah_exceptionThrown () { + try { + Parser.parseCommand("blah", stub); + fail(); + } catch (RenException e) { + assertEquals("Please enter a supported command.", e.getMessage()); + } + } +} + diff --git a/src/test/java/ren/RenExceptionTest.java b/src/test/java/ren/RenExceptionTest.java new file mode 100644 index 0000000000..0d573515f6 --- /dev/null +++ b/src/test/java/ren/RenExceptionTest.java @@ -0,0 +1,18 @@ +package ren; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class RenExceptionTest { + @Test + public void toString_message_success() { + String message = "Test"; + assertEquals(" ☹ Apologies! Test\n", new RenException(message).toString()); + } + + @Test + public void toString_empty_success() { + assertEquals(" ☹ Apologies! \n", new RenException("").toString()); + } +} diff --git a/src/test/java/ren/TaskListStub.java b/src/test/java/ren/TaskListStub.java new file mode 100644 index 0000000000..6e4c43fa03 --- /dev/null +++ b/src/test/java/ren/TaskListStub.java @@ -0,0 +1,32 @@ +package ren; + +public class TaskListStub extends TaskList { + public TaskListStub() { + super(new Storage("data/list_test.txt")); + } + + @Override + public String addTask(Ren.TaskType type, String task, String dateTime) { + return ""; + } + + @Override + public String deleteTask(int taskNum) { + return ""; + } + + @Override + public String updateTask(boolean status, int taskNum) { + return ""; + } + + @Override + public String listTasks() { + return ""; + } + + @Override + public String emptyList() { + return ""; + } +} diff --git a/src/test/java/ren/TimeStampTest.java b/src/test/java/ren/TimeStampTest.java new file mode 100644 index 0000000000..4d368b2a0d --- /dev/null +++ b/src/test/java/ren/TimeStampTest.java @@ -0,0 +1,34 @@ +package ren; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +public class TimeStampTest { + @Test + public void of_dateTime_success() { + try { + TimeStamp test = TimeStamp.of("20/8/2022-22:04"); + assertEquals(" Sat, 20 August 2022 10:04 PM", test.toString()); + } catch (RenException e) { + fail(); + } + } + + @Test + public void of_invalidDateTime_exceptionThrown() { + try { + TimeStamp.of("lmao"); + fail(); + } catch (RenException e) { + assertEquals("Please indicate date and time properly. (20/8/2022-15:37)", e.getMessage()); + } + } + + @Test + public void fromFile_dateTime_success() { + TimeStamp test = TimeStamp.fromFile("Sat, 20 August 2022 10:04 PM"); + assertEquals(" Sat, 20 August 2022 10:04 PM", test.toString()); + } +} diff --git a/src/test/java/ren/task/DeadlineTest.java b/src/test/java/ren/task/DeadlineTest.java new file mode 100644 index 0000000000..785c790628 --- /dev/null +++ b/src/test/java/ren/task/DeadlineTest.java @@ -0,0 +1,36 @@ +package ren.task; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import ren.RenException; + +public class DeadlineTest { + @Test + public void toString_description_success() { + try { + Deadline test = new Deadline("test", "20/8/2022-11:11"); + assertEquals("[D][ ] test(by: Sat, 20 August 2022 11:11 AM)\n", test.toString()); + } catch (RenException e) { + fail(); + } + } + + @Test + public void writeData_description_success() { + try { + Deadline test = new Deadline("test", "20/8/2022-11:11"); + assertEquals("D| |test| Sat, 20 August 2022 11:11 AM", test.writeData()); + } catch (RenException e) { + fail(); + } + } + + @Test + public void readData_description_success() { + Deadline test = Deadline.readData(new String[] {"D", " ", "test", "Sat, 20 August 2022 11:11 AM"}); + assert test != null; + assertEquals("D| |test| Sat, 20 August 2022 11:11 AM", test.writeData()); + } +} diff --git a/src/test/java/ren/task/EventTest.java b/src/test/java/ren/task/EventTest.java new file mode 100644 index 0000000000..098a3b3255 --- /dev/null +++ b/src/test/java/ren/task/EventTest.java @@ -0,0 +1,40 @@ +package ren.task; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import ren.RenException; + +public class EventTest { + @Test + public void toString_description_success() { + try { + Event test = new Event("test", "20/8/2022-11:11 ~ 20/8/2022-11:11"); + String expected = "[E][ ] test(at: Sat, 20 August 2022 11:11 AM - Sat, 20 August 2022 11:11 AM)\n"; + assertEquals(expected, test.toString()); + } catch (RenException e) { + fail(); + } + } + + @Test + public void writeData_description_success() { + try { + Event test = new Event("test", "20/8/2022-11:11 ~ 20/8/2022-11:11"); + String expected = "E| |test| Sat, 20 August 2022 11:11 AM| Sat, 20 August 2022 11:11 AM"; + assertEquals(expected, test.writeData()); + } catch (RenException e) { + fail(); + } + } + + @Test + public void readData_description_success() { + String[] input = {"E", " ", "test", "Sat, 20 August 2022 11:11 AM", "Sat, 20 August 2022 11:11 AM"}; + Event test = Event.readData(input); + assert test != null; + String expected = "E| |test| Sat, 20 August 2022 11:11 AM| Sat, 20 August 2022 11:11 AM"; + assertEquals(expected, test.writeData()); + } +} diff --git a/src/test/java/ren/task/TodoTest.java b/src/test/java/ren/task/TodoTest.java new file mode 100644 index 0000000000..b494a97595 --- /dev/null +++ b/src/test/java/ren/task/TodoTest.java @@ -0,0 +1,24 @@ +package ren.task; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TodoTest { + @Test + public void toString_description_success() { + assertEquals("[T][ ] test\n", new Todo("test").toString()); + } + + @Test + public void writeData_description_success() { + assertEquals("T| |test", new Todo("test").writeData()); + } + + @Test + public void readData_description_success() { + Todo test = Todo.readData(new String[] {"T", " ", "test"}); + assert test != null; + assertEquals("T| |test", test.writeData()); + } +} From 6605c2006377ef76db7ff3e72fd34c2a4ac99618 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 20 Aug 2022 23:53:16 +0800 Subject: [PATCH 17/31] Release v0.2 (Packaging as JAR file) --- build.gradle | 4 ++-- src/main/java/ren/RenException.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index e8437b12f9..d0bdb0eb2f 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClassName = "ren.Ren" } checkstyle { @@ -37,7 +37,7 @@ checkstyle { } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "ren" archiveClassifier = null } diff --git a/src/main/java/ren/RenException.java b/src/main/java/ren/RenException.java index f9582476a0..867c95e285 100644 --- a/src/main/java/ren/RenException.java +++ b/src/main/java/ren/RenException.java @@ -20,6 +20,6 @@ public RenException(String message) { */ @Override public String toString() { - return " ☹ Apologies! " + super.getMessage() + "\n"; + return " >_< Apologies! " + super.getMessage() + "\n"; } } From 2e039eaca2c0c76aeafb8eecaefad67420ae0cad Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 21 Aug 2022 00:36:13 +0800 Subject: [PATCH 18/31] Add JavaDoc Add JavaDoc for all non-private classes/methods Add JavaDoc for all non-trivial private methods. --- src/main/java/ren/Parser.java | 8 +++++++- src/main/java/ren/Ren.java | 6 +++++- src/main/java/ren/Storage.java | 14 ++++++++++++++ src/main/java/ren/TaskList.java | 3 +-- src/main/java/ren/TimeStamp.java | 2 ++ src/main/java/ren/Ui.java | 4 +++- src/main/java/ren/task/Deadline.java | 1 + src/main/java/ren/task/Event.java | 1 + src/main/java/ren/task/Todo.java | 1 + src/test/java/ren/RenExceptionTest.java | 4 ++-- 10 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/main/java/ren/Parser.java b/src/main/java/ren/Parser.java index 437a5bd230..22f0f9010c 100644 --- a/src/main/java/ren/Parser.java +++ b/src/main/java/ren/Parser.java @@ -5,7 +5,7 @@ */ public class Parser { /** - * Interprets user commands ad executes them. + * Interprets user commands and executes them. * * @param cmd Command to execute. * @param tasks TaskList to execute commands on. @@ -55,8 +55,10 @@ public static String parseCommand(String cmd, TaskList tasks) throws RenExceptio : "0"; return tasks.deleteTask(Integer.parseInt(secondTerm)); } catch (NumberFormatException e) { + // If the second term parsed isn't an integer throw new RenException("Please indicate the task no. in digits."); } catch (RenException f) { + // The user entered an invalid number return f.toString(); } case "mark": @@ -66,8 +68,10 @@ public static String parseCommand(String cmd, TaskList tasks) throws RenExceptio : "0"; return tasks.updateTask(true, Integer.parseInt(secondTerm)); } catch (NumberFormatException e) { + // If the second term parsed isn't an integer throw new RenException("Please indicate the task no. in digits."); } catch (RenException f) { + // The user entered an invalid number return f.toString(); } case "unmark": @@ -77,8 +81,10 @@ public static String parseCommand(String cmd, TaskList tasks) throws RenExceptio : "0"; return tasks.updateTask(false, Integer.parseInt(secondTerm)); } catch (NumberFormatException e) { + // If the second term parsed isn't an integer throw new RenException("Please indicate the task no. in digits."); } catch (RenException f) { + // The user entered an invalid number return f.toString(); } case "list": diff --git a/src/main/java/ren/Ren.java b/src/main/java/ren/Ren.java index 4746a3db58..290e7b0dc1 100644 --- a/src/main/java/ren/Ren.java +++ b/src/main/java/ren/Ren.java @@ -4,9 +4,10 @@ * Ren is a Task Manager program that helps a user keep track of and manage their tasks. */ public class Ren { - /** Stores the list of tasks added by the user. */ + /** Stores and manages the list of tasks added by the user. */ private final TaskList tasks; + /** Manages the interaction between user and Ren. */ private final Ui ui = new Ui(); /** @@ -40,6 +41,9 @@ public static void main(String[] args) { new Ren().run(); } + /** + * The types of Tasks supported by Ren. + */ enum TaskType { TODO, DEADLINE, diff --git a/src/main/java/ren/Storage.java b/src/main/java/ren/Storage.java index 91aaa04c7f..342a476821 100644 --- a/src/main/java/ren/Storage.java +++ b/src/main/java/ren/Storage.java @@ -42,9 +42,13 @@ public Storage(String filePath) { init(); } + /** + * Initialises dataArray using dataFile and creates dataFile if it is missing. + */ private void init() { if (!dataFile.exists()) { try { + // Check if the parent directory exists if (!dataFile.getParentFile().exists()) { dataFile.getParentFile().mkdir(); } @@ -66,6 +70,9 @@ private void init() { } } + /** + * Resets the File to a blank File. + */ private void newFile() { try { dataFile.delete(); @@ -75,6 +82,9 @@ private void newFile() { } } + /** + * Overwrite the File with a new list of Tasks. + */ private void writeToFile() { // Disable writing to File if error occurred during creation of file or reading of file. if (hasError) { @@ -94,6 +104,9 @@ private void writeToFile() { } } + /** + * Append a new Task's information to the File. + */ private void appendToFile() { // Disable writing to File if error occurred during creation of file or reading of file. if (hasError) { @@ -123,6 +136,7 @@ private void appendToFile() { public ArrayList load() { ArrayList tasks = new ArrayList<>(); for (int i = 0; i < this.counter; i++) { + // Split the task information into individual terms String[] data = dataArray.get(i).split("\\|"); Task newTask = null; switch (data[0]) { diff --git a/src/main/java/ren/TaskList.java b/src/main/java/ren/TaskList.java index 0361b1a6a7..43723594ff 100644 --- a/src/main/java/ren/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -7,7 +7,6 @@ import ren.task.Task; import ren.task.Todo; - /** * TaskList contains a list of Tasks as well methods to add, delete, update tasks. */ @@ -15,7 +14,7 @@ public class TaskList { /** ArrayList to store all Tasks. */ private final ArrayList tasks; - /** Storage to read and write all Tasks to File. */ + /** Storage to synchronize all changes with. */ private final Storage storage; /** diff --git a/src/main/java/ren/TimeStamp.java b/src/main/java/ren/TimeStamp.java index 422ff15db2..10b42082cd 100644 --- a/src/main/java/ren/TimeStamp.java +++ b/src/main/java/ren/TimeStamp.java @@ -22,6 +22,7 @@ private TimeStamp(LocalDateTime timestamp) { * @throws RenException If dateTime is not formatted correctly. */ public static TimeStamp of(String dateTime) throws RenException { + // format of the date and time information in the input DateTimeFormatter format = DateTimeFormatter.ofPattern("d/M/yyyy-H:mm"); try { return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); @@ -37,6 +38,7 @@ public static TimeStamp of(String dateTime) throws RenException { * @return TimeStamp. */ public static TimeStamp fromFile(String dateTime) { + // format of the date and time information in the input DateTimeFormatter format = DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a"); try { return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); diff --git a/src/main/java/ren/Ui.java b/src/main/java/ren/Ui.java index e866eb911a..2b23a0b55c 100644 --- a/src/main/java/ren/Ui.java +++ b/src/main/java/ren/Ui.java @@ -27,7 +27,9 @@ public void greet() { } /** - * Say Goodbye to the user. + * Returns a Farewell message for the user. + * + * @return String with the Farewell message. */ public static String goodbye() { return " Farewell!\n"; diff --git a/src/main/java/ren/task/Deadline.java b/src/main/java/ren/task/Deadline.java index 3668d982aa..ac1332b448 100644 --- a/src/main/java/ren/task/Deadline.java +++ b/src/main/java/ren/task/Deadline.java @@ -32,6 +32,7 @@ private Deadline(String description, TimeStamp dateTime) { * @return Deadline Task or null if data is corrupted. */ public static Deadline readData(String[] data) { + // Check if data is complete if (data.length < 4) { return null; } diff --git a/src/main/java/ren/task/Event.java b/src/main/java/ren/task/Event.java index 3cf865a26d..37f2773860 100644 --- a/src/main/java/ren/task/Event.java +++ b/src/main/java/ren/task/Event.java @@ -36,6 +36,7 @@ private Event(String description, TimeStamp start, TimeStamp end) { * @return Event or null if data is corrupted. */ public static Event readData(String[] data) { + // Check if data is complete if (data.length < 5) { return null; } diff --git a/src/main/java/ren/task/Todo.java b/src/main/java/ren/task/Todo.java index 11c1e8c105..1be84c0599 100644 --- a/src/main/java/ren/task/Todo.java +++ b/src/main/java/ren/task/Todo.java @@ -20,6 +20,7 @@ public Todo(String description) { * @return Todo Task or null if data is corrupted. */ public static Todo readData(String[] data) { + // Check if data is complete if (data.length < 3) { return null; } diff --git a/src/test/java/ren/RenExceptionTest.java b/src/test/java/ren/RenExceptionTest.java index 0d573515f6..11fbe0ab48 100644 --- a/src/test/java/ren/RenExceptionTest.java +++ b/src/test/java/ren/RenExceptionTest.java @@ -8,11 +8,11 @@ public class RenExceptionTest { @Test public void toString_message_success() { String message = "Test"; - assertEquals(" ☹ Apologies! Test\n", new RenException(message).toString()); + assertEquals(" >_< Apologies! Test\n", new RenException(message).toString()); } @Test public void toString_empty_success() { - assertEquals(" ☹ Apologies! \n", new RenException("").toString()); + assertEquals(" >_< Apologies! \n", new RenException("").toString()); } } From 176828a075c4e43a666b77f500d56c1c609494bb Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 21 Aug 2022 00:53:55 +0800 Subject: [PATCH 19/31] Java Standards: Fixed test codes Fixed test codes to comply with Java Standards. --- src/test/java/ren/ParserTest.java | 40 ++++++++++++------------ src/test/java/ren/RenExceptionTest.java | 4 +-- src/test/java/ren/TaskListStub.java | 6 ++++ src/test/java/ren/TimeStampTest.java | 8 ++--- src/test/java/ren/task/DeadlineTest.java | 5 +-- src/test/java/ren/task/EventTest.java | 5 +-- src/test/java/ren/task/TodoTest.java | 4 +-- 7 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/test/java/ren/ParserTest.java b/src/test/java/ren/ParserTest.java index 85d4da1a95..34a2263ac9 100644 --- a/src/test/java/ren/ParserTest.java +++ b/src/test/java/ren/ParserTest.java @@ -1,15 +1,15 @@ package ren; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; +import org.junit.jupiter.api.Test; + public class ParserTest { private final TaskList stub = new TaskListStub(); @Test - public void parseCommand_bye_success () { + public void parseCommand_bye_success() { try { assertEquals(" Farewell!\n", Parser.parseCommand("bye", stub)); } catch (RenException e) { @@ -18,7 +18,7 @@ public void parseCommand_bye_success () { } @Test - public void parseCommand_todo_success () { + public void parseCommand_todo_success() { try { assertEquals("", Parser.parseCommand("todo test", stub)); } catch (RenException e) { @@ -27,7 +27,7 @@ public void parseCommand_todo_success () { } @Test - public void parseCommand_todo_exceptionThrown () { + public void parseCommand_todo_exceptionThrown() { try { Parser.parseCommand("todo", stub); fail(); @@ -37,7 +37,7 @@ public void parseCommand_todo_exceptionThrown () { } @Test - public void parseCommand_deadline_success () { + public void parseCommand_deadline_success() { try { assertEquals("", Parser.parseCommand("deadline test /by test", stub)); } catch (RenException e) { @@ -46,7 +46,7 @@ public void parseCommand_deadline_success () { } @Test - public void parseCommand_deadline_exceptionThrown () { + public void parseCommand_deadline_exceptionThrown() { try { Parser.parseCommand("deadline", stub); fail(); @@ -56,7 +56,7 @@ public void parseCommand_deadline_exceptionThrown () { } @Test - public void parseCommand_deadline2_exceptionThrown () { + public void parseCommand_deadline2_exceptionThrown() { try { Parser.parseCommand("deadline test", stub); fail(); @@ -66,7 +66,7 @@ public void parseCommand_deadline2_exceptionThrown () { } @Test - public void parseCommand_event_success () { + public void parseCommand_event_success() { try { assertEquals("", Parser.parseCommand("event test /at test", stub)); } catch (RenException e) { @@ -75,7 +75,7 @@ public void parseCommand_event_success () { } @Test - public void parseCommand_event_exceptionThrown () { + public void parseCommand_event_exceptionThrown() { try { Parser.parseCommand("event", stub); fail(); @@ -85,7 +85,7 @@ public void parseCommand_event_exceptionThrown () { } @Test - public void parseCommand_event2_exceptionThrown () { + public void parseCommand_event2_exceptionThrown() { try { Parser.parseCommand("event test", stub); fail(); @@ -95,7 +95,7 @@ public void parseCommand_event2_exceptionThrown () { } @Test - public void parseCommand_delete_success () { + public void parseCommand_delete_success() { try { assertEquals("", Parser.parseCommand("delete 2", stub)); } catch (RenException e) { @@ -104,7 +104,7 @@ public void parseCommand_delete_success () { } @Test - public void parseCommand_delete_exceptionThrown () { + public void parseCommand_delete_exceptionThrown() { try { Parser.parseCommand("delete one", stub); fail(); @@ -114,7 +114,7 @@ public void parseCommand_delete_exceptionThrown () { } @Test - public void parseCommand_mark_success () { + public void parseCommand_mark_success() { try { assertEquals("", Parser.parseCommand("mark 2", stub)); } catch (RenException e) { @@ -123,7 +123,7 @@ public void parseCommand_mark_success () { } @Test - public void parseCommand_mark_exceptionThrown () { + public void parseCommand_mark_exceptionThrown() { try { Parser.parseCommand("unmark one", stub); fail(); @@ -133,7 +133,7 @@ public void parseCommand_mark_exceptionThrown () { } @Test - public void parseCommand_unmark_success () { + public void parseCommand_unmark_success() { try { assertEquals("", Parser.parseCommand("unmark 2", stub)); } catch (RenException e) { @@ -142,7 +142,7 @@ public void parseCommand_unmark_success () { } @Test - public void parseCommand_unmark_exceptionThrown () { + public void parseCommand_unmark_exceptionThrown() { try { Parser.parseCommand("unmark one", stub); fail(); @@ -152,7 +152,7 @@ public void parseCommand_unmark_exceptionThrown () { } @Test - public void parseCommand_list_success () { + public void parseCommand_list_success() { try { assertEquals("", Parser.parseCommand("list", stub)); } catch (RenException e) { @@ -161,7 +161,7 @@ public void parseCommand_list_success () { } @Test - public void parseCommand_empty_success () { + public void parseCommand_empty_success() { try { assertEquals("", Parser.parseCommand("empty", stub)); } catch (RenException e) { @@ -170,7 +170,7 @@ public void parseCommand_empty_success () { } @Test - public void parseCommand_blah_exceptionThrown () { + public void parseCommand_blah_exceptionThrown() { try { Parser.parseCommand("blah", stub); fail(); diff --git a/src/test/java/ren/RenExceptionTest.java b/src/test/java/ren/RenExceptionTest.java index 0d573515f6..4a3a9648a2 100644 --- a/src/test/java/ren/RenExceptionTest.java +++ b/src/test/java/ren/RenExceptionTest.java @@ -1,9 +1,9 @@ package ren; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + public class RenExceptionTest { @Test public void toString_message_success() { diff --git a/src/test/java/ren/TaskListStub.java b/src/test/java/ren/TaskListStub.java index 6e4c43fa03..6a07198af9 100644 --- a/src/test/java/ren/TaskListStub.java +++ b/src/test/java/ren/TaskListStub.java @@ -1,6 +1,12 @@ package ren; +/** + * Stub for TaskList. + */ public class TaskListStub extends TaskList { + /** + * Constructor for a TaskListStub. + */ public TaskListStub() { super(new Storage("data/list_test.txt")); } diff --git a/src/test/java/ren/TimeStampTest.java b/src/test/java/ren/TimeStampTest.java index 4d368b2a0d..b5ca26cf55 100644 --- a/src/test/java/ren/TimeStampTest.java +++ b/src/test/java/ren/TimeStampTest.java @@ -1,10 +1,10 @@ package ren; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; +import org.junit.jupiter.api.Test; + public class TimeStampTest { @Test public void of_dateTime_success() { @@ -28,7 +28,7 @@ public void of_invalidDateTime_exceptionThrown() { @Test public void fromFile_dateTime_success() { - TimeStamp test = TimeStamp.fromFile("Sat, 20 August 2022 10:04 PM"); - assertEquals(" Sat, 20 August 2022 10:04 PM", test.toString()); + TimeStamp test = TimeStamp.fromFile("Sat, 20 August 2022 10:04 PM"); + assertEquals(" Sat, 20 August 2022 10:04 PM", test.toString()); } } diff --git a/src/test/java/ren/task/DeadlineTest.java b/src/test/java/ren/task/DeadlineTest.java index 785c790628..a71cd56b57 100644 --- a/src/test/java/ren/task/DeadlineTest.java +++ b/src/test/java/ren/task/DeadlineTest.java @@ -1,9 +1,10 @@ package ren.task; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; + +import org.junit.jupiter.api.Test; + import ren.RenException; public class DeadlineTest { diff --git a/src/test/java/ren/task/EventTest.java b/src/test/java/ren/task/EventTest.java index 098a3b3255..985f710603 100644 --- a/src/test/java/ren/task/EventTest.java +++ b/src/test/java/ren/task/EventTest.java @@ -1,9 +1,10 @@ package ren.task; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; + +import org.junit.jupiter.api.Test; + import ren.RenException; public class EventTest { diff --git a/src/test/java/ren/task/TodoTest.java b/src/test/java/ren/task/TodoTest.java index b494a97595..4f2ded8c15 100644 --- a/src/test/java/ren/task/TodoTest.java +++ b/src/test/java/ren/task/TodoTest.java @@ -1,9 +1,9 @@ package ren.task; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + public class TodoTest { @Test public void toString_description_success() { From c7fc8d211b5960060a71f481daf38dfc31e5aa53 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 21 Aug 2022 01:27:53 +0800 Subject: [PATCH 20/31] Add Find Feature Users are unable to easily find a task from a dense list of tasks. Users are discouraged from using Ren to track many tasks. Users can now search for tasks with keywords. --- src/main/java/ren/Parser.java | 6 ++++++ src/main/java/ren/TaskList.java | 22 ++++++++++++++++++++++ src/main/java/ren/task/Task.java | 10 ++++++++++ src/test/java/ren/ParserTest.java | 19 +++++++++++++++++++ src/test/java/ren/TaskListStub.java | 5 +++++ 5 files changed, 62 insertions(+) diff --git a/src/main/java/ren/Parser.java b/src/main/java/ren/Parser.java index 437a5bd230..e7cc204a06 100644 --- a/src/main/java/ren/Parser.java +++ b/src/main/java/ren/Parser.java @@ -83,6 +83,12 @@ public static String parseCommand(String cmd, TaskList tasks) throws RenExceptio } case "list": return tasks.listTasks(); + case "find": + if (hasSecondTerm) { + return tasks.findTasks(firstParse[1]); + } else { + throw new RenException("Please provide a search term."); + } case "empty": return tasks.emptyList(); default: diff --git a/src/main/java/ren/TaskList.java b/src/main/java/ren/TaskList.java index 0361b1a6a7..983a6435f4 100644 --- a/src/main/java/ren/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -116,6 +116,28 @@ public String listTasks() { } } + /** + * Searches TaskList to Tasks matching a search term. + * + * @param term The Search Term to match Tasks with. + * @return String containing the list of matching Tasks. + */ + public String findTasks(String term) { + if (tasks.size() == 0) { + return " Apologies! I have not found any matching tasks.\n"; + } else { + int index = 1; + StringBuilder result = new StringBuilder(" I have found these matching tasks:\n"); + for (Task taskToCheck : tasks) { + if (taskToCheck.isMatch(term)) { + result.append(" ").append(index).append(".").append(taskToCheck); + index++; + } + } + return index != 1 ? result.toString() : " Apologies! I have not found any matching tasks.\n"; + } + } + /** * Removes all Tasks from the TaskList. * diff --git a/src/main/java/ren/task/Task.java b/src/main/java/ren/task/Task.java index 679eac398c..a009ad54fd 100644 --- a/src/main/java/ren/task/Task.java +++ b/src/main/java/ren/task/Task.java @@ -36,4 +36,14 @@ public String setDone(boolean isDone) { ? " Great job! I will mark the task as completed.\n" + " " + this : " Understood. I will mark the task as uncompleted.\n" + " " + this; } + + /** + * Check if the description of this task contains a search term. + * + * @param term The Search Term. + * @return true if it contains the search term, false otherwise. + */ + public boolean isMatch(String term) { + return this.description.contains(term); + } } diff --git a/src/test/java/ren/ParserTest.java b/src/test/java/ren/ParserTest.java index 85d4da1a95..97de767ab6 100644 --- a/src/test/java/ren/ParserTest.java +++ b/src/test/java/ren/ParserTest.java @@ -160,6 +160,25 @@ public void parseCommand_list_success () { } } + @Test + public void parseCommand_find_success() { + try { + assertEquals("", Parser.parseCommand("find test", stub)); + } catch (RenException e) { + fail(); + } + } + + @Test + public void parseCommand_find_exceptionThrown() { + try { + Parser.parseCommand("find", stub); + fail(); + } catch (RenException e) { + assertEquals("Please provide a search term.", e.getMessage()); + } + } + @Test public void parseCommand_empty_success () { try { diff --git a/src/test/java/ren/TaskListStub.java b/src/test/java/ren/TaskListStub.java index 6e4c43fa03..7fc7446a20 100644 --- a/src/test/java/ren/TaskListStub.java +++ b/src/test/java/ren/TaskListStub.java @@ -25,6 +25,11 @@ public String listTasks() { return ""; } + @Override + public String findTasks(String term) { + return ""; + } + @Override public String emptyList() { return ""; From 443b11a785ba4b5405d45632e52c30efb6e16385 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Thu, 25 Aug 2022 21:48:47 +0800 Subject: [PATCH 21/31] Use CheckStyle 1 error caught in ParserTest. --- src/test/java/ren/ParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/ren/ParserTest.java b/src/test/java/ren/ParserTest.java index 8712a4c9ed..c7861bb31c 100644 --- a/src/test/java/ren/ParserTest.java +++ b/src/test/java/ren/ParserTest.java @@ -180,7 +180,7 @@ public void parseCommand_find_exceptionThrown() { } @Test - public void parseCommand_empty_success () { + public void parseCommand_empty_success() { try { assertEquals("", Parser.parseCommand("empty", stub)); } catch (RenException e) { From 3b647fc5f238e2883b65c229c0bec3fe893385d8 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Wed, 31 Aug 2022 19:44:51 +0800 Subject: [PATCH 22/31] Upgrade to GUI from Text UI Ren runs on a text ui. This is unlikely to be pleasing to users. Let's upgrade the ui to a GUI that resembles a chat app. This would make the program more pleasing to use. --- build.gradle | 14 ++++ src/main/java/ren/DialogBox.java | 89 ++++++++++++++++++++++++ src/main/java/ren/Launcher.java | 12 ++++ src/main/java/ren/Main.java | 33 +++++++++ src/main/java/ren/MainWindow.java | 72 +++++++++++++++++++ src/main/java/ren/Parser.java | 16 ++++- src/main/java/ren/Ren.java | 37 +++------- src/main/java/ren/Storage.java | 3 +- src/main/java/ren/TaskList.java | 2 +- src/main/java/ren/TimeStamp.java | 2 +- src/main/java/ren/Ui.java | 46 ------------ src/main/resources/images/ren.png | Bin 0 -> 437980 bytes src/main/resources/images/user.png | Bin 0 -> 30263 bytes src/main/resources/view/DialogBox.fxml | 19 +++++ src/main/resources/view/MainWindow.fxml | 44 ++++++++++++ src/main/resources/view/style.css | 23 ++++++ src/test/java/ren/ParserTest.java | 62 +++++++++++------ 17 files changed, 374 insertions(+), 100 deletions(-) create mode 100644 src/main/java/ren/DialogBox.java create mode 100644 src/main/java/ren/Launcher.java create mode 100644 src/main/java/ren/Main.java create mode 100644 src/main/java/ren/MainWindow.java delete mode 100644 src/main/java/ren/Ui.java create mode 100644 src/main/resources/images/ren.png create mode 100644 src/main/resources/images/user.png create mode 100644 src/main/resources/view/DialogBox.fxml create mode 100644 src/main/resources/view/MainWindow.fxml create mode 100644 src/main/resources/view/style.css diff --git a/build.gradle b/build.gradle index d0bdb0eb2f..827a6c7c6c 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,22 @@ repositories { } dependencies { + String javaFxVersion = '11' + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' } test { diff --git a/src/main/java/ren/DialogBox.java b/src/main/java/ren/DialogBox.java new file mode 100644 index 0000000000..b0e798a623 --- /dev/null +++ b/src/main/java/ren/DialogBox.java @@ -0,0 +1,89 @@ +package ren; + +import java.io.IOException; +import java.util.Collections; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.effect.Reflection; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; +import javafx.scene.shape.Rectangle; + +/** + * An example of a custom control using FXML. + * This control represents a dialog box consisting of an ImageView to represent the speaker's face and a label + * containing text from the speaker. + */ +public class DialogBox extends HBox { + @FXML + private Label dialog; + @FXML + private ImageView displayPicture; + + /** + * Constructor for a DialogBox. + * + * @param text The text of the DialogBox. + * @param img The image of the DialogBox. + */ + private DialogBox(String text, Image img) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(MainWindow.class.getResource("/view/DialogBox.fxml")); + fxmlLoader.setController(this); + fxmlLoader.setRoot(this); + fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + } + + dialog.setText(text); + displayPicture.setImage(img); + + Rectangle rect = new Rectangle(99, 99); + rect.setArcHeight(30); + rect.setArcWidth(30); + rect.setEffect(new Reflection()); + displayPicture.setClip(rect); + } + + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + Collections.reverse(tmp); + getChildren().setAll(tmp); + setAlignment(Pos.TOP_LEFT); + } + + /** + * Factory method for a User DialogBox. + * + * @param text String containing command from User. + * @param img Image representing User. + * @return DialogBox. + */ + public static DialogBox getUserDialog(String text, Image img) { + return new DialogBox(text, img); + } + + /** + * Factory method for a Ren DialogBox. + * + * @param text String containing message from Ren. + * @param img Image representing Ren. + * @return DialogBox. + */ + public static DialogBox getRenDialog(String text, Image img) { + var db = new DialogBox(text, img); + db.flip(); + return db; + } +} \ No newline at end of file diff --git a/src/main/java/ren/Launcher.java b/src/main/java/ren/Launcher.java new file mode 100644 index 0000000000..97deeb081e --- /dev/null +++ b/src/main/java/ren/Launcher.java @@ -0,0 +1,12 @@ +package ren; + +import javafx.application.Application; + +/** + * A launcher class to workaround classpath issues. + */ +public class Launcher { + public static void main(String[] args) { + Application.launch(Main.class, args); + } +} diff --git a/src/main/java/ren/Main.java b/src/main/java/ren/Main.java new file mode 100644 index 0000000000..a390286774 --- /dev/null +++ b/src/main/java/ren/Main.java @@ -0,0 +1,33 @@ +package ren; + +import java.io.IOException; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +/** + * A GUI for Duke using FXML. + */ +public class Main extends Application { + /** The Ren bot for this instance of the program. */ + private final Ren ren = new Ren(); + + @Override + public void start(Stage stage) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("/view/MainWindow.fxml")); + AnchorPane ap = fxmlLoader.load(); + Scene scene = new Scene(ap); + stage.setScene(scene); + fxmlLoader.getController().setRen(ren); + stage.setResizable(false); + stage.setTitle("Ren"); + stage.show(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/ren/MainWindow.java b/src/main/java/ren/MainWindow.java new file mode 100644 index 0000000000..60bece74b7 --- /dev/null +++ b/src/main/java/ren/MainWindow.java @@ -0,0 +1,72 @@ +package ren; + +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; +/** + * Controller for MainWindow. Provides the layout for the other controls. + */ +public class MainWindow extends AnchorPane { + @FXML + private ScrollPane scrollPane; + @FXML + private VBox dialogContainer; + @FXML + private TextField userInput; + @FXML + private Button sendButton; + + private Ren ren; + + private final Image userImage = new Image(this.getClass().getResourceAsStream("/images/user.png")); + private final Image renImage = new Image(this.getClass().getResourceAsStream("/images/ren.png")); + + /** + * Initializes the GUI. Greets the user. + */ + @FXML + public void initialize() { + String greetings = " Greetings! My name is Ren ^_^\n How may I be of service today?\n"; + scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); + dialogContainer.getChildren().addAll( + DialogBox.getRenDialog(greetings, renImage) + ); + } + + /** + * Setter method for ren. + * + * @param ren Instance of Ren. + */ + public void setRen(Ren ren) { + this.ren = ren; + } + + /** + * Creates two dialog boxes, one echoing user input and the other containing Ren's reply and then appends them to + * the dialog container. Clears the user input after processing. Exits the program if bye command entered. + */ + @FXML + private void handleUserInput() { + String input = userInput.getText().trim(); + String response; + try { + response = ren.interpret(input); + } catch (RenException e) { + response = e.toString(); + } + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(input, userImage), + DialogBox.getRenDialog(response, renImage) + ); + userInput.clear(); + if (input.equals("bye")) { + Platform.exit(); + } + } +} diff --git a/src/main/java/ren/Parser.java b/src/main/java/ren/Parser.java index 86380a4f4c..d7b9394fb8 100644 --- a/src/main/java/ren/Parser.java +++ b/src/main/java/ren/Parser.java @@ -4,22 +4,32 @@ * Parser interprets user commands and executes them. */ public class Parser { + private final TaskList tasks; + + /** + * Constructor for Parser. + * + * @param tasks The TaskList to execute commands on. + */ + public Parser(TaskList tasks) { + this.tasks = tasks; + } + /** * Interprets user commands and executes them. * * @param cmd Command to execute. - * @param tasks TaskList to execute commands on. * @return String containing a message for the user. * @throws RenException If command is invalid. */ - public static String parseCommand(String cmd, TaskList tasks) throws RenException { + public String parseCommand(String cmd) throws RenException { String[] firstParse = cmd.split(" ", 2); String firstTerm = firstParse[0]; boolean hasSecondTerm = firstParse.length > 1; switch (firstTerm) { case "bye": - return Ui.goodbye(); + return " Farewell!\n"; case "todo": if (hasSecondTerm) { return tasks.addTask(Ren.TaskType.TODO, firstParse[1], ""); diff --git a/src/main/java/ren/Ren.java b/src/main/java/ren/Ren.java index 290e7b0dc1..3bc7d17c32 100644 --- a/src/main/java/ren/Ren.java +++ b/src/main/java/ren/Ren.java @@ -4,41 +4,26 @@ * Ren is a Task Manager program that helps a user keep track of and manage their tasks. */ public class Ren { - /** Stores and manages the list of tasks added by the user. */ - private final TaskList tasks; - - /** Manages the interaction between user and Ren. */ - private final Ui ui = new Ui(); + /** Parser helps the Ren bot to interpret commands from the user. */ + private final Parser parser; /** * Constructor for a Ren bot. */ public Ren() { - tasks = new TaskList(new Storage("data/list.txt")); - } - - /** - * Runs the Ren program until the user exits with the 'bye' command. - */ - public void run() { - ui.greet(); - String cmd = ""; - while (!cmd.equals("bye")) { - cmd = ui.readCommand(); - - try { - ui.speak(Parser.parseCommand(cmd, this.tasks)); - } catch (RenException e) { - ui.speak(e.toString()); - } - } + TaskList tasks = new TaskList(new Storage("data/list.txt")); + parser = new Parser(tasks); } /** - * Driver method for Ren. + * Interprets commands from the user. + * + * @param input The command from the user. + * @return String containing message from Ren after attempting to execute the command. + * @throws RenException If the execution failed. */ - public static void main(String[] args) { - new Ren().run(); + public String interpret(String input) throws RenException { + return parser.parseCommand(input); } /** diff --git a/src/main/java/ren/Storage.java b/src/main/java/ren/Storage.java index 342a476821..5938d9873d 100644 --- a/src/main/java/ren/Storage.java +++ b/src/main/java/ren/Storage.java @@ -138,8 +138,9 @@ public ArrayList load() { for (int i = 0; i < this.counter; i++) { // Split the task information into individual terms String[] data = dataArray.get(i).split("\\|"); + String taskType = data[0]; Task newTask = null; - switch (data[0]) { + switch (taskType) { case "T": newTask = Todo.readData(data); break; diff --git a/src/main/java/ren/TaskList.java b/src/main/java/ren/TaskList.java index 60178c005c..9cb4fc2a08 100644 --- a/src/main/java/ren/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -116,7 +116,7 @@ public String listTasks() { } /** - * Searches TaskList to Tasks matching a search term. + * Searches TaskList for Tasks matching a search term. * * @param term The Search Term to match Tasks with. * @return String containing the list of matching Tasks. diff --git a/src/main/java/ren/TimeStamp.java b/src/main/java/ren/TimeStamp.java index 10b42082cd..9a4a419482 100644 --- a/src/main/java/ren/TimeStamp.java +++ b/src/main/java/ren/TimeStamp.java @@ -15,7 +15,7 @@ private TimeStamp(LocalDateTime timestamp) { } /** - * Factory method for TimeStamps + * Factory method for TimeStamps. * * @param dateTime Date and Time information in the format of (dd/MM/yyyy-HH:mm). * @return TimeStamp. diff --git a/src/main/java/ren/Ui.java b/src/main/java/ren/Ui.java deleted file mode 100644 index 2b23a0b55c..0000000000 --- a/src/main/java/ren/Ui.java +++ /dev/null @@ -1,46 +0,0 @@ -package ren; - -import java.util.Scanner; - -/** - * Ui handles all interactions with the user. - */ -public class Ui { - private final Scanner scanner = new Scanner(System.in); - - /** - * Prints a message with message borders. - * - * @param message Message to print. - */ - public void speak(String message) { - System.out.println("=======================================================================================\n"); - System.out.println(message); - System.out.println("======================================================================================="); - } - - /** - * Greets the user. - */ - public void greet() { - speak(" Greetings! My name is Ren ^_^\n How may I be of service today?\n"); - } - - /** - * Returns a Farewell message for the user. - * - * @return String with the Farewell message. - */ - public static String goodbye() { - return " Farewell!\n"; - } - - /** - * Reads a command from the user. - * - * @return String with the command. - */ - public String readCommand() { - return scanner.nextLine().trim(); - } -} diff --git a/src/main/resources/images/ren.png b/src/main/resources/images/ren.png new file mode 100644 index 0000000000000000000000000000000000000000..1ffcc4df1335cc90c4aac2431252464c02ef7ad6 GIT binary patch literal 437980 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

3Cz_#n_ZcjSh}6B8k&#_OGnxM{O2bc6=>J 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�b;wMPaH|^7dljHOduT)9N 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�P^&4 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%0DR>b4438Z5DSDSKF-kFRPd@Ru%6Qt=*K>C3 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 OzReg0)8PND{{IK__r*B? literal 0 HcmV?d00001 diff --git a/src/main/resources/view/DialogBox.fxml b/src/main/resources/view/DialogBox.fxml new file mode 100644 index 0000000000..babfb938ac --- /dev/null +++ b/src/main/resources/view/DialogBox.fxml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml new file mode 100644 index 0000000000..c058f2c766 --- /dev/null +++ b/src/main/resources/view/MainWindow.fxml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/style.css b/src/main/resources/view/style.css new file mode 100644 index 0000000000..f3297709cf --- /dev/null +++ b/src/main/resources/view/style.css @@ -0,0 +1,23 @@ +.root { + -fx-background-color: #708090; +} + +.scroll-pane { + -fx-background-color: #708090; +} + +.scroll-pane .corner { + -fx-background-color: #708090; +} + +.scroll-pane .scroll-bar:vertical { + -fx-background-color: #708090; +} + +.scroll-pane .scroll-bar:horizontal { + -fx-background-color: #708090; +} + +.label .text { + -fx-fill: #000000; +} \ No newline at end of file diff --git a/src/test/java/ren/ParserTest.java b/src/test/java/ren/ParserTest.java index c7861bb31c..2f3d279127 100644 --- a/src/test/java/ren/ParserTest.java +++ b/src/test/java/ren/ParserTest.java @@ -6,12 +6,11 @@ import org.junit.jupiter.api.Test; public class ParserTest { - private final TaskList stub = new TaskListStub(); - @Test public void parseCommand_bye_success() { try { - assertEquals(" Farewell!\n", Parser.parseCommand("bye", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals(" Farewell!\n", parser.parseCommand("bye")); } catch (RenException e) { fail(); } @@ -20,7 +19,8 @@ public void parseCommand_bye_success() { @Test public void parseCommand_todo_success() { try { - assertEquals("", Parser.parseCommand("todo test", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("todo test")); } catch (RenException e) { fail(); } @@ -29,7 +29,8 @@ public void parseCommand_todo_success() { @Test public void parseCommand_todo_exceptionThrown() { try { - Parser.parseCommand("todo", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("todo"); fail(); } catch (RenException e) { assertEquals("Please provide a description for the todo.", e.getMessage()); @@ -39,7 +40,8 @@ public void parseCommand_todo_exceptionThrown() { @Test public void parseCommand_deadline_success() { try { - assertEquals("", Parser.parseCommand("deadline test /by test", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("deadline test /by test")); } catch (RenException e) { fail(); } @@ -48,7 +50,8 @@ public void parseCommand_deadline_success() { @Test public void parseCommand_deadline_exceptionThrown() { try { - Parser.parseCommand("deadline", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("deadline"); fail(); } catch (RenException e) { assertEquals("Please provide a description for the deadline.", e.getMessage()); @@ -58,7 +61,8 @@ public void parseCommand_deadline_exceptionThrown() { @Test public void parseCommand_deadline2_exceptionThrown() { try { - Parser.parseCommand("deadline test", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("deadline test"); fail(); } catch (RenException e) { assertEquals("Please provide a date/time for the deadline.", e.getMessage()); @@ -68,7 +72,8 @@ public void parseCommand_deadline2_exceptionThrown() { @Test public void parseCommand_event_success() { try { - assertEquals("", Parser.parseCommand("event test /at test", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("event test /at test")); } catch (RenException e) { fail(); } @@ -77,7 +82,8 @@ public void parseCommand_event_success() { @Test public void parseCommand_event_exceptionThrown() { try { - Parser.parseCommand("event", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("event"); fail(); } catch (RenException e) { assertEquals("Please provide a description for the event.", e.getMessage()); @@ -87,7 +93,8 @@ public void parseCommand_event_exceptionThrown() { @Test public void parseCommand_event2_exceptionThrown() { try { - Parser.parseCommand("event test", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("event test"); fail(); } catch (RenException e) { assertEquals("Please provide a date/time for the event.", e.getMessage()); @@ -97,7 +104,8 @@ public void parseCommand_event2_exceptionThrown() { @Test public void parseCommand_delete_success() { try { - assertEquals("", Parser.parseCommand("delete 2", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("delete 2")); } catch (RenException e) { fail(); } @@ -106,7 +114,8 @@ public void parseCommand_delete_success() { @Test public void parseCommand_delete_exceptionThrown() { try { - Parser.parseCommand("delete one", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("delete one"); fail(); } catch (RenException e) { assertEquals("Please indicate the task no. in digits.", e.getMessage()); @@ -116,7 +125,8 @@ public void parseCommand_delete_exceptionThrown() { @Test public void parseCommand_mark_success() { try { - assertEquals("", Parser.parseCommand("mark 2", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("mark 2")); } catch (RenException e) { fail(); } @@ -125,7 +135,8 @@ public void parseCommand_mark_success() { @Test public void parseCommand_mark_exceptionThrown() { try { - Parser.parseCommand("unmark one", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("unmark one"); fail(); } catch (RenException e) { assertEquals("Please indicate the task no. in digits.", e.getMessage()); @@ -135,7 +146,8 @@ public void parseCommand_mark_exceptionThrown() { @Test public void parseCommand_unmark_success() { try { - assertEquals("", Parser.parseCommand("unmark 2", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("unmark 2")); } catch (RenException e) { fail(); } @@ -144,7 +156,8 @@ public void parseCommand_unmark_success() { @Test public void parseCommand_unmark_exceptionThrown() { try { - Parser.parseCommand("unmark one", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("unmark one"); fail(); } catch (RenException e) { assertEquals("Please indicate the task no. in digits.", e.getMessage()); @@ -154,7 +167,8 @@ public void parseCommand_unmark_exceptionThrown() { @Test public void parseCommand_list_success() { try { - assertEquals("", Parser.parseCommand("list", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("list")); } catch (RenException e) { fail(); } @@ -163,7 +177,8 @@ public void parseCommand_list_success() { @Test public void parseCommand_find_success() { try { - assertEquals("", Parser.parseCommand("find test", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("find test")); } catch (RenException e) { fail(); } @@ -172,7 +187,8 @@ public void parseCommand_find_success() { @Test public void parseCommand_find_exceptionThrown() { try { - Parser.parseCommand("find", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("find"); fail(); } catch (RenException e) { assertEquals("Please provide a search term.", e.getMessage()); @@ -182,7 +198,8 @@ public void parseCommand_find_exceptionThrown() { @Test public void parseCommand_empty_success() { try { - assertEquals("", Parser.parseCommand("empty", stub)); + Parser parser = new Parser(new TaskListStub()); + assertEquals("", parser.parseCommand("empty")); } catch (RenException e) { fail(); } @@ -191,7 +208,8 @@ public void parseCommand_empty_success() { @Test public void parseCommand_blah_exceptionThrown() { try { - Parser.parseCommand("blah", stub); + Parser parser = new Parser(new TaskListStub()); + parser.parseCommand("blah"); fail(); } catch (RenException e) { assertEquals("Please enter a supported command.", e.getMessage()); From 730da76976d2c66ff9a0e0396ffad6aa72f9bcd3 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 4 Sep 2022 01:05:08 +0800 Subject: [PATCH 23/31] Add and enable Assertions Currently, important assumptions are checked using if statements or not checked at all. This is dangerous as it is not guaranteed that the assumptions will hold. Additionally, there is a risk that some assumptions might be forgotten about. Now, all important assumptions are checked using Assertions. Assertions allow assumptions to be clearly marked out from other code. --- build.gradle | 3 ++- src/main/java/ren/MainWindow.java | 13 +++++++++++-- src/main/java/ren/Storage.java | 6 +++--- src/main/java/ren/TaskList.java | 6 ++++-- src/main/java/ren/task/Deadline.java | 5 ++--- src/main/java/ren/task/Event.java | 5 ++--- src/main/java/ren/task/Todo.java | 5 ++--- 7 files changed, 26 insertions(+), 17 deletions(-) diff --git a/build.gradle b/build.gradle index 827a6c7c6c..5a3c3737f4 100644 --- a/build.gradle +++ b/build.gradle @@ -43,7 +43,7 @@ test { } application { - mainClassName = "ren.Ren" + mainClassName = "ren.Launcher" } checkstyle { @@ -57,4 +57,5 @@ shadowJar { run{ standardInput = System.in + enableAssertions = true } diff --git a/src/main/java/ren/MainWindow.java b/src/main/java/ren/MainWindow.java index 60bece74b7..69c99e0422 100644 --- a/src/main/java/ren/MainWindow.java +++ b/src/main/java/ren/MainWindow.java @@ -1,5 +1,6 @@ package ren; +import java.io.InputStream; import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -23,14 +24,22 @@ public class MainWindow extends AnchorPane { private Ren ren; - private final Image userImage = new Image(this.getClass().getResourceAsStream("/images/user.png")); - private final Image renImage = new Image(this.getClass().getResourceAsStream("/images/ren.png")); + private Image userImage; + private Image renImage; /** * Initializes the GUI. Greets the user. */ @FXML public void initialize() { + InputStream userImageLoader = this.getClass().getResourceAsStream("/images/user.png"); + InputStream renImageLoader = this.getClass().getResourceAsStream("/images/ren.png"); + assert userImageLoader != null : "userImage in MainWindow should not be null"; + assert renImageLoader != null : "renImage in MainWindow should not be null"; + + userImage = new Image(userImageLoader); + renImage = new Image(renImageLoader); + String greetings = " Greetings! My name is Ren ^_^\n How may I be of service today?\n"; scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); dialogContainer.getChildren().addAll( diff --git a/src/main/java/ren/Storage.java b/src/main/java/ren/Storage.java index 5938d9873d..590d24546b 100644 --- a/src/main/java/ren/Storage.java +++ b/src/main/java/ren/Storage.java @@ -152,9 +152,9 @@ public ArrayList load() { break; default: } - if (newTask != null) { - tasks.add(newTask); - } + assert newTask != null : "newTask in load in Storage should not be null"; + + tasks.add(newTask); } return tasks; } diff --git a/src/main/java/ren/TaskList.java b/src/main/java/ren/TaskList.java index 9cb4fc2a08..fa351c4d62 100644 --- a/src/main/java/ren/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -50,6 +50,8 @@ public String addTask(Ren.TaskType type, String task, String dateTime) throws Re break; default: } + assert newTask != null : "newTask in addTask in TaskList should not be null"; + tasks.add(newTask); storage.addTask(newTask); return " Understood. I have added the following task:\n" @@ -109,7 +111,7 @@ public String listTasks() { } else { StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); for (int i = 0; i < tasks.size(); i++) { - result.append(" ").append(i + 1).append(".").append(tasks.get(i).toString()); + result.append(" ").append(i + 1).append(". ").append(tasks.get(i).toString()); } return result.toString(); } @@ -129,7 +131,7 @@ public String findTasks(String term) { StringBuilder result = new StringBuilder(" I have found these matching tasks:\n"); for (Task taskToCheck : tasks) { if (taskToCheck.isMatch(term)) { - result.append(" ").append(index).append(".").append(taskToCheck); + result.append(" ").append(index).append(". ").append(taskToCheck); index++; } } diff --git a/src/main/java/ren/task/Deadline.java b/src/main/java/ren/task/Deadline.java index ac1332b448..4ac12edc16 100644 --- a/src/main/java/ren/task/Deadline.java +++ b/src/main/java/ren/task/Deadline.java @@ -33,9 +33,8 @@ private Deadline(String description, TimeStamp dateTime) { */ public static Deadline readData(String[] data) { // Check if data is complete - if (data.length < 4) { - return null; - } + assert data.length == 4 : "data[] in readData in Deadline should be of size 4"; + Deadline newDeadline = new Deadline(data[2], TimeStamp.fromFile(data[3])); if (data[1].equals("X")) { newDeadline.setDone(true); diff --git a/src/main/java/ren/task/Event.java b/src/main/java/ren/task/Event.java index 37f2773860..9b45a2f369 100644 --- a/src/main/java/ren/task/Event.java +++ b/src/main/java/ren/task/Event.java @@ -37,9 +37,8 @@ private Event(String description, TimeStamp start, TimeStamp end) { */ public static Event readData(String[] data) { // Check if data is complete - if (data.length < 5) { - return null; - } + assert data.length == 5 : "data[] in readData in Event should be of size 5"; + Event newEvent = new Event(data[2], TimeStamp.fromFile(data[3]), TimeStamp.fromFile(data[4])); if (data[1].equals("X")) { newEvent.setDone(true); diff --git a/src/main/java/ren/task/Todo.java b/src/main/java/ren/task/Todo.java index 1be84c0599..3b358a53aa 100644 --- a/src/main/java/ren/task/Todo.java +++ b/src/main/java/ren/task/Todo.java @@ -21,9 +21,8 @@ public Todo(String description) { */ public static Todo readData(String[] data) { // Check if data is complete - if (data.length < 3) { - return null; - } + assert data.length == 3 : "data[] in readData in Todo should be of size 3"; + Todo newTodo = new Todo(data[2]); if (data[1].equals("X")) { newTodo.setDone(true); From 5b3b597380257898cf73cc5deb163d7a5f0b1a31 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 4 Sep 2022 02:05:16 +0800 Subject: [PATCH 24/31] Improve Code Quality Currently, the code does not strictly follow the newly introduced Code Quality guidelines. This indicates areas of improvements in the code readability. Now, after combing through the code with the new guidelines, several changes have been made to improve code readability. --- src/main/java/ren/Ren.java | 3 ++- src/main/java/ren/TaskList.java | 35 ++++++++++++++++---------------- src/main/java/ren/TimeStamp.java | 9 +++++--- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/main/java/ren/Ren.java b/src/main/java/ren/Ren.java index 3bc7d17c32..00b54a17e2 100644 --- a/src/main/java/ren/Ren.java +++ b/src/main/java/ren/Ren.java @@ -11,7 +11,8 @@ public class Ren { * Constructor for a Ren bot. */ public Ren() { - TaskList tasks = new TaskList(new Storage("data/list.txt")); + Storage storage = new Storage("data/list.txt"); + TaskList tasks = new TaskList(storage); parser = new Parser(tasks); } diff --git a/src/main/java/ren/TaskList.java b/src/main/java/ren/TaskList.java index 9cb4fc2a08..be84fb18af 100644 --- a/src/main/java/ren/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -88,8 +88,9 @@ public String deleteTask(int taskNum) throws RenException { */ public String updateTask(boolean status, int taskNum) throws RenException { if (taskNum <= tasks.size() && taskNum > 0) { - String message = tasks.get(taskNum - 1).setDone(status); - storage.updateTask(tasks.get(taskNum - 1), taskNum - 1); + Task selectedTask = tasks.get(taskNum - 1); + String message = selectedTask.setDone(status); + storage.updateTask(selectedTask, taskNum - 1); return message; } else if (tasks.size() == 0) { throw new RenException("You have no tasks to mark or unmark."); @@ -106,13 +107,13 @@ public String updateTask(boolean status, int taskNum) throws RenException { public String listTasks() { if (tasks.size() == 0) { return " You have not added any tasks!\n"; - } else { - StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); - for (int i = 0; i < tasks.size(); i++) { - result.append(" ").append(i + 1).append(".").append(tasks.get(i).toString()); - } - return result.toString(); } + + StringBuilder result = new StringBuilder(" Here are your current tasks:\n"); + for (int i = 0; i < tasks.size(); i++) { + result.append(" ").append(i + 1).append(".").append(tasks.get(i).toString()); + } + return result.toString(); } /** @@ -124,17 +125,17 @@ public String listTasks() { public String findTasks(String term) { if (tasks.size() == 0) { return " Apologies! I have not found any matching tasks.\n"; - } else { - int index = 1; - StringBuilder result = new StringBuilder(" I have found these matching tasks:\n"); - for (Task taskToCheck : tasks) { - if (taskToCheck.isMatch(term)) { - result.append(" ").append(index).append(".").append(taskToCheck); - index++; - } + } + + int index = 1; + StringBuilder result = new StringBuilder(" I have found these matching tasks:\n"); + for (Task taskToCheck : tasks) { + if (taskToCheck.isMatch(term)) { + result.append(" ").append(index).append(".").append(taskToCheck); + index++; } - return index != 1 ? result.toString() : " Apologies! I have not found any matching tasks.\n"; } + return index != 1 ? result.toString() : " Apologies! I have not found any matching tasks.\n"; } /** diff --git a/src/main/java/ren/TimeStamp.java b/src/main/java/ren/TimeStamp.java index 9a4a419482..7309eb8dcf 100644 --- a/src/main/java/ren/TimeStamp.java +++ b/src/main/java/ren/TimeStamp.java @@ -25,7 +25,8 @@ public static TimeStamp of(String dateTime) throws RenException { // format of the date and time information in the input DateTimeFormatter format = DateTimeFormatter.ofPattern("d/M/yyyy-H:mm"); try { - return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); + LocalDateTime timestamp = LocalDateTime.parse(dateTime.strip(), format); + return new TimeStamp(timestamp); } catch (DateTimeParseException e) { throw new RenException("Please indicate date and time properly. (20/8/2022-15:37)"); } @@ -41,7 +42,8 @@ public static TimeStamp fromFile(String dateTime) { // format of the date and time information in the input DateTimeFormatter format = DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a"); try { - return new TimeStamp(LocalDateTime.parse(dateTime.strip(), format)); + LocalDateTime timestamp = LocalDateTime.parse(dateTime.strip(), format); + return new TimeStamp(timestamp); } catch (DateTimeParseException e) { System.out.println("fromFile failed"); return new TimeStamp(LocalDateTime.now()); @@ -55,6 +57,7 @@ public static TimeStamp fromFile(String dateTime) { */ @Override public String toString() { - return " " + timestamp.format(DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a")); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, d MMMM yyyy h:mm a"); + return " " + timestamp.format(formatter); } } From 1ee5cba674b6d1e66d2f4674ab0327c9d27a0ec6 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 4 Sep 2022 11:44:34 +0800 Subject: [PATCH 25/31] Set up Java CI using Github Actions --- workflows/gradle.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 workflows/gradle.yml diff --git a/workflows/gradle.yml b/workflows/gradle.yml new file mode 100644 index 0000000000..133b0e7f2b --- /dev/null +++ b/workflows/gradle.yml @@ -0,0 +1,34 @@ +name: Java CI + +on: [push, pull_request] + +jobs: + build: + strategy: + matrix: + platform: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.platform }} + + steps: + - name: Set up repository + uses: actions/checkout@master + + - name: Set up repository + uses: actions/checkout@master + with: + ref: master + + - name: Merge to master + run: git checkout --progress --force ${{ github.sha }} + + - name: Validate Gradle Wrapper + uses: gradle/wrapper-validation-action@v1 + + - name: Setup JDK 11 + uses: actions/setup-java@v1 + with: + java-version: '11' + java-package: jdk+fx + + - name: Build and check with Gradle + run: ./gradlew check \ No newline at end of file From f2757f6b0f0b9e10e5ea523fc0a13cc650fb561a Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 4 Sep 2022 11:47:46 +0800 Subject: [PATCH 26/31] Fix for Java CI implementation --- {workflows => .workflows}/gradle.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {workflows => .workflows}/gradle.yml (100%) diff --git a/workflows/gradle.yml b/.workflows/gradle.yml similarity index 100% rename from workflows/gradle.yml rename to .workflows/gradle.yml From 232a23505b1f7c01d75427aaf68b33d6d000fe11 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 4 Sep 2022 11:50:54 +0800 Subject: [PATCH 27/31] Fix 2 for Java CI implementation --- {.workflows => .github/workflows}/gradle.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {.workflows => .github/workflows}/gradle.yml (100%) diff --git a/.workflows/gradle.yml b/.github/workflows/gradle.yml similarity index 100% rename from .workflows/gradle.yml rename to .github/workflows/gradle.yml From 1ec902d3a8b5aded460f0210ff069191037ae3da Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sun, 4 Sep 2022 17:41:52 +0800 Subject: [PATCH 28/31] Add Sort Feature Currently, the list of tasks is not sorted and left in the order the user added them. This hampers the user's ability to organise their tasks by certain characteristics. Now that the sort feature is implemented, the user can sort tasks by: * their type (Todo > Deadline > Event) * their status (Unmarked Tasks > Marked Tasks) * their description (sorted lexicographically while ignoring case) * their date (sorted chronologically while Todo's are sorted last) --- src/main/java/ren/DialogBox.java | 3 +- src/main/java/ren/MainWindow.java | 4 +++ src/main/java/ren/Parser.java | 17 +++++++++++ src/main/java/ren/TaskList.java | 42 ++++++++++++++++++++++++++++ src/main/java/ren/TimeStamp.java | 10 +++++++ src/main/java/ren/task/Deadline.java | 34 ++++++++++++++++++++++ src/main/java/ren/task/Event.java | 34 ++++++++++++++++++++++ src/main/java/ren/task/Task.java | 42 ++++++++++++++++++++++++++++ src/main/java/ren/task/Todo.java | 22 +++++++++++++++ 9 files changed, 207 insertions(+), 1 deletion(-) diff --git a/src/main/java/ren/DialogBox.java b/src/main/java/ren/DialogBox.java index b0e798a623..09c32cd08b 100644 --- a/src/main/java/ren/DialogBox.java +++ b/src/main/java/ren/DialogBox.java @@ -24,6 +24,7 @@ public class DialogBox extends HBox { @FXML private Label dialog; + @FXML private ImageView displayPicture; @@ -86,4 +87,4 @@ public static DialogBox getRenDialog(String text, Image img) { db.flip(); return db; } -} \ No newline at end of file +} diff --git a/src/main/java/ren/MainWindow.java b/src/main/java/ren/MainWindow.java index 5a2be4565d..668fdd4f43 100644 --- a/src/main/java/ren/MainWindow.java +++ b/src/main/java/ren/MainWindow.java @@ -23,9 +23,13 @@ public class MainWindow extends AnchorPane { @FXML private Button sendButton; + /** The instance of Ren for this program. */ private Ren ren; + /** Profile picture for the user. */ private Image userImage; + + /** Profile picture for Ren. */ private Image renImage; /** diff --git a/src/main/java/ren/Parser.java b/src/main/java/ren/Parser.java index d7b9394fb8..7fab1a33f1 100644 --- a/src/main/java/ren/Parser.java +++ b/src/main/java/ren/Parser.java @@ -107,6 +107,23 @@ public String parseCommand(String cmd) throws RenException { } case "empty": return tasks.emptyList(); + case "sort": + if (!hasSecondTerm) { + throw new RenException("Please specify how you want the list to be sorted."); + } + String secondTerm = firstParse[1].split(" ", 2)[0]; + switch (secondTerm) { + case "type": + return tasks.sortTasks(TaskList.SortType.TYPE); + case "status": + return tasks.sortTasks(TaskList.SortType.STATUS); + case "description": + return tasks.sortTasks(TaskList.SortType.DESCRIPTION); + case "date": + return tasks.sortTasks(TaskList.SortType.DATE); + default: + throw new RenException("Please specify how you want the list to be sorted."); + } default: throw new RenException("Please enter a supported command."); } diff --git a/src/main/java/ren/TaskList.java b/src/main/java/ren/TaskList.java index cf59b92022..dab8ff154f 100644 --- a/src/main/java/ren/TaskList.java +++ b/src/main/java/ren/TaskList.java @@ -118,6 +118,38 @@ public String listTasks() { return result.toString(); } + /** + * Sorts the tasks according to sortType. + * For type, the order is Todo, Deadline, Event. + * For status, unmarked tasks are before marked tasks. + * For description, tasks are sorted lexicographically, ignoring case differences. + * For date, Todo are sorted last while Deadline and Event are sorted chronologically. + * + * @param sortType The order to sort the tasks by. + * @return String containing the sorted list of tasks. + */ + public String sortTasks(SortType sortType) { + switch (sortType) { + case TYPE: + tasks.sort(Task::compareType); + break; + case STATUS: + tasks.sort(Task::compareStatus); + break; + case DESCRIPTION: + tasks.sort(Task::compareDescription); + break; + case DATE: + tasks.sort(Task::compareDate); + break; + default: + break; + } + storage.emptyList(); + tasks.forEach(storage::addTask); + return " I have finished sorting your list of tasks!\n\n" + listTasks(); + } + /** * Searches TaskList for Tasks matching a search term. * @@ -150,4 +182,14 @@ public String emptyList() { storage.emptyList(); return " Understood. I have emptied your list of tasks."; } + + /** + * The types of sorting supported by Ren. + */ + enum SortType { + TYPE, + STATUS, + DESCRIPTION, + DATE + } } diff --git a/src/main/java/ren/TimeStamp.java b/src/main/java/ren/TimeStamp.java index 7309eb8dcf..706e8616da 100644 --- a/src/main/java/ren/TimeStamp.java +++ b/src/main/java/ren/TimeStamp.java @@ -50,6 +50,16 @@ public static TimeStamp fromFile(String dateTime) { } } + /** + * Compares this TimeStamp to another TimeStamp. + * + * @param other The other TimeStamp to compare with. + * @return -1 if this TimeStamp is earlier. 1 if the other TimeStamp is earlier. 0 if both are the same. + */ + public int compareTo(TimeStamp other) { + return this.timestamp.compareTo(other.timestamp); + } + /** * Returns String Representation of a TimeStamp. * diff --git a/src/main/java/ren/task/Deadline.java b/src/main/java/ren/task/Deadline.java index 4ac12edc16..360cac361c 100644 --- a/src/main/java/ren/task/Deadline.java +++ b/src/main/java/ren/task/Deadline.java @@ -53,6 +53,40 @@ public String writeData() { return "D|" + symbol + "|" + this.description + "|" + this.dateTime.toString(); } + /** + * Compares this Deadline to another Task by their type of task. + * + * @param other The task to compare with. + * @return -1 if other is an Event, 1 if the other task is a Todo, 0 if the other task is a Deadline. + */ + @Override + public int compareType(Task other) { + if (other instanceof Todo) { + return 1; + } else if (other instanceof Deadline) { + return 0; + } + return -1; + } + + /** + * Compares this Deadline to another Task by their date. + * + * @param other The task to compare with. + * @return -1 if this task should be sorted first, 1 if the other task should be sorted first, 0 otherwise. + */ + @Override + public int compareDate(Task other) { + if (other instanceof Todo) { + return -1; + } else if (other instanceof Deadline) { + return this.dateTime.compareTo(((Deadline) other).dateTime); + } else if (other instanceof Event) { + return this.dateTime.compareTo(((Event) other).start); + } + return 0; + } + /** * Returns the string representation of this Deadline Task. * diff --git a/src/main/java/ren/task/Event.java b/src/main/java/ren/task/Event.java index 9b45a2f369..029cfcfdd5 100644 --- a/src/main/java/ren/task/Event.java +++ b/src/main/java/ren/task/Event.java @@ -57,6 +57,40 @@ public String writeData() { return "E|" + symbol + "|" + this.description + "|" + this.start + "|" + this.end; } + /** + * Compares this Event to another Task by their type of task. + * + * @param other The task to compare with. + * @return 1 if the other task is not an Event, 0 if the other task is an Event. + */ + @Override + public int compareType(Task other) { + if (other instanceof Todo) { + return 1; + } else if (other instanceof Deadline) { + return 1; + } + return 0; + } + + /** + * Compares this Event to another Task by their date. + * + * @param other The task to compare with. + * @return -1 if this task should be sorted first, 1 if the other task should be sorted first, 0 otherwise. + */ + @Override + public int compareDate(Task other) { + if (other instanceof Todo) { + return -1; + } else if (other instanceof Deadline) { + return this.start.compareTo(((Deadline) other).dateTime); + } else if (other instanceof Event) { + return this.start.compareTo(((Event) other).start); + } + return 0; + } + /** * Returns the string representation of this Event. * diff --git a/src/main/java/ren/task/Task.java b/src/main/java/ren/task/Task.java index a009ad54fd..4cf02727cd 100644 --- a/src/main/java/ren/task/Task.java +++ b/src/main/java/ren/task/Task.java @@ -24,6 +24,48 @@ public Task(String description) { */ public abstract String writeData(); + /** + * Compares this Task to another Task by their type of task. + * + * @param other The task to compare with. + * @return -1 if this task should be sorted first, 1 if the other task should be sorted first, 0 otherwise. + */ + public abstract int compareType(Task other); + + /** + * Compares this Task to another Task by their date. + * + * @param other The task to compare with. + * @return -1 if this task should be sorted first, 1 if the other task should be sorted first, 0 otherwise. + */ + public abstract int compareDate(Task other); + + /** + * Compares this Task to another Task by their description. + * + * @param other The task to compare with. + * @return -1 if this task should be sorted first, 1 if the other task should be sorted first, 0 otherwise. + */ + public int compareDescription(Task other) { + return this.description.compareToIgnoreCase(other.description); + } + + /** + * Compares this Task to another Task by their status. + * + * @param other The task to compare with. + * @return -1 if this task should be sorted first, 1 if the other task should be sorted first, 0 otherwise. + */ + public int compareStatus(Task other) { + if (!this.isDone && other.isDone) { + return -1; + } else if (this.isDone && !other.isDone) { + return 1; + } else { + return 0; + } + } + /** * Sets the completion status of this task. * diff --git a/src/main/java/ren/task/Todo.java b/src/main/java/ren/task/Todo.java index 3b358a53aa..304b89e2f9 100644 --- a/src/main/java/ren/task/Todo.java +++ b/src/main/java/ren/task/Todo.java @@ -41,6 +41,28 @@ public String writeData() { return "T|" + symbol + "|" + this.description; } + /** + * Compares this Todo to another Task by their type of task. + * + * @param other The task to compare with. + * @return -1 if the other task is not a Todo, 0 otherwise. + */ + @Override + public int compareType(Task other) { + return (other instanceof Todo) ? 0 : -1; + } + + /** + * Compares this Todo to another Task by their date. + * + * @param other The task to compare with. + * @return 1 if the other task is not a Todo, 0 otherwise. + */ + @Override + public int compareDate(Task other) { + return (other instanceof Todo) ? 0 : 1; + } + /** * Returns the string representation of this Todo Task. * From ebd82baf7cb04ff67b0fb9db46511726841d2ce6 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Fri, 9 Sep 2022 22:03:54 +0800 Subject: [PATCH 29/31] Set up Ren Website Product Screenshot included. User Guide v0.1 included. --- docs/README.md | 233 ++++++++++++++++++++++++++++++++++++++++++++++--- docs/Ui.png | Bin 0 -> 120351 bytes 2 files changed, 221 insertions(+), 12 deletions(-) create mode 100644 docs/Ui.png diff --git a/docs/README.md b/docs/README.md index 8077118ebe..c0804086e9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,29 +1,238 @@ # User Guide -## Features +Ren is a **desktop task manager app optimized for use via a Command Line Interface** (CLI) +while still having the benefits of a Graphical User Interface (GUI). If you can type fast, +Ren can manage your tasks faster than traditional GUI apps. -### Feature-ABC +* Table of Contents + {:toc} -Description of the feature. +-------------------------------------------------------------------------------------------------------------------- -### Feature-XYZ +## Quick start -Description of the feature. +1. Ensure you have Java `11` or above installed in your Computer. +2. Download the latest `ren.jar` from [here](https://github.com/Eugene-Ong-W-X/ip/releases). +3. Copy the file to the folder you want to use as the _home folder_ for your Ren Task Manager. +4. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds.
+ ![Ui](/docs/Ui.png) +5. Type a command at the bottom and press Enter or click Send to execute it. +6. Refer to the [Usage](#usage) below for details of each command. + +-------------------------------------------------------------------------------------------------------------------- + +## Features + +### Manage Tasks + +3 different types of Tasks. Operations supported +* add task +* delete task / empty list +* mark/unmark task + +### Organise Tasks + +View your list of Tasks. Sort the list. Find a task from the list. + +### Saved Data + +Your TaskList data is saved in the hard disk automatically after +any command that modifies the data. Have no fear of losing your data! +Have no worries about saving your data manually! + +-------------------------------------------------------------------------------------------------------------------- ## Usage -### `Keyword` - Describe action +

+ +### Add a Todo Task - `todo` + +Adds a Task, that needs to be done, to the TaskList. + +Format: `todo DESCRIPTION` + +Example Usage + +>`todo Watch recorded lecture videos` + +Example Outcome +``` + Understood. I have added the following task: + [T][ ] Watch recorded lecture videos + You now have a total of 1 task(s). +``` + +### Add a Deadline Task - `deadline` + +Adds a Task, that needs to be done by a certain date or time, to the TaskList. + +Format: `deadline DESCRIPTION /by DD/MM/YY-HH:MM` +* Time must be in 24hr format (i.e. 23:59 instead of 11:59 PM) + +Example Usage + +>`deadline Submit Essay /by 11/9/2022-23:59` + +Example Outcome +``` + Understood. I have added the following task: + [D][ ] Submit Essay (by: Sun, 11 September 2022 11:59 PM) + You now have a total of 1 task(s). +``` + +### Add an Event Task - `event` + +Adds an Event, that takes place between certain dates or time, to the TaskList. + +Format: `event DESCRIPTION /at DD/MM/YY-HH:MM ~ DD/MM/YY-HH:MM` +* Time must be in 24hr format (i.e. 23:59 instead of 11:59 PM) + +Example Usage + +>`event Recess Week /at 17/9/2022-00:00 ~ 25/9/2022-23:59` + +Example Outcome +``` + Understood. I have added the following task: + [E][ ] Recess Week (at: Sat, 17 September 2022 12:00 AM - Sun, 25 September 2022 11:59 PM) + You now have a total of 1 task(s). +``` + +### Mark a Task - `mark` + +Sets a Task, in the TaskList, as completed. + +Format: `mark INDEX` +* Use index of task from the list of tasks + +Example Usage + +>`mark 1` + +Example Outcome +``` + Great job! I will mark the task as completed. + [T][X] Watch recorded lecture videos +``` -Describe the action and its outcome. +### Unmark a Task - `unmark` -Example of usage: +Sets a Task, in the TaskList, to uncompleted. -`keyword (optional arguments)` +Format: `unmark INDEX` +* Use index of task from the list of tasks -Expected outcome: +Example Usage -Description of the outcome. +>`unmark 1` +Example Outcome ``` -expected output + Understood. I will mark the task as uncompleted. + [T][ ] Watch recorded lecture videos ``` + +### Lists all Tasks - `list` + +Displays all Tasks in the TaskList. + +Format: `list` + +Example Usage + +>`list` + +Example Outcome +``` + Here are your current tasks: + 1. [T][ ] Watch recorded lecture videos + 2. [T][X] Submit Essay +``` + +### Sort Tasks - `sort` + +Sorts all Tasks in the TaskList. + +Format: `sort ATTRIBUTE` +* Attribute 1. `type` Sorts in the order of Todo > Deadline > Event +* Attribute 2. `status` Sorts uncompleted Tasks before completed Tasks +* Attribute 3. `description` Sorts by description, in lexicographical order +* Attribute 4. `date` Sorts by date, in chronological order (Todos are last) + +Example Usage + +>`sort status` + +Example Outcome +``` + I have finished sorting your list of tasks! + + Here are your current tasks: + 1. [T][ ] Watch recorded lecture videos + 2. [T][X] Submit Essay +``` + +### Find a Task - `find` + +Finds a Task from the TaskList. + +Format: `find SEARCH_TERM` + +Example Usage + +>`find video` + +Example Outcome +``` + I have found these matching tasks: + 1. [T][ ] Watch recorded lecture videos +``` + +### Delete a Task - `delete` + +Deletes a Task from the TaskList. + +Format: `delete INDEX` +* Use index of task from the list of tasks + +Example Usage + +>`delete 1` + +Example Outcome +``` + Understood. I have removed the following task: + [T][ ] Watch recorded lecture videos + You have a total of 1 task(s) left. +``` + +### Empty the TaskList - `empty` + +Deletes all Tasks from the TaskList. + +Format: `empty` + +Example Usage + +>`empty` + +Example Outcome +``` + Understood. I have emptied your list of tasks. +``` + +### Exit Ren - `bye` + +Exits and closes the Ren program. + +Format: `bye` \ No newline at end of file diff --git a/docs/Ui.png b/docs/Ui.png new file mode 100644 index 0000000000000000000000000000000000000000..639e1e1da2c2b487850fbb4b46036998793b01fd GIT binary patch literal 120351 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

k4SU#}pkitD0uzqLcmXW zgRg0CU_*iR#qwhL(K@bnvHxkNmcb{f0N$_}XdT^Ybw=iG<*l0bo=zl#7?fA>_$etptpb^*tLzCxJe5x7 z^cH3E0M)BpbrSo77X%IFiVZx9Wq3dAlUY!A6k1664cQILWUqueP8f%>6F)jnVL8aN zCN2!-eCZ4;2L^+fpd-)+Nie1^L2QWBCeOJCKp^f+%ug@DmB)wb@H>NXXh3RG{Byl9 zLCU1y>TQ71ZqN-iQn&*LN}F4Na9)j{T93?FQAno(+FVg(khr3gU3d!$i6|FyLOL!t zmMTU+M-<%uBkI_&NX0w^P8ggau`)4eEL{-faIqMCK8`{ed9MJGVMY={tDxOCBZhu^ zkvNb1=msh`T{HU<&aSaZ#5WSvN$#D|f@D9VP}^ZxoOZvvVn62{&>}_?kuh1F^qNG) z7Uwzo7O{DizI@{Jl+>$P=)gd~S=%2Mju#s;aP~HJqphkMx**iFrq@O`YspC}yJat@ zPhz1A)fH&BE)#>sg#-kne5TJZX%*;7m#%Mc=G2aa_B7`PWMZ7q<52VN2#bmj6&>TN zt_LJ03;(Qj3#;a?vN-lwr-z*miH+(5B35l0M!nKwVgbVG?l&MBbVc&FRaSP+x5c(- z^UPI3jjLac$i|iTPoF0pID%w8@6FbFsbGaH-$OuQc>{rFjWL}i8AKJjD_|~Hf zdSsMU*fr3b-@)0#%Ro_B5h*7kKhhtZ4!1EK?gs%~pW4y{j2&)R3{OSsD_I*T0<%L? zQ?XgJOBnN>6|68Y3Ao!>R##mX6y{6QeS?t6;XBNv|6wTvIWDbl@wutL4GCT4H& zGiKpYp@d9Xv(Po4SEqPZ8Hgz``nTW@p+Gl0rYz^_Pm(&~MWakZoIhmkXZtsM zz{s}lJc=@)c4h`4!u=V#{3PQZqBcH-@MX&IT>b_rJn`1_*tVQ4Y}lx{1WYIA5-PR) z@KqyeDYG9F4jzqq@B`*X!&wcU@wv^i8y&b~P&|UymDFXOgR4Kby*pwBi;C=K_s7#i z8v39rYd+()xkS9p?$a5s7mdh>2|5(m8S2UgfrT6|PL+x<&uTy|8~XA#MM zc^98r4ELTUf)zzViYW~t%p_l-$+lwNKy!A<8#2>1hI^%T)Pe2ZZRfCf6D5&ht6FxM zqZlkcN^E|p^ioIX6>KDm$37)8NEEyCrxf*lA@+h?VbTayq>vB662iAW>?o|;QAf-e z#gHqU#4_0V{@uti7@Azi2bVRZ{l--Mh0#(Ie%3nL1v5cQylA>DVjC$?W*#Nene3*9 zlc^{vzU;K)e9fzx%j!H`SKf4tDytNvvp7KEBkIc zb)FPldBSK^uvF1v0smYut;5uwUVW@BaDH#T)3nVzehLxxvIWI{n$;$vHS!Yxx@M!g zc0|U{f5MV;1Nhl!=Y$IcYCIp~sxO7@7!fJDVghIueYFLk;OXw)^toI^q71v7*p@NO zY2D*i7(zgE+Q#s6w$2(&uB)p1yZ_uzLk~%Vw@W?So$Cw1Rjplvo#16QOolFz>6k1@Ls`csotO!HjJ!3jwPE? z>ZV55MF(b#Q@{ds5{F4@wNO+T0C5^%BUlv|XT=itLEVp+$7=ZADt{vw5b-p+1O@LY zwv;wZ-y?!3WdLpgLgN?B-Z-8rR6&Vf6Q|ZqkxUVl0WsUKbUk)+@b&(U!;U^nyg~-5 zVNqHYXsH!0uhsc%+E`Zm2H^39FZ7s}{pLCyG(Y=QBiEABtveSc3|dLHu61dte=#a^ z=FSuQEYXUoe>6X^K{hgvf4_B2=uH2u92bC;z?J)0>N%+z`;Ud``G_Rh#8kFD0P2Jd zb>u5Z6}xd@(%ZR&4YHPs6FS!bz#{CDk(2ii0UmW~SqsBSo z_O=x57A>+rqB)jZ3*MBt-e+L|S&B79wX$8oCU(u`{!V&mNQ5 zH&NdWNDe3r{GO>aM5hbp=wl}@O_7&)J_}o|0+9_LQ!BeDWQ=18!7R9((Ch)p z?0&q1Tq#eAXs=bstqH4lJW#MRRHLsu8cL-(AYG~|^ojsBK^Q;$^{?IPfv)vXsLFi4 zRaqU}0&&4xsaqLa+iDd%=yci|nqM&6ZlR=D+`aA;!`xqG^p2d9v*O7V=IPa5b-@dP zx>D2bdLgV|xQ4R~s7TAI73H^6x7O8Al)q}6TjrsJz{~xOl|$ToGKAz>$H$Si+(C|y z@k?+@zN31@cW;>aj;AGg#q^I&+Dd=7{vLhAT>^SyD@E8F_v1DO?&2Lv2td0zF55OM znR2dE(r7Whofg)#QXS@^U|gQ_TZqJ0WYi2$%%q-8GxLymohk0aVep*`)_7sPRaVur zhqWit`W7}qIK1eFxr$B6KJ!AgEv@|rXJK*F5@xAAN7(FrP38_ujG?#f_5C6I* z!<9PVOF0Qq9eC}L9@@FCe6~x`8JvOnlA!nhD7wN z$&Q540%Y3S>K@YZ2)v8(gh9devt9nJe@cPMu%%vGA8ER~*Ba<~0)*6?pVyR7)8l+^ zr_H)^42kKe&=`T@h(acu^+(>17QpcK(+XZgrzQ8KpeVpjNe^>ST=`8^MRyfihmESK z)kUcQCL*wdkqO$6>e3ag-b;u9>~XrY`_BkG2dto=R$+N?<&Z)dH7j_sSbaLyw=%rd z@cUHaJ5)f+fZILr!u+p*Xw`Ym3^g4sPKDl4JyZh51b2qe`7M$mz=vX9D)L9NBqOfh z*fE0ZU@@WZmC|_cV7c-GUfB8XR#qeAa_hG~nM0rs#j`K7kfA|FfuZ#B&2tF zyNak+cDs-NUYb=*tBH4zRJ1ATzL*OH6~5OV z5pB`+>?chmNn9!}brwU@=|k!a4o6&Pf^hH!C2tnX1Yhs>MzU!eFYZK;GLwyJD?m@o0(tcYcZ&Kd<-ugu6G4>f}!g? z=c%+yX?*NO4ZhUNXBx55mURQTGDlaUB|o zVBkRjaP`>f3$R7`K!3(q`~D5^CoU{4R4Sn3t^2t+x(*dt1I89;t+FpqpNSEX%vseb zyLOP<_cfG2839>?YU(LK7%qanEGC|loq^M<)T_zUEa^|A9j2H+6<#TBEX7ou8ZSN4 zpcwTr@@#g7mU>8Wocy?YP1itjlE)pzDk%`s?x7tHT4OSNLp}y)On=|H&RA_%_Qd(& z&!FAFj!2kY!G#fjGn8$+F*_zXptf&RZbKJ#*cO30l2&W{(-g5VjXE$sA8BXuR{Q9N zjeo~!8Lxb@p_*XH;!W^pW`+5wADvLnr5hM7SQsiP{HF^(f^M}3>P_Q|%s=k#AhM+p z+nGSq-qbrCny%>R(ddcX`fWy^1eCv@n>s;VSz8R5;*r zkP)C1ovT@eiJvS4I>qF?2S~AeWt!Cn(+t)YljX*NX-wepof_JL!Sr`HsQv>!xKe$2 q$)bN=T8vUigKRX+xUB>exVc>vt^@7o3!j2eL_gl3J=#AXj{gBK#)FUm literal 0 HcmV?d00001 From 2683455c8e6867a366b46262a1f1a1e6662d1757 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X <97229754+Eugene-Ong-W-X@users.noreply.github.com> Date: Fri, 9 Sep 2022 22:15:17 +0800 Subject: [PATCH 30/31] Update README.md --- docs/README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index c0804086e9..38d2959619 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,9 +4,6 @@ Ren is a **desktop task manager app optimized for use via a Command Line Interfa while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Ren can manage your tasks faster than traditional GUI apps. -* Table of Contents - {:toc} - -------------------------------------------------------------------------------------------------------------------- ## Quick start @@ -46,7 +43,7 @@ Have no worries about saving your data manually!

-**:information_source: Notes about the command format:**
+**Notes about the command format:**
* Words in `UPPER_CASE` are the parameters to be supplied by the user.
@@ -235,4 +232,4 @@ Example Outcome Exits and closes the Ren program. -Format: `bye` \ No newline at end of file +Format: `bye` From faad80aeeb9275ebd143fa3ef8d1e6cb4d6c5529 Mon Sep 17 00:00:00 2001 From: Eugene-Ong-W-X Date: Sat, 10 Sep 2022 21:15:05 +0800 Subject: [PATCH 31/31] Fix Code Quality --- src/main/java/ren/MainWindow.java | 4 + src/main/java/ren/Parser.java | 198 +++++++++++++++++------------- src/main/java/ren/Storage.java | 4 +- src/main/java/ren/task/Task.java | 2 +- 4 files changed, 121 insertions(+), 87 deletions(-) diff --git a/src/main/java/ren/MainWindow.java b/src/main/java/ren/MainWindow.java index 668fdd4f43..853a4c24ed 100644 --- a/src/main/java/ren/MainWindow.java +++ b/src/main/java/ren/MainWindow.java @@ -37,7 +37,11 @@ public class MainWindow extends AnchorPane { */ @FXML public void initialize() { + // Credits for Image + // https://pixabay.com/vectors/blank-profile-picture-mystery-man-973460/ InputStream userImageLoader = this.getClass().getResourceAsStream("/images/user.png"); + // Credits for Image + // https://www.freepik.com/free-photo/robot-with-clipboard_958202.htm#query=robot&position=9&from_view=author InputStream renImageLoader = this.getClass().getResourceAsStream("/images/ren.png"); assert userImageLoader != null : "userImage in MainWindow should not be null"; assert renImageLoader != null : "renImage in MainWindow should not be null"; diff --git a/src/main/java/ren/Parser.java b/src/main/java/ren/Parser.java index 7fab1a33f1..cd729ff54e 100644 --- a/src/main/java/ren/Parser.java +++ b/src/main/java/ren/Parser.java @@ -24,108 +24,138 @@ public Parser(TaskList tasks) { */ public String parseCommand(String cmd) throws RenException { String[] firstParse = cmd.split(" ", 2); - String firstTerm = firstParse[0]; boolean hasSecondTerm = firstParse.length > 1; - - switch (firstTerm) { + switch (firstParse[0]) { case "bye": return " Farewell!\n"; case "todo": - if (hasSecondTerm) { - return tasks.addTask(Ren.TaskType.TODO, firstParse[1], ""); - } else { - throw new RenException("Please provide a description for the todo."); - } + return parseTodo(hasSecondTerm, firstParse); case "deadline": - if (hasSecondTerm) { - String[] secondParse = firstParse[1].split("/by", 2); - if (secondParse.length > 1) { - return tasks.addTask(Ren.TaskType.DEADLINE, secondParse[0], secondParse[1]); - } else { - throw new RenException("Please provide a date/time for the deadline."); - } - } else { - throw new RenException("Please provide a description for the deadline."); - } + return parseDeadline(hasSecondTerm, firstParse); case "event": - if (hasSecondTerm) { - String[] secondParse = firstParse[1].split("/at", 2); - if (secondParse.length > 1) { - return tasks.addTask(Ren.TaskType.EVENT, secondParse[0], secondParse[1]); - } else { - throw new RenException("Please provide a date/time for the event."); - } - } else { - throw new RenException("Please provide a description for the event."); - } + return parseEvent(hasSecondTerm, firstParse); case "delete": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - return tasks.deleteTask(Integer.parseInt(secondTerm)); - } catch (NumberFormatException e) { - // If the second term parsed isn't an integer - throw new RenException("Please indicate the task no. in digits."); - } catch (RenException f) { - // The user entered an invalid number - return f.toString(); - } + return parseDelete(hasSecondTerm, firstParse); case "mark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - return tasks.updateTask(true, Integer.parseInt(secondTerm)); - } catch (NumberFormatException e) { - // If the second term parsed isn't an integer - throw new RenException("Please indicate the task no. in digits."); - } catch (RenException f) { - // The user entered an invalid number - return f.toString(); - } + return parseMark(hasSecondTerm, firstParse); case "unmark": - try { - String secondTerm = hasSecondTerm - ? firstParse[1].split(" ", 2)[0] - : "0"; - return tasks.updateTask(false, Integer.parseInt(secondTerm)); - } catch (NumberFormatException e) { - // If the second term parsed isn't an integer - throw new RenException("Please indicate the task no. in digits."); - } catch (RenException f) { - // The user entered an invalid number - return f.toString(); - } + return parseUnmark(hasSecondTerm, firstParse); case "list": return tasks.listTasks(); case "find": - if (hasSecondTerm) { - return tasks.findTasks(firstParse[1]); - } else { - throw new RenException("Please provide a search term."); - } + return parseFind(hasSecondTerm, firstParse); case "empty": return tasks.emptyList(); case "sort": - if (!hasSecondTerm) { - throw new RenException("Please specify how you want the list to be sorted."); + return parseSort(hasSecondTerm, firstParse); + default: + throw new RenException("Please enter a supported command."); + } + } + + private String parseTodo(boolean hasSecondTerm, String[] firstParse) throws RenException { + if (hasSecondTerm) { + return tasks.addTask(Ren.TaskType.TODO, firstParse[1], ""); + } else { + throw new RenException("Please provide a description for the todo."); + } + } + + private String parseDeadline(boolean hasSecondTerm, String[] firstParse) throws RenException { + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/by", 2); + if (secondParse.length > 1) { + return tasks.addTask(Ren.TaskType.DEADLINE, secondParse[0], secondParse[1]); + } else { + throw new RenException("Please provide a date/time for the deadline."); } - String secondTerm = firstParse[1].split(" ", 2)[0]; - switch (secondTerm) { - case "type": - return tasks.sortTasks(TaskList.SortType.TYPE); - case "status": - return tasks.sortTasks(TaskList.SortType.STATUS); - case "description": - return tasks.sortTasks(TaskList.SortType.DESCRIPTION); - case "date": - return tasks.sortTasks(TaskList.SortType.DATE); - default: - throw new RenException("Please specify how you want the list to be sorted."); + } else { + throw new RenException("Please provide a description for the deadline."); + } + } + + private String parseEvent(boolean hasSecondTerm, String[] firstParse) throws RenException { + if (hasSecondTerm) { + String[] secondParse = firstParse[1].split("/at", 2); + if (secondParse.length > 1) { + return tasks.addTask(Ren.TaskType.EVENT, secondParse[0], secondParse[1]); + } else { + throw new RenException("Please provide a date/time for the event."); } + } else { + throw new RenException("Please provide a description for the event."); + } + } + + private String parseDelete(boolean hasSecondTerm, String[] firstParse) throws RenException { + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + return tasks.deleteTask(Integer.parseInt(secondTerm)); + } catch (NumberFormatException e) { + // If the second term parsed isn't an integer + throw new RenException("Please indicate the task no. in digits."); + } catch (RenException f) { + // The user entered an invalid number + return f.toString(); + } + } + + private String parseMark(boolean hasSecondTerm, String[] firstParse) throws RenException { + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + return tasks.updateTask(true, Integer.parseInt(secondTerm)); + } catch (NumberFormatException e) { + // If the second term parsed isn't an integer + throw new RenException("Please indicate the task no. in digits."); + } catch (RenException f) { + // The user entered an invalid number + return f.toString(); + } + } + + private String parseUnmark(boolean hasSecondTerm, String[] firstParse) throws RenException { + try { + String secondTerm = hasSecondTerm + ? firstParse[1].split(" ", 2)[0] + : "0"; + return tasks.updateTask(false, Integer.parseInt(secondTerm)); + } catch (NumberFormatException e) { + // If the second term parsed isn't an integer + throw new RenException("Please indicate the task no. in digits."); + } catch (RenException f) { + // The user entered an invalid number + return f.toString(); + } + } + + private String parseFind(boolean hasSecondTerm, String[] firstParse) throws RenException { + if (hasSecondTerm) { + return tasks.findTasks(firstParse[1]); + } else { + throw new RenException("Please provide a search term."); + } + } + + private String parseSort(boolean hasSecondTerm, String[] firstParse) throws RenException { + if (!hasSecondTerm) { + throw new RenException("Please specify how you want the list to be sorted."); + } + String secondTerm = firstParse[1].split(" ", 2)[0]; + switch (secondTerm) { + case "type": + return tasks.sortTasks(TaskList.SortType.TYPE); + case "status": + return tasks.sortTasks(TaskList.SortType.STATUS); + case "description": + return tasks.sortTasks(TaskList.SortType.DESCRIPTION); + case "date": + return tasks.sortTasks(TaskList.SortType.DATE); default: - throw new RenException("Please enter a supported command."); + throw new RenException("Please specify how you want the list to be sorted."); } } } diff --git a/src/main/java/ren/Storage.java b/src/main/java/ren/Storage.java index 590d24546b..6f85fee3c0 100644 --- a/src/main/java/ren/Storage.java +++ b/src/main/java/ren/Storage.java @@ -83,7 +83,7 @@ private void newFile() { } /** - * Overwrite the File with a new list of Tasks. + * Overwrites the File with a new list of Tasks. */ private void writeToFile() { // Disable writing to File if error occurred during creation of file or reading of file. @@ -105,7 +105,7 @@ private void writeToFile() { } /** - * Append a new Task's information to the File. + * Appends a new Task's information to the File. */ private void appendToFile() { // Disable writing to File if error occurred during creation of file or reading of file. diff --git a/src/main/java/ren/task/Task.java b/src/main/java/ren/task/Task.java index 4cf02727cd..672544e94f 100644 --- a/src/main/java/ren/task/Task.java +++ b/src/main/java/ren/task/Task.java @@ -80,7 +80,7 @@ public String setDone(boolean isDone) { } /** - * Check if the description of this task contains a search term. + * Checks if the description of this task contains a search term. * * @param term The Search Term. * @return true if it contains the search term, false otherwise.