From 68c58c12c1d631736a4b25500248a2956171496f Mon Sep 17 00:00:00 2001 From: damithc Date: Mon, 25 May 2020 00:58:18 +0800 Subject: [PATCH 01/26] 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 03523ec89e823ff5457b647df22a4e395641da7a Mon Sep 17 00:00:00 2001 From: lzq Date: Sat, 5 Aug 2023 15:24:02 +0800 Subject: [PATCH 02/26] Bump gradle and lib version --- build.gradle | 9 +- gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 281 ++++++++++++++--------- gradlew.bat | 195 ++++++++-------- 5 files changed, 273 insertions(+), 216 deletions(-) diff --git a/build.gradle b/build.gradle index 885198fcfa..a388517ae1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java' id 'application' - id 'com.github.johnrengelman.shadow' version '5.1.0' + id 'com.github.johnrengelman.shadow' version '7.1.2' } repositories { @@ -9,8 +9,8 @@ repositories { } dependencies { - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' - testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0' + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0' } test { @@ -28,12 +28,13 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClass.set("seedu.duke.Duke") } shadowJar { archiveBaseName = "duke" archiveClassifier = null + dependsOn("distZip", "distTar") } run{ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..033e24c4cdf41af1ab109bc7f253b2b887023340 100644 GIT binary patch delta 43723 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 delta 38942 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b7c8c5dbf5..66c01cfeba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d95..fcb6fca147 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,78 +17,110 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # 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 +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac 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"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # 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 - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | 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" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,87 +129,120 @@ 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. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + 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 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 +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac 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 +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # 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 +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # 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\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg 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" +# 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"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9cce..6689b85bee 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,103 +1,92 @@ -@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 +@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=. +@rem This is normally unused +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% equ 0 goto execute + +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 execute + +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 + +: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 %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 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! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 81a9c537afe8492675eb253968939364d65db091 Mon Sep 17 00:00:00 2001 From: aureliony <39163684+aureliony@users.noreply.github.com> Date: Tue, 16 Jul 2024 23:35:06 +0800 Subject: [PATCH 03/26] build.gradle: Prevent generating a second JAR file In build.gradle, the dependencies on distZip and/or distTar causes the shadowJar task to generate a second JAR file for which the mainClass.set("seedu.duke.Duke") does not take effect. Hence, this additional JAR file cannot be run. For this product, there is no need to generate a second JAR file to begin with. Let's remove this dependency from the build.gradle to prevent the shadowJar task from generating the extra JAR file. --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index a388517ae1..c361f9811e 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,6 @@ application { shadowJar { archiveBaseName = "duke" archiveClassifier = null - dependsOn("distZip", "distTar") } run{ From 902465329f4df077ef42477924cc3be29e549a24 Mon Sep 17 00:00:00 2001 From: ivanng Date: Mon, 8 Sep 2025 05:34:08 +0800 Subject: [PATCH 04/26] Progress until Level-8 --- data/tasks.txt | 6 ++++++ src/main/java | 1 + src/main/java/Duke.java | 10 ---------- 3 files changed, 7 insertions(+), 10 deletions(-) create mode 100644 data/tasks.txt create mode 160000 src/main/java delete mode 100644 src/main/java/Duke.java diff --git a/data/tasks.txt b/data/tasks.txt new file mode 100644 index 0000000000..6bfc338c74 --- /dev/null +++ b/data/tasks.txt @@ -0,0 +1,6 @@ +T | 1 | read book +T | 0 | return book +T | 0 | shit +T | 0 | read book +D | 0 | return book | 21/5/2025 1600 +D | 0 | return book | 20/5/2025 diff --git a/src/main/java b/src/main/java new file mode 160000 index 0000000000..a5e08bc5c3 --- /dev/null +++ b/src/main/java @@ -0,0 +1 @@ +Subproject commit a5e08bc5c3f3293e7d92c9c43a062746419fe262 diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java deleted file mode 100644 index 5d313334cc..0000000000 --- a/src/main/java/Duke.java +++ /dev/null @@ -1,10 +0,0 @@ -public class Duke { - public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - } -} From 2c049e932fde654c0fa8d712065f4e9c10529895 Mon Sep 17 00:00:00 2001 From: ivanng Date: Fri, 19 Sep 2025 21:40:28 +0800 Subject: [PATCH 05/26] Added packages --- data/tasks.txt | 5 ++++- src/main/java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/data/tasks.txt b/data/tasks.txt index 6bfc338c74..e898296a2b 100644 --- a/data/tasks.txt +++ b/data/tasks.txt @@ -1,6 +1,9 @@ T | 1 | read book T | 0 | return book T | 0 | shit -T | 0 | read book D | 0 | return book | 21/5/2025 1600 D | 0 | return book | 20/5/2025 +T | 0 | poo +T | 0 | read book +D | 0 | readbook | 9/9/2024 +T | 0 | read book diff --git a/src/main/java b/src/main/java index a5e08bc5c3..9e5f34b3d2 160000 --- a/src/main/java +++ b/src/main/java @@ -1 +1 @@ -Subproject commit a5e08bc5c3f3293e7d92c9c43a062746419fe262 +Subproject commit 9e5f34b3d25e0f9889560ed45571b1c5055acf4c From 8d0227251097b7f804a5d58f8d8757ce6b0c4f80 Mon Sep 17 00:00:00 2001 From: ivanng Date: Sat, 20 Sep 2025 00:39:25 +0800 Subject: [PATCH 06/26] Added JUnit tests and fix some issue -fix wrong directory tracking (src/main/java) and start tracking project root repo --- build.gradle | 4 +- src/main/java | 1 - src/main/java/faith/Faith.java | 58 ++++++++++++ .../java/faith/exception/FaithException.java | 10 ++ src/main/java/faith/io/Storage.java | 91 +++++++++++++++++++ src/main/java/faith/io/Ui.java | 37 ++++++++ src/main/java/faith/logic/Parser.java | 64 +++++++++++++ .../logic/command/AddDeadlineCommand.java | 25 +++++ .../faith/logic/command/AddEventCommand.java | 27 ++++++ .../faith/logic/command/AddTodoCommand.java | 24 +++++ .../java/faith/logic/command/Command.java | 16 ++++ .../faith/logic/command/DeleteCommand.java | 21 +++++ .../java/faith/logic/command/ExitCommand.java | 16 ++++ .../java/faith/logic/command/ListCommand.java | 16 ++++ .../java/faith/logic/command/MarkCommand.java | 23 +++++ .../faith/logic/command/UnmarkCommand.java | 22 +++++ src/main/java/faith/model/TaskList.java | 37 ++++++++ src/main/java/faith/model/task/Deadline.java | 63 +++++++++++++ src/main/java/faith/model/task/Event.java | 28 ++++++ src/main/java/faith/model/task/Task.java | 32 +++++++ src/main/java/faith/model/task/Todo.java | 18 ++++ src/test/java/faith/logic/ParserTest.java | 72 +++++++++++++++ .../java/faith/model/task/DeadlineTest.java | 34 +++++++ 23 files changed, 736 insertions(+), 3 deletions(-) delete mode 160000 src/main/java create mode 100644 src/main/java/faith/Faith.java create mode 100644 src/main/java/faith/exception/FaithException.java create mode 100644 src/main/java/faith/io/Storage.java create mode 100644 src/main/java/faith/io/Ui.java create mode 100644 src/main/java/faith/logic/Parser.java create mode 100644 src/main/java/faith/logic/command/AddDeadlineCommand.java create mode 100644 src/main/java/faith/logic/command/AddEventCommand.java create mode 100644 src/main/java/faith/logic/command/AddTodoCommand.java create mode 100644 src/main/java/faith/logic/command/Command.java create mode 100644 src/main/java/faith/logic/command/DeleteCommand.java create mode 100644 src/main/java/faith/logic/command/ExitCommand.java create mode 100644 src/main/java/faith/logic/command/ListCommand.java create mode 100644 src/main/java/faith/logic/command/MarkCommand.java create mode 100644 src/main/java/faith/logic/command/UnmarkCommand.java create mode 100644 src/main/java/faith/model/TaskList.java create mode 100644 src/main/java/faith/model/task/Deadline.java create mode 100644 src/main/java/faith/model/task/Event.java create mode 100644 src/main/java/faith/model/task/Task.java create mode 100644 src/main/java/faith/model/task/Todo.java create mode 100644 src/test/java/faith/logic/ParserTest.java create mode 100644 src/test/java/faith/model/task/DeadlineTest.java diff --git a/build.gradle b/build.gradle index c361f9811e..c8356e9f9a 100644 --- a/build.gradle +++ b/build.gradle @@ -28,11 +28,11 @@ test { } application { - mainClass.set("seedu.duke.Duke") + mainClass.set("faith.Faith") } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "faith" archiveClassifier = null } diff --git a/src/main/java b/src/main/java deleted file mode 160000 index 9e5f34b3d2..0000000000 --- a/src/main/java +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9e5f34b3d25e0f9889560ed45571b1c5055acf4c diff --git a/src/main/java/faith/Faith.java b/src/main/java/faith/Faith.java new file mode 100644 index 0000000000..89fd901de1 --- /dev/null +++ b/src/main/java/faith/Faith.java @@ -0,0 +1,58 @@ +package faith; + +import faith.exception.*; +import faith.io.Storage; +import faith.io.Ui; +import faith.logic.Parser; +import faith.logic.command.Command; +import faith.model.TaskList; + + +public class Faith { + private static final String FILE_PATH = "./data/tasks.txt"; + private Storage storage; + private TaskList tasks; + private Ui ui; + + public Faith(String filePath) { + this.ui = new Ui(); + this.storage = new Storage(filePath); + try { + tasks = new TaskList(storage.load()); + } catch (FaithException e) { + ui.showLoadingError(); + tasks = new TaskList(); + } + } + + public void run() { + ui.showWelcome(); + boolean isExit = false; + while (!isExit) { + try { + String fullCommand = ui.readCommand(); + ui.showLine(); // show the divider line ("_______") + Command c = Parser.parse(fullCommand); + c.execute(tasks, ui, storage); + isExit = c.isExit(); + } catch (FaithException e) { + ui.showError(e.getMessage()); + } finally { + ui.showLine(); + } + } + } + + public static void main (String[] args) { + new Faith("data/tasks.txt").run(); + } + + private void save() { + try { + storage.save(tasks); + } catch (FaithException e) { + ui.showError(" OOPS!!! There is an error saving tasks."); + } + } +} + diff --git a/src/main/java/faith/exception/FaithException.java b/src/main/java/faith/exception/FaithException.java new file mode 100644 index 0000000000..9797e31664 --- /dev/null +++ b/src/main/java/faith/exception/FaithException.java @@ -0,0 +1,10 @@ +package faith.exception; + +public class FaithException extends Exception { + public FaithException(String msg) { + super(msg); + } + public FaithException() { + super(); + } +} \ No newline at end of file diff --git a/src/main/java/faith/io/Storage.java b/src/main/java/faith/io/Storage.java new file mode 100644 index 0000000000..aa0be72bb3 --- /dev/null +++ b/src/main/java/faith/io/Storage.java @@ -0,0 +1,91 @@ +package faith.io; + +import faith.exception.FaithException; +import faith.logic.Parser; +import faith.model.TaskList; +import faith.model.task.*; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +public class Storage { + + private final String filePath; + + + public Storage(String filePath) { + this.filePath = filePath; + } + + public List load() throws FaithException { + + TaskList taskList = new TaskList(); + File file = new File(filePath); + + if (!file.exists()) { + return taskList.asList(); + } + + try (BufferedReader br = new BufferedReader(new FileReader(file))){ + String line; + while ((line = br.readLine()) != null) { + String[] parts = line.split("\\|"); + if (parts.length < 3) { + continue; + } + String taskType = parts[0].trim(); + String description = parts[2].trim(); + if (taskType.equals("T")) { + Task task = new Todo(description); + taskList.add(task); + if (parts[1].trim().equals("1")) { + task.markDone(); + } + } + if (taskType.equals("D")) { + if (parts.length < 4) { + continue; + } + Task task = new Deadline(description, parts[3].trim()); + taskList.add(task); + if (parts[1].trim().equals("1")) { + task.markDone(); + } + } + if (taskType.equals("E")) { + if (parts.length < 4) { + continue; + } + String[] timeParts = parts[3].trim().split("-"); + if (timeParts.length != 2) { + continue; + } + Task task = new Event(description, timeParts[0].trim(), timeParts[1].trim()); + taskList.add(task); + if (parts[1].trim().equals("1")) { + task.markDone(); + } + } + + } + } catch (IOException e) { + throw new FaithException(); + } + return taskList.asList(); + } + + public void save(TaskList tasks) throws FaithException { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) { + for (Task t : tasks.asList()) { + bw.write(t.saveToFileFormat()); + bw.newLine(); + } + } catch (IOException e) { + throw new FaithException(); + } + } +} \ No newline at end of file diff --git a/src/main/java/faith/io/Ui.java b/src/main/java/faith/io/Ui.java new file mode 100644 index 0000000000..1ea7d9c743 --- /dev/null +++ b/src/main/java/faith/io/Ui.java @@ -0,0 +1,37 @@ +package faith.io; + +import java.util.Scanner; + +public class Ui { + private final Scanner in = new Scanner(System.in); + + public void showWelcome() { + System.out.println(" ____________________________________________________________\n" + + " Hello! I'm Faith\n" + " What can I do for you?\n" + + " ____________________________________________________________"); + } + + public void showGoodbye() { + System.out.println(" Bye. Hope to see you again soon!"); + } + + public void showLine() { + System.out.println(" ____________________________________________________________"); + } + + public void show(String message) { + System.out.println(message); + } + + public void showError(String message) { + System.out.println(message); + } + + public void showLoadingError() { + System.out.println(" OOPS!!! I couldn't load your tasks. Starting fresh."); + } + + public String readCommand() { + return in.nextLine(); + } +} diff --git a/src/main/java/faith/logic/Parser.java b/src/main/java/faith/logic/Parser.java new file mode 100644 index 0000000000..6d647d874f --- /dev/null +++ b/src/main/java/faith/logic/Parser.java @@ -0,0 +1,64 @@ +package faith.logic; + +import faith.exception.FaithException; +import faith.logic.command.*; +import faith.model.TaskList; +import faith.model.task.Deadline; +import faith.model.task.Task; +import faith.model.task.Todo; + +public class Parser { + public static Command parse (String input) throws FaithException { + String s = input.trim(); + if (s.equals("bye")) return new ExitCommand(); + if (s.equals("list")) return new ListCommand(); + + if (s.startsWith("mark ")) { + int idx = parseIndex1Based(s.substring(5).trim()); + return new MarkCommand(idx); + } + if (s.startsWith("unmark ")) { + int idx = parseIndex1Based(s.substring(7).trim()); + return new UnmarkCommand(idx); + } + if (s.startsWith("delete ")) { + int idx = parseIndex1Based(s.substring(7).trim()); + return new DeleteCommand(idx); + } + if (s.startsWith("todo ")) { + String desc = s.substring(5).trim(); + if (desc.isEmpty()) throw new FaithException("The description of a todo cannot be empty."); + return new AddTodoCommand(desc); + } + if (s.startsWith("deadline ")) { + int i = s.indexOf(" /by "); + if (i < 0) throw new FaithException("Use: deadline /by "); + String desc = s.substring(9, i).trim(); + String by = s.substring(i + 5).trim(); + if (desc.isEmpty() || by.isEmpty()) throw new FaithException("Deadline needs both description and /by."); + return new AddDeadlineCommand(desc, by); + } + if (s.startsWith("event ")) { + int i = s.indexOf(" /from "); + int j = s.indexOf(" /to "); + if (i < 0) throw new FaithException("Use: event /from /to "); + String desc = s.substring(6, i).trim(); + String from = s.substring(i + 7).trim(); + String to = s.substring(j + 5).trim(); + if (desc.isEmpty() || from.isEmpty() || to.isEmpty()) throw new FaithException("Deadline needs description, /from and /to."); + return new AddEventCommand(desc, from, to); + } + + throw new FaithException("Sorry, I don't understand."); + } + + private static int parseIndex1Based(String token) throws FaithException { + try { + int oneBased = Integer.parseInt(token); + if (oneBased <= 0) throw new NumberFormatException(); + return oneBased; + } catch (NumberFormatException e) { + throw new FaithException("Index must be a positive integer."); + } + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/AddDeadlineCommand.java b/src/main/java/faith/logic/command/AddDeadlineCommand.java new file mode 100644 index 0000000000..312fcac768 --- /dev/null +++ b/src/main/java/faith/logic/command/AddDeadlineCommand.java @@ -0,0 +1,25 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Deadline; + +public class AddDeadlineCommand extends Command { + private final String desc; + private final String by; + public AddDeadlineCommand(String desc, String by) { + this.desc = desc; + this.by = by; + } + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { + Deadline t = new Deadline(desc, by); + tasks.add(t); + ui.show(" Got it. I've added this task:"); + ui.show(" " + t.toString()); + ui.show(" Now you have " + tasks.size() + " tasks in the list."); + storage.save(tasks); + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/AddEventCommand.java b/src/main/java/faith/logic/command/AddEventCommand.java new file mode 100644 index 0000000000..f34fe00513 --- /dev/null +++ b/src/main/java/faith/logic/command/AddEventCommand.java @@ -0,0 +1,27 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Event; + +public class AddEventCommand extends Command { + private final String desc; + private final String from; + private final String to; + public AddEventCommand(String desc, String from, String to) { + this.desc = desc; + this.from = from; + this.to = to; + } + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { + Event e = new Event(desc, from, to); + tasks.add(e); + ui.show(" Got it. I've added this task:"); + ui.show(" " + e.toString()); + ui.show(" Now you have " + tasks.size() + " tasks in the list."); + storage.save(tasks); + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/AddTodoCommand.java b/src/main/java/faith/logic/command/AddTodoCommand.java new file mode 100644 index 0000000000..b6467b078f --- /dev/null +++ b/src/main/java/faith/logic/command/AddTodoCommand.java @@ -0,0 +1,24 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Todo; + +public class AddTodoCommand extends Command { + private String desc; + public AddTodoCommand(String desc) { + this.desc = desc; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { + Todo t = new Todo(desc); + tasks.add(t); + ui.show(" Got it. I've added this task:"); + ui.show(" " + t.toString()); + ui.show(" Now you have " + tasks.size() + " tasks in the list."); + storage.save(tasks); + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/Command.java b/src/main/java/faith/logic/command/Command.java new file mode 100644 index 0000000000..9b84ba4c92 --- /dev/null +++ b/src/main/java/faith/logic/command/Command.java @@ -0,0 +1,16 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; + + +public abstract class Command { + + public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException; + + public boolean isExit() { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/DeleteCommand.java b/src/main/java/faith/logic/command/DeleteCommand.java new file mode 100644 index 0000000000..a783a45096 --- /dev/null +++ b/src/main/java/faith/logic/command/DeleteCommand.java @@ -0,0 +1,21 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Task; + +public class DeleteCommand extends Command { + private final int idx; + public DeleteCommand(int idx) { + this.idx = idx; + } + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { + ui.show(" Noted. I've removed this task:"); + ui.show(" " + tasks.remove(this.idx).toString()); + ui.show(" Now you have " + tasks.size() + " tasks in the list."); + storage.save(tasks); + } +} diff --git a/src/main/java/faith/logic/command/ExitCommand.java b/src/main/java/faith/logic/command/ExitCommand.java new file mode 100644 index 0000000000..f50522bf15 --- /dev/null +++ b/src/main/java/faith/logic/command/ExitCommand.java @@ -0,0 +1,16 @@ +package faith.logic.command; + +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; + +public class ExitCommand extends Command { + + public boolean isExit() { + return true; + } + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) { + ui.showGoodbye(); + } +} diff --git a/src/main/java/faith/logic/command/ListCommand.java b/src/main/java/faith/logic/command/ListCommand.java new file mode 100644 index 0000000000..eb2c38f316 --- /dev/null +++ b/src/main/java/faith/logic/command/ListCommand.java @@ -0,0 +1,16 @@ +package faith.logic.command; + +import faith.io.Ui; +import faith.io.Storage; +import faith.model.TaskList; + +public class ListCommand extends Command { + public ListCommand() {} + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) { + ui.show(" Here are the tasks in your list:"); + for (int i = 0; i < tasks.size(); i++) { + ui.show(" " + (i + 1) + "." + tasks.get(i)); + } + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/MarkCommand.java b/src/main/java/faith/logic/command/MarkCommand.java new file mode 100644 index 0000000000..69d54a91cc --- /dev/null +++ b/src/main/java/faith/logic/command/MarkCommand.java @@ -0,0 +1,23 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Task; + + +public class MarkCommand extends Command { + private int idx; + public MarkCommand(int idx) { + this.idx = idx; + } + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { + Task targetTask = tasks.get(idx); + targetTask.markDone(); + ui.show(" Nice! I've marked this task as done:"); + ui.show(" " + targetTask); + storage.save(tasks); + } +} \ No newline at end of file diff --git a/src/main/java/faith/logic/command/UnmarkCommand.java b/src/main/java/faith/logic/command/UnmarkCommand.java new file mode 100644 index 0000000000..c09bcbb2e3 --- /dev/null +++ b/src/main/java/faith/logic/command/UnmarkCommand.java @@ -0,0 +1,22 @@ +package faith.logic.command; + +import faith.exception.FaithException; +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Task; + +public class UnmarkCommand extends Command { + private int idx; + public UnmarkCommand(int idx) { + this.idx = idx; + } + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException{ + Task targetTask = tasks.get(idx); + targetTask.unmarkDone(); + ui.show(" OK, I've marked this task as not done yet:"); + ui.show(" " + targetTask); + storage.save(tasks); + } +} \ No newline at end of file diff --git a/src/main/java/faith/model/TaskList.java b/src/main/java/faith/model/TaskList.java new file mode 100644 index 0000000000..cb258e656b --- /dev/null +++ b/src/main/java/faith/model/TaskList.java @@ -0,0 +1,37 @@ +package faith.model; + +import faith.model.task.Task; +import java.util.ArrayList; +import java.util.List; + +public class TaskList { + private final ArrayList taskList; + + public TaskList() { + this.taskList = new ArrayList<>(); + } + + public TaskList(List initial) { + this.taskList = new ArrayList<>(initial); + } + + public int size() { + return taskList.size(); + } + + public Task get(int index) { + return taskList.get(index); + } + + public void add(Task t) { + taskList.add(t); + } + + public Task remove(int index) { + return taskList.remove(index); + } + + public List asList() { + return taskList; + } +} \ No newline at end of file diff --git a/src/main/java/faith/model/task/Deadline.java b/src/main/java/faith/model/task/Deadline.java new file mode 100644 index 0000000000..6f970ab5c9 --- /dev/null +++ b/src/main/java/faith/model/task/Deadline.java @@ -0,0 +1,63 @@ +package faith.model.task; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +public class Deadline extends Task { + + protected String by; + + private LocalDateTime byDateTime; + + private boolean hasTime; + + private static final DateTimeFormatter DMYHHMM = DateTimeFormatter.ofPattern("d/M/uuuu HHmm"); + private static final DateTimeFormatter DMYHHMM_ = DateTimeFormatter.ofPattern("d-M-uuuu HHmm"); + private static final DateTimeFormatter DMY = DateTimeFormatter.ofPattern("d/M/uuuu"); + private static final DateTimeFormatter DMY_ = DateTimeFormatter.ofPattern("d-M-uuuu"); + private static final DateTimeFormatter YMD = DateTimeFormatter.ofPattern("uuuu/M/d"); + private static final DateTimeFormatter ISO_DATE = DateTimeFormatter.ISO_LOCAL_DATE; + + public Deadline(String description, String by) { + super(description); + this.by = by; + try { + byDateTime = LocalDateTime.parse(by, DMYHHMM); + hasTime = true; + } catch (DateTimeParseException e) {} + + if (byDateTime == null) { + try { + byDateTime = LocalDateTime.parse(by, DMYHHMM_); + hasTime = true; + } catch (DateTimeParseException e) {} + } + + if (byDateTime == null) { + try { byDateTime = LocalDate.parse(by, DMY).atStartOfDay(); } catch (DateTimeParseException ignore) {} + } + if (byDateTime == null) { + try { byDateTime = LocalDate.parse(by, DMY_).atStartOfDay(); } catch (DateTimeParseException ignore) {} + } + if (byDateTime == null) { + try { byDateTime = LocalDate.parse(by, YMD).atStartOfDay(); } catch (DateTimeParseException ignore) {} + } + if (byDateTime == null) { + try { byDateTime = LocalDate.parse(by, ISO_DATE).atStartOfDay(); } catch (DateTimeParseException ignore) {} + } + } + + @Override + public String saveToFileFormat() { + return "D | " + this.isDoneInt() + " | " + description + " | " + by; + } + + @Override + public String toString() { + return "[D]" + super.toString() + + " (by: " + (byDateTime == null ? this.by : (byDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("MMM d uuuu")) + + (hasTime ? ", " + byDateTime.toLocalTime().format(DateTimeFormatter.ofPattern("h:mma")) : ""))) + ")"; + } +} \ No newline at end of file diff --git a/src/main/java/faith/model/task/Event.java b/src/main/java/faith/model/task/Event.java new file mode 100644 index 0000000000..c1e902b075 --- /dev/null +++ b/src/main/java/faith/model/task/Event.java @@ -0,0 +1,28 @@ +package faith.model.task; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + + +public class Event extends Task { + + protected String fromTime; + protected String toTime; + + public Event(String description, String fromTime, String toTime) { + super(description); + this.fromTime = fromTime; + this.toTime = toTime; + } + + @Override + public String saveToFileFormat() { + return "T | " + this.isDoneInt() + " | " + description + " | " + fromTime + "-" + toTime; + } + + @Override + public String toString() { + return "[E]" + super.toString() + " (from: " + fromTime + " to: " + toTime + ")"; + } +} \ No newline at end of file diff --git a/src/main/java/faith/model/task/Task.java b/src/main/java/faith/model/task/Task.java new file mode 100644 index 0000000000..10fe9686c0 --- /dev/null +++ b/src/main/java/faith/model/task/Task.java @@ -0,0 +1,32 @@ +package faith.model.task; + +public class Task { + + public String description; + protected boolean isDone; + + public Task(String description) { + this.description = description; + this.isDone = false; + } + public void markDone() { + this.isDone = true; + } + public void unmarkDone() { + this.isDone = false; + } + + public int isDoneInt() { + return this.isDone ? 1 : 0; + } + + public String saveToFileFormat() { + return ""; + } + + @Override + public String toString() { + return (this.isDone ? "[X] " : "[ ] ") + this.description; + } + +} \ No newline at end of file diff --git a/src/main/java/faith/model/task/Todo.java b/src/main/java/faith/model/task/Todo.java new file mode 100644 index 0000000000..65750139ba --- /dev/null +++ b/src/main/java/faith/model/task/Todo.java @@ -0,0 +1,18 @@ +package faith.model.task; + +public class Todo extends Task { + + public Todo(String description) { + super(description); + } + + @Override + public String saveToFileFormat() { + return "T | " + this.isDoneInt() + " | " + description; + } + + @Override + public String toString() { + return "[T]" + super.toString(); + } +} \ No newline at end of file diff --git a/src/test/java/faith/logic/ParserTest.java b/src/test/java/faith/logic/ParserTest.java new file mode 100644 index 0000000000..4010c739e8 --- /dev/null +++ b/src/test/java/faith/logic/ParserTest.java @@ -0,0 +1,72 @@ +package faith.logic; + +import faith.exception.FaithException; +import faith.logic.command.*; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ParserParseTest { + + @Test + void parse_list_returnsListCommand() throws FaithException { + Command c = Parser.parse("list"); + assertTrue(c instanceof ListCommand); + } + + @Test + void parse_bye_returnsExitCommand() throws FaithException { + Command c = Parser.parse("bye"); + assertTrue(c instanceof ExitCommand); + } + + @Test + void parse_todo_returnsAddTodoCommand() throws FaithException { + Command c = Parser.parse("todo read book"); + assertTrue(c instanceof AddTodoCommand); + } + + @Test + void parse_deadline_valid_returnsAddDeadlineCommand() throws FaithException { + Command c = Parser.parse("deadline return book /by 20/5/2025 1600"); + assertTrue(c instanceof AddDeadlineCommand); + } + + @Test + void parse_mark_returnsMarkCommand() throws FaithException { + Command c = Parser.parse("mark 3"); + assertTrue(c instanceof MarkCommand); + } + + @Test + void parse_unmark_returnsUnmarkCommand() throws FaithException { + Command c = Parser.parse("unmark 2"); + assertTrue(c instanceof UnmarkCommand); + } + + @Test + void parse_delete_returnsDeleteCommand() throws FaithException { + Command c = Parser.parse("delete 5"); + assertTrue(c instanceof DeleteCommand); + } + + @Test + void parse_event_valid_returnsAddEventCommand() throws FaithException { + Command c = Parser.parse("event project meeting /from 1/1/2025 0900 /to 1/1/2025 1000"); + assertTrue(c instanceof AddEventCommand); + } + + @Test + void parse_deadline_missingBy_throwsFaithException() { + assertThrows(FaithException.class, + () -> Parser.parse("deadline return book"), + "Missing /by should throw FaithException"); + } + + @Test + void parse_unknown_throwsFaithException() { + assertThrows(FaithException.class, + () -> Parser.parse("random shit"), + "Unknown command should throw FaithException"); + } +} diff --git a/src/test/java/faith/model/task/DeadlineTest.java b/src/test/java/faith/model/task/DeadlineTest.java new file mode 100644 index 0000000000..90899bf62e --- /dev/null +++ b/src/test/java/faith/model/task/DeadlineTest.java @@ -0,0 +1,34 @@ +package faith.model.task; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class DeadlineTest { + + @Test + void constructor_parsesDateTime() { + Deadline d = new Deadline("return book", "20/5/2025 1600"); + String out = d.toString(); + assertTrue(out.contains("May 20 2025"), "Pretty date missing"); + assertTrue(out.contains("4:00PM") || out.contains("4:00 PM"), + "Pretty time missing: " + out); + } + + @Test + void constructor_parsesDateOnly() { + Deadline d = new Deadline("return book", "20/5/2025"); + String out = d.toString(); + assertTrue(out.contains("May 20 2025"), "Pretty date missing"); + assertFalse(out.contains("AM") || out.contains("PM"), + "Date-only should not include a time: " + out); + } + + @Test + void constructor_parsesIsoDate() { + Deadline d = new Deadline("submit assignment", "2025-12-02"); + String out = d.toString(); + assertTrue(out.contains("Dec 2 2025") || out.contains("Dec 02 2025"), + "Pretty ISO date missing: " + out); + } +} From 039c602fafd0d9245d90ee331d399501e730a9a2 Mon Sep 17 00:00:00 2001 From: ivanng Date: Sat, 20 Sep 2025 17:12:31 +0800 Subject: [PATCH 07/26] fixed wrong index binding issue for mark, unmark and delete command --- data/tasks.txt | 3 +-- src/main/java/faith/logic/command/DeleteCommand.java | 2 +- src/main/java/faith/logic/command/MarkCommand.java | 2 +- src/main/java/faith/logic/command/UnmarkCommand.java | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/data/tasks.txt b/data/tasks.txt index e898296a2b..64e723d9a2 100644 --- a/data/tasks.txt +++ b/data/tasks.txt @@ -4,6 +4,5 @@ T | 0 | shit D | 0 | return book | 21/5/2025 1600 D | 0 | return book | 20/5/2025 T | 0 | poo -T | 0 | read book D | 0 | readbook | 9/9/2024 -T | 0 | read book +T | 1 | read book diff --git a/src/main/java/faith/logic/command/DeleteCommand.java b/src/main/java/faith/logic/command/DeleteCommand.java index a783a45096..af3225214f 100644 --- a/src/main/java/faith/logic/command/DeleteCommand.java +++ b/src/main/java/faith/logic/command/DeleteCommand.java @@ -14,7 +14,7 @@ public DeleteCommand(int idx) { @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { ui.show(" Noted. I've removed this task:"); - ui.show(" " + tasks.remove(this.idx).toString()); + ui.show(" " + tasks.remove(this.idx - 1).toString()); ui.show(" Now you have " + tasks.size() + " tasks in the list."); storage.save(tasks); } diff --git a/src/main/java/faith/logic/command/MarkCommand.java b/src/main/java/faith/logic/command/MarkCommand.java index 69d54a91cc..5538169765 100644 --- a/src/main/java/faith/logic/command/MarkCommand.java +++ b/src/main/java/faith/logic/command/MarkCommand.java @@ -14,7 +14,7 @@ public MarkCommand(int idx) { } @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { - Task targetTask = tasks.get(idx); + Task targetTask = tasks.get(idx - 1); targetTask.markDone(); ui.show(" Nice! I've marked this task as done:"); ui.show(" " + targetTask); diff --git a/src/main/java/faith/logic/command/UnmarkCommand.java b/src/main/java/faith/logic/command/UnmarkCommand.java index c09bcbb2e3..9467d8091f 100644 --- a/src/main/java/faith/logic/command/UnmarkCommand.java +++ b/src/main/java/faith/logic/command/UnmarkCommand.java @@ -13,7 +13,7 @@ public UnmarkCommand(int idx) { } @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException{ - Task targetTask = tasks.get(idx); + Task targetTask = tasks.get(idx - 1); targetTask.unmarkDone(); ui.show(" OK, I've marked this task as not done yet:"); ui.show(" " + targetTask); From bad57a75d0a80eebd17c249b6433afdae3bdba3e Mon Sep 17 00:00:00 2001 From: ivanng Date: Sat, 20 Sep 2025 18:12:51 +0800 Subject: [PATCH 08/26] did some modification --- src/main/java/faith/logic/Parser.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/faith/logic/Parser.java b/src/main/java/faith/logic/Parser.java index 6d647d874f..6ebde6e7bf 100644 --- a/src/main/java/faith/logic/Parser.java +++ b/src/main/java/faith/logic/Parser.java @@ -27,29 +27,29 @@ public static Command parse (String input) throws FaithException { } if (s.startsWith("todo ")) { String desc = s.substring(5).trim(); - if (desc.isEmpty()) throw new FaithException("The description of a todo cannot be empty."); + if (desc.isEmpty()) throw new FaithException(" The description of a todo cannot be empty."); return new AddTodoCommand(desc); } if (s.startsWith("deadline ")) { int i = s.indexOf(" /by "); - if (i < 0) throw new FaithException("Use: deadline /by "); + if (i < 0) throw new FaithException(" Use: deadline /by "); String desc = s.substring(9, i).trim(); String by = s.substring(i + 5).trim(); - if (desc.isEmpty() || by.isEmpty()) throw new FaithException("Deadline needs both description and /by."); + if (desc.isEmpty() || by.isEmpty()) throw new FaithException(" Deadline needs both description and /by."); return new AddDeadlineCommand(desc, by); } if (s.startsWith("event ")) { int i = s.indexOf(" /from "); int j = s.indexOf(" /to "); - if (i < 0) throw new FaithException("Use: event /from /to "); + if (i < 0) throw new FaithException(" Use: event /from /to "); String desc = s.substring(6, i).trim(); String from = s.substring(i + 7).trim(); String to = s.substring(j + 5).trim(); - if (desc.isEmpty() || from.isEmpty() || to.isEmpty()) throw new FaithException("Deadline needs description, /from and /to."); + if (desc.isEmpty() || from.isEmpty() || to.isEmpty()) throw new FaithException(" Deadline needs description, /from and /to."); return new AddEventCommand(desc, from, to); } - throw new FaithException("Sorry, I don't understand."); + throw new FaithException(" Sorry, I don't understand."); } private static int parseIndex1Based(String token) throws FaithException { @@ -58,7 +58,7 @@ private static int parseIndex1Based(String token) throws FaithException { if (oneBased <= 0) throw new NumberFormatException(); return oneBased; } catch (NumberFormatException e) { - throw new FaithException("Index must be a positive integer."); + throw new FaithException(" Index must be a positive integer."); } } } \ No newline at end of file From a1152fe7c0c5a7def1e1bf4dee871d06d4df112c Mon Sep 17 00:00:00 2001 From: ivanng Date: Sat, 20 Sep 2025 21:01:46 +0800 Subject: [PATCH 09/26] Added JavaDoc comments --- src/main/java/faith/Faith.java | 26 +++++++++---- .../java/faith/exception/FaithException.java | 14 +++++++ src/main/java/faith/io/Storage.java | 22 ++++++++++- src/main/java/faith/io/Ui.java | 31 +++++++++++++++ src/main/java/faith/logic/Parser.java | 39 ++++++++++++------- .../logic/command/AddDeadlineCommand.java | 14 +++++++ .../faith/logic/command/AddEventCommand.java | 14 +++++++ .../faith/logic/command/AddTodoCommand.java | 11 ++++++ .../java/faith/logic/command/Command.java | 16 +++++++- .../faith/logic/command/DeleteCommand.java | 13 +++++++ .../java/faith/logic/command/ExitCommand.java | 11 ++++++ .../java/faith/logic/command/ListCommand.java | 8 +++- .../java/faith/logic/command/MarkCommand.java | 13 ++++++- .../faith/logic/command/UnmarkCommand.java | 12 +++++- src/main/java/faith/model/TaskList.java | 26 +++++++++++++ 15 files changed, 244 insertions(+), 26 deletions(-) diff --git a/src/main/java/faith/Faith.java b/src/main/java/faith/Faith.java index 89fd901de1..72e892b47e 100644 --- a/src/main/java/faith/Faith.java +++ b/src/main/java/faith/Faith.java @@ -7,13 +7,21 @@ import faith.logic.command.Command; import faith.model.TaskList; - +/** + * Entry point of the Faith application. + * Wires together UI, storage, task list, and the command loop. + */ public class Faith { private static final String FILE_PATH = "./data/tasks.txt"; private Storage storage; private TaskList tasks; private Ui ui; + /** + * Creates a new Faith instance and attempts to load tasks from the given file path. + * + * @param filePath path to the persistent tasks file (e.g., "data/tasks.txt"). + */ public Faith(String filePath) { this.ui = new Ui(); this.storage = new Storage(filePath); @@ -25,6 +33,10 @@ public Faith(String filePath) { } } + /** + * Runs the main event loop: + * reads commands, executes them, handles errors, and decides when to exit. + */ public void run() { ui.showWelcome(); boolean isExit = false; @@ -43,16 +55,14 @@ public void run() { } } + /** + * Launches the application. + * + * @param args command line arguments (unused). + */ public static void main (String[] args) { new Faith("data/tasks.txt").run(); } - private void save() { - try { - storage.save(tasks); - } catch (FaithException e) { - ui.showError(" OOPS!!! There is an error saving tasks."); - } - } } diff --git a/src/main/java/faith/exception/FaithException.java b/src/main/java/faith/exception/FaithException.java index 9797e31664..54b2a8048f 100644 --- a/src/main/java/faith/exception/FaithException.java +++ b/src/main/java/faith/exception/FaithException.java @@ -1,9 +1,23 @@ package faith.exception; +/** + * checked exception for recoverable errors + * (e.g., unscripted commands, I/O failures). + */ public class FaithException extends Exception { + + /** + * Constructs a new {@code FaithException} with a human-readable message. + * + * @param msg reason for the failure. + */ public FaithException(String msg) { super(msg); } + + /** + * Constructs a new {@code FaithException}. + */ public FaithException() { super(); } diff --git a/src/main/java/faith/io/Storage.java b/src/main/java/faith/io/Storage.java index aa0be72bb3..963c97a070 100644 --- a/src/main/java/faith/io/Storage.java +++ b/src/main/java/faith/io/Storage.java @@ -12,15 +12,29 @@ import java.util.ArrayList; import java.util.List; +/** + * Store tasks to disk and loads them back on startup. + * Storage format is string text, one task per line. + */ public class Storage { private final String filePath; - + /** + * Creates a storage with the given file path. + * + * @param filePath path to the tasks file. + */ public Storage(String filePath) { this.filePath = filePath; } + /** + * Loads tasks from disk. Creates the file if missing. + * + * @return a list of tasks loaded from storage. + * @throws FaithException if the file cannot be read or parsed. + */ public List load() throws FaithException { TaskList taskList = new TaskList(); @@ -78,6 +92,12 @@ public List load() throws FaithException { return taskList.asList(); } + /** + * Saves the task list to disk, overwriting the file. + * + * @param tasks the task list to store. + * @throws FaithException if writing fails. + */ public void save(TaskList tasks) throws FaithException { try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) { for (Task t : tasks.asList()) { diff --git a/src/main/java/faith/io/Ui.java b/src/main/java/faith/io/Ui.java index 1ea7d9c743..2f57f65f4f 100644 --- a/src/main/java/faith/io/Ui.java +++ b/src/main/java/faith/io/Ui.java @@ -2,35 +2,66 @@ import java.util.Scanner; +/** + * Handles all user interaction: reading commands and printing messages. + * Keeps business logic out of I/O code. + */ public class Ui { private final Scanner in = new Scanner(System.in); + /** + * Prints a friendly greeting at program start. + */ public void showWelcome() { System.out.println(" ____________________________________________________________\n" + " Hello! I'm Faith\n" + " What can I do for you?\n" + " ____________________________________________________________"); } + /** + * Prints a goodbye message just before the program exits. + */ public void showGoodbye() { System.out.println(" Bye. Hope to see you again soon!"); } + /** + * Prints a horizontal divider line for visual separation. + */ public void showLine() { System.out.println(" ____________________________________________________________"); } + /** + * Prints a message. + * + * @param message text to print. + */ public void show(String message) { System.out.println(message); } + /** + * Prints an error message . + * + * @param message description of the error. + */ public void showError(String message) { System.out.println(message); } + /** + * Prints a specific message when loading stored tasks fails. + */ public void showLoadingError() { System.out.println(" OOPS!!! I couldn't load your tasks. Starting fresh."); } + /** + * Reads a full line of single command fron user input. + * + * @return the original command line. + */ public String readCommand() { return in.nextLine(); } diff --git a/src/main/java/faith/logic/Parser.java b/src/main/java/faith/logic/Parser.java index 6ebde6e7bf..7a3c011703 100644 --- a/src/main/java/faith/logic/Parser.java +++ b/src/main/java/faith/logic/Parser.java @@ -7,22 +7,45 @@ import faith.model.task.Task; import faith.model.task.Todo; +/** + * Parses user input strings into executable {@link Command} objects. + * Responsible only for syntactic interpretation; execution happens in commands. + */ public class Parser { + + /** + * Parses the original user command into a specific {@link Command} instance. + * + * Supported commands include: list, bye, todo, deadline, event, mark, unmark, delete. + * + * @param input the command line input from user. + * @return a {@link Command} instance. + * @throws FaithException if the command is unknown or arguments are invalid. + */ public static Command parse (String input) throws FaithException { String s = input.trim(); if (s.equals("bye")) return new ExitCommand(); if (s.equals("list")) return new ListCommand(); if (s.startsWith("mark ")) { - int idx = parseIndex1Based(s.substring(5).trim()); + int idx = Integer.parseInt(s.substring(5).trim()); + if (idx <= 0) { + throw new FaithException("Index must be a positive integer."); + } return new MarkCommand(idx); } if (s.startsWith("unmark ")) { - int idx = parseIndex1Based(s.substring(7).trim()); + int idx = Integer.parseInt(s.substring(7).trim()); + if (idx <= 0) { + throw new FaithException("Index must be a positive integer."); + } return new UnmarkCommand(idx); } if (s.startsWith("delete ")) { - int idx = parseIndex1Based(s.substring(7).trim()); + int idx = Integer.parseInt(s.substring(7).trim()); + if (idx <= 0) { + throw new FaithException("Index must be a positive integer."); + } return new DeleteCommand(idx); } if (s.startsWith("todo ")) { @@ -51,14 +74,4 @@ public static Command parse (String input) throws FaithException { throw new FaithException(" Sorry, I don't understand."); } - - private static int parseIndex1Based(String token) throws FaithException { - try { - int oneBased = Integer.parseInt(token); - if (oneBased <= 0) throw new NumberFormatException(); - return oneBased; - } catch (NumberFormatException e) { - throw new FaithException(" Index must be a positive integer."); - } - } } \ No newline at end of file diff --git a/src/main/java/faith/logic/command/AddDeadlineCommand.java b/src/main/java/faith/logic/command/AddDeadlineCommand.java index 312fcac768..64350aece5 100644 --- a/src/main/java/faith/logic/command/AddDeadlineCommand.java +++ b/src/main/java/faith/logic/command/AddDeadlineCommand.java @@ -6,13 +6,27 @@ import faith.model.TaskList; import faith.model.task.Deadline; +/** + * Adds a new {@code Deadline} task with a due date/time string. + * The {@code Deadline} class is responsible for parsing the date/time. + */ public class AddDeadlineCommand extends Command { private final String desc; private final String by; + + /** + * Creates a command to add a Deadline task with the given description. + * @param desc non-empty task description + * @param by deadline datetime of task (e.g., 20/9/2025 1600) + */ public AddDeadlineCommand(String desc, String by) { this.desc = desc; this.by = by; } + + /** + * Executes: adds the deadline task, shows feedback, and saves. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Deadline t = new Deadline(desc, by); diff --git a/src/main/java/faith/logic/command/AddEventCommand.java b/src/main/java/faith/logic/command/AddEventCommand.java index f34fe00513..6e4dfd76ea 100644 --- a/src/main/java/faith/logic/command/AddEventCommand.java +++ b/src/main/java/faith/logic/command/AddEventCommand.java @@ -6,15 +6,29 @@ import faith.model.TaskList; import faith.model.task.Event; +/** + * Adds a new {@code Event} task to the list. + */ public class AddEventCommand extends Command { private final String desc; private final String from; private final String to; + + /** + * Creates a command to add a Event task with given description, start time and end time. + * @param desc the task description + * @param from the start time of the event task + * @param to the end time of the event task + */ public AddEventCommand(String desc, String from, String to) { this.desc = desc; this.from = from; this.to = to; } + + /** + * Executes: adds the event task, shows feedback, and saves. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Event e = new Event(desc, from, to); diff --git a/src/main/java/faith/logic/command/AddTodoCommand.java b/src/main/java/faith/logic/command/AddTodoCommand.java index b6467b078f..88e14629c4 100644 --- a/src/main/java/faith/logic/command/AddTodoCommand.java +++ b/src/main/java/faith/logic/command/AddTodoCommand.java @@ -6,12 +6,23 @@ import faith.model.TaskList; import faith.model.task.Todo; +/** + * Adds a new {@code Todo} task to the list. + */ public class AddTodoCommand extends Command { private String desc; + /** + * Creates a command to add a Todo task with the given description. + * + * @param desc non-empty task description. + */ public AddTodoCommand(String desc) { this.desc = desc; } + /** + * Executes: adds the todo task, shows feedback, and saves. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Todo t = new Todo(desc); diff --git a/src/main/java/faith/logic/command/Command.java b/src/main/java/faith/logic/command/Command.java index 9b84ba4c92..4983a867b1 100644 --- a/src/main/java/faith/logic/command/Command.java +++ b/src/main/java/faith/logic/command/Command.java @@ -5,11 +5,25 @@ import faith.io.Ui; import faith.model.TaskList; - +/** + * Base class for all user commands such as marking, deleting, or exiting. + */ public abstract class Command { + /** + * Executes the command against the given collaborators. + * + * @param tasks task list. + * @param ui the UI to show messages to the user. + * @param storage the storage used to store task list. + * @throws FaithException error during execution. + */ public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException; + /** + * + * @return true if it is an exit command, false otherwise + */ public boolean isExit() { return false; } diff --git a/src/main/java/faith/logic/command/DeleteCommand.java b/src/main/java/faith/logic/command/DeleteCommand.java index af3225214f..0ebecc44b3 100644 --- a/src/main/java/faith/logic/command/DeleteCommand.java +++ b/src/main/java/faith/logic/command/DeleteCommand.java @@ -6,11 +6,24 @@ import faith.model.TaskList; import faith.model.task.Task; +/** + * Deletes a task from the list by index. + */ public class DeleteCommand extends Command { private final int idx; + + /** + * Constructs a deletion command for the given 1-based index. + * + * @param idx position of the task on the UI to remove. + */ public DeleteCommand(int idx) { this.idx = idx; } + + /** + * Executes: removes the task, shows feedback, and saves the new list. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { ui.show(" Noted. I've removed this task:"); diff --git a/src/main/java/faith/logic/command/ExitCommand.java b/src/main/java/faith/logic/command/ExitCommand.java index f50522bf15..0650f0d154 100644 --- a/src/main/java/faith/logic/command/ExitCommand.java +++ b/src/main/java/faith/logic/command/ExitCommand.java @@ -4,11 +4,22 @@ import faith.io.Ui; import faith.model.TaskList; +/** + * Tell the application to exit after showing a goodbye message. + */ public class ExitCommand extends Command { + /** + * + * @return always true because this is an exit command + */ public boolean isExit() { return true; } + + /** + * Executes: prints the goodbye message + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { ui.showGoodbye(); diff --git a/src/main/java/faith/logic/command/ListCommand.java b/src/main/java/faith/logic/command/ListCommand.java index eb2c38f316..30a8a180a2 100644 --- a/src/main/java/faith/logic/command/ListCommand.java +++ b/src/main/java/faith/logic/command/ListCommand.java @@ -4,8 +4,14 @@ import faith.io.Storage; import faith.model.TaskList; +/** + * Print the task list in their natural order + */ public class ListCommand extends Command { - public ListCommand() {} + + /** + * Executes: prints either an empty message or a numbered list of tasks. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { ui.show(" Here are the tasks in your list:"); diff --git a/src/main/java/faith/logic/command/MarkCommand.java b/src/main/java/faith/logic/command/MarkCommand.java index 5538169765..86094605e8 100644 --- a/src/main/java/faith/logic/command/MarkCommand.java +++ b/src/main/java/faith/logic/command/MarkCommand.java @@ -6,12 +6,23 @@ import faith.model.TaskList; import faith.model.task.Task; - +/** + * Mark a task as done by its displaying index + */ public class MarkCommand extends Command { + private int idx; + + /** + * Creates a command to mark a task as done with the given displaying index. + */ public MarkCommand(int idx) { this.idx = idx; } + + /** + * Executes: marks the task as done, shows feedback, and saves the change. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Task targetTask = tasks.get(idx - 1); diff --git a/src/main/java/faith/logic/command/UnmarkCommand.java b/src/main/java/faith/logic/command/UnmarkCommand.java index 9467d8091f..1be2893b84 100644 --- a/src/main/java/faith/logic/command/UnmarkCommand.java +++ b/src/main/java/faith/logic/command/UnmarkCommand.java @@ -5,12 +5,22 @@ import faith.io.Ui; import faith.model.TaskList; import faith.model.task.Task; - +/** + * Marks a task as not done by its displaying index. + */ public class UnmarkCommand extends Command { private int idx; + + /** + * Creates a command to mark a task as not done with the given displaying index. + */ public UnmarkCommand(int idx) { this.idx = idx; } + + /** + * Executes: marks the task as not done, shows feedback, and saves the change. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException{ Task targetTask = tasks.get(idx - 1); diff --git a/src/main/java/faith/model/TaskList.java b/src/main/java/faith/model/TaskList.java index cb258e656b..b64a8031ed 100644 --- a/src/main/java/faith/model/TaskList.java +++ b/src/main/java/faith/model/TaskList.java @@ -5,6 +5,7 @@ import java.util.List; public class TaskList { + private final ArrayList taskList; public TaskList() { @@ -15,22 +16,47 @@ public TaskList(List initial) { this.taskList = new ArrayList<>(initial); } + /** + * Returns the number of tasks in the list + * + * @return the number of tasks in the list. + */ public int size() { return taskList.size(); } + /** + * Returns the task at the specified position in this list + * @param index index of the task to return + * @return the task at the specified position in this list + */ public Task get(int index) { return taskList.get(index); } + /** + * Appends the specified task to the end of this list + * @param t task to be appended to this list + */ public void add(Task t) { taskList.add(t); } + /** + * Removes the task at the specified position in this list. Shifts any subsequent tasks to the left (subtracts one from their indices). + * + * @param index the index of the task to be removed + * @return the task that was removed from the list + */ public Task remove(int index) { return taskList.remove(index); } + /** + * return task list + * + * @return task list + */ public List asList() { return taskList; } From 922e820770e426cf9a3e51f88a656279f42c0269 Mon Sep 17 00:00:00 2001 From: ivanng Date: Sun, 21 Sep 2025 19:32:02 +0800 Subject: [PATCH 10/26] Follow the Coding Standard --- src/main/java/faith/Faith.java | 3 +-- src/main/java/faith/io/Storage.java | 1 - src/main/java/faith/logic/Parser.java | 21 ++++++++--------- .../faith/logic/command/AddTodoCommand.java | 1 + .../faith/logic/command/DeleteCommand.java | 2 +- .../java/faith/logic/command/ListCommand.java | 2 +- .../faith/logic/command/UnmarkCommand.java | 3 ++- src/main/java/faith/model/TaskList.java | 8 +++++++ src/main/java/faith/model/task/Deadline.java | 23 ++++++++++++++----- src/main/java/faith/model/task/Event.java | 1 - src/main/java/faith/model/task/Task.java | 1 - 11 files changed, 41 insertions(+), 25 deletions(-) diff --git a/src/main/java/faith/Faith.java b/src/main/java/faith/Faith.java index 72e892b47e..b29b7207ad 100644 --- a/src/main/java/faith/Faith.java +++ b/src/main/java/faith/Faith.java @@ -12,7 +12,6 @@ * Wires together UI, storage, task list, and the command loop. */ public class Faith { - private static final String FILE_PATH = "./data/tasks.txt"; private Storage storage; private TaskList tasks; private Ui ui; @@ -20,7 +19,7 @@ public class Faith { /** * Creates a new Faith instance and attempts to load tasks from the given file path. * - * @param filePath path to the persistent tasks file (e.g., "data/tasks.txt"). + * @param filePath path to the storage tasks file (e.g., "data/tasks.txt"). */ public Faith(String filePath) { this.ui = new Ui(); diff --git a/src/main/java/faith/io/Storage.java b/src/main/java/faith/io/Storage.java index 963c97a070..dc7e734f8e 100644 --- a/src/main/java/faith/io/Storage.java +++ b/src/main/java/faith/io/Storage.java @@ -36,7 +36,6 @@ public Storage(String filePath) { * @throws FaithException if the file cannot be read or parsed. */ public List load() throws FaithException { - TaskList taskList = new TaskList(); File file = new File(filePath); diff --git a/src/main/java/faith/logic/Parser.java b/src/main/java/faith/logic/Parser.java index 7a3c011703..9b473e13df 100644 --- a/src/main/java/faith/logic/Parser.java +++ b/src/main/java/faith/logic/Parser.java @@ -2,10 +2,6 @@ import faith.exception.FaithException; import faith.logic.command.*; -import faith.model.TaskList; -import faith.model.task.Deadline; -import faith.model.task.Task; -import faith.model.task.Todo; /** * Parses user input strings into executable {@link Command} objects. @@ -15,16 +11,16 @@ public class Parser { /** * Parses the original user command into a specific {@link Command} instance. - * + *

* Supported commands include: list, bye, todo, deadline, event, mark, unmark, delete. * * @param input the command line input from user. * @return a {@link Command} instance. * @throws FaithException if the command is unknown or arguments are invalid. */ - public static Command parse (String input) throws FaithException { + public static Command parse(String input) throws FaithException { String s = input.trim(); - if (s.equals("bye")) return new ExitCommand(); + if (s.equals("bye")) return new ExitCommand(); if (s.equals("list")) return new ListCommand(); if (s.startsWith("mark ")) { @@ -58,20 +54,23 @@ public static Command parse (String input) throws FaithException { if (i < 0) throw new FaithException(" Use: deadline /by "); String desc = s.substring(9, i).trim(); String by = s.substring(i + 5).trim(); - if (desc.isEmpty() || by.isEmpty()) throw new FaithException(" Deadline needs both description and /by."); + if (desc.isEmpty() || by.isEmpty()) + throw new FaithException(" Deadline needs both description and /by."); return new AddDeadlineCommand(desc, by); } if (s.startsWith("event ")) { int i = s.indexOf(" /from "); int j = s.indexOf(" /to "); - if (i < 0) throw new FaithException(" Use: event /from /to "); + if (i < 0) + throw new FaithException(" Use: event /from /to "); String desc = s.substring(6, i).trim(); String from = s.substring(i + 7).trim(); String to = s.substring(j + 5).trim(); - if (desc.isEmpty() || from.isEmpty() || to.isEmpty()) throw new FaithException(" Deadline needs description, /from and /to."); + if (desc.isEmpty() || from.isEmpty() || to.isEmpty()) + throw new FaithException(" Deadline needs description, /from and /to."); return new AddEventCommand(desc, from, to); } throw new FaithException(" Sorry, I don't understand."); } -} \ No newline at end of file +} diff --git a/src/main/java/faith/logic/command/AddTodoCommand.java b/src/main/java/faith/logic/command/AddTodoCommand.java index 88e14629c4..e74a83d405 100644 --- a/src/main/java/faith/logic/command/AddTodoCommand.java +++ b/src/main/java/faith/logic/command/AddTodoCommand.java @@ -10,6 +10,7 @@ * Adds a new {@code Todo} task to the list. */ public class AddTodoCommand extends Command { + private String desc; /** * Creates a command to add a Todo task with the given description. diff --git a/src/main/java/faith/logic/command/DeleteCommand.java b/src/main/java/faith/logic/command/DeleteCommand.java index 0ebecc44b3..ab00391066 100644 --- a/src/main/java/faith/logic/command/DeleteCommand.java +++ b/src/main/java/faith/logic/command/DeleteCommand.java @@ -4,12 +4,12 @@ import faith.io.Storage; import faith.io.Ui; import faith.model.TaskList; -import faith.model.task.Task; /** * Deletes a task from the list by index. */ public class DeleteCommand extends Command { + private final int idx; /** diff --git a/src/main/java/faith/logic/command/ListCommand.java b/src/main/java/faith/logic/command/ListCommand.java index 30a8a180a2..8c641626b6 100644 --- a/src/main/java/faith/logic/command/ListCommand.java +++ b/src/main/java/faith/logic/command/ListCommand.java @@ -1,7 +1,7 @@ package faith.logic.command; -import faith.io.Ui; import faith.io.Storage; +import faith.io.Ui; import faith.model.TaskList; /** diff --git a/src/main/java/faith/logic/command/UnmarkCommand.java b/src/main/java/faith/logic/command/UnmarkCommand.java index 1be2893b84..791bc76675 100644 --- a/src/main/java/faith/logic/command/UnmarkCommand.java +++ b/src/main/java/faith/logic/command/UnmarkCommand.java @@ -9,6 +9,7 @@ * Marks a task as not done by its displaying index. */ public class UnmarkCommand extends Command { + private int idx; /** @@ -22,7 +23,7 @@ public UnmarkCommand(int idx) { * Executes: marks the task as not done, shows feedback, and saves the change. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException{ + public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Task targetTask = tasks.get(idx - 1); targetTask.unmarkDone(); ui.show(" OK, I've marked this task as not done yet:"); diff --git a/src/main/java/faith/model/TaskList.java b/src/main/java/faith/model/TaskList.java index b64a8031ed..4e6819c038 100644 --- a/src/main/java/faith/model/TaskList.java +++ b/src/main/java/faith/model/TaskList.java @@ -8,10 +8,18 @@ public class TaskList { private final ArrayList taskList; + /** + * Returns a new empty task list + */ public TaskList() { this.taskList = new ArrayList<>(); } + /** + * Constructs a task list from given list + * + * @param initial returns a task list constructed with given list + */ public TaskList(List initial) { this.taskList = new ArrayList<>(initial); } diff --git a/src/main/java/faith/model/task/Deadline.java b/src/main/java/faith/model/task/Deadline.java index 6f970ab5c9..cb012bac53 100644 --- a/src/main/java/faith/model/task/Deadline.java +++ b/src/main/java/faith/model/task/Deadline.java @@ -36,16 +36,24 @@ public Deadline(String description, String by) { } if (byDateTime == null) { - try { byDateTime = LocalDate.parse(by, DMY).atStartOfDay(); } catch (DateTimeParseException ignore) {} + try { + byDateTime = LocalDate.parse(by, DMY).atStartOfDay(); + } catch (DateTimeParseException ignore) {} } if (byDateTime == null) { - try { byDateTime = LocalDate.parse(by, DMY_).atStartOfDay(); } catch (DateTimeParseException ignore) {} + try { + byDateTime = LocalDate.parse(by, DMY_).atStartOfDay(); + } catch (DateTimeParseException ignore) {} } if (byDateTime == null) { - try { byDateTime = LocalDate.parse(by, YMD).atStartOfDay(); } catch (DateTimeParseException ignore) {} + try { + byDateTime = LocalDate.parse(by, YMD).atStartOfDay(); + } catch (DateTimeParseException ignore) {} } if (byDateTime == null) { - try { byDateTime = LocalDate.parse(by, ISO_DATE).atStartOfDay(); } catch (DateTimeParseException ignore) {} + try { + byDateTime = LocalDate.parse(by, ISO_DATE).atStartOfDay(); + } catch (DateTimeParseException ignore) {} } } @@ -57,7 +65,10 @@ public String saveToFileFormat() { @Override public String toString() { return "[D]" + super.toString() - + " (by: " + (byDateTime == null ? this.by : (byDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("MMM d uuuu")) - + (hasTime ? ", " + byDateTime.toLocalTime().format(DateTimeFormatter.ofPattern("h:mma")) : ""))) + ")"; + + " (by: " + (byDateTime == null + ? this.by + : (byDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("MMM d uuuu")) + + (hasTime ? ", " + byDateTime.toLocalTime().format(DateTimeFormatter.ofPattern("h:mma")) : ""))) + + ")"; } } \ No newline at end of file diff --git a/src/main/java/faith/model/task/Event.java b/src/main/java/faith/model/task/Event.java index c1e902b075..8b52210c3d 100644 --- a/src/main/java/faith/model/task/Event.java +++ b/src/main/java/faith/model/task/Event.java @@ -6,7 +6,6 @@ public class Event extends Task { - protected String fromTime; protected String toTime; diff --git a/src/main/java/faith/model/task/Task.java b/src/main/java/faith/model/task/Task.java index 10fe9686c0..69e6bcc05c 100644 --- a/src/main/java/faith/model/task/Task.java +++ b/src/main/java/faith/model/task/Task.java @@ -1,7 +1,6 @@ package faith.model.task; public class Task { - public String description; protected boolean isDone; From 4d304a185e69db2b8e6cdee67fea064ad1ec53e1 Mon Sep 17 00:00:00 2001 From: ivanng Date: Sat, 20 Sep 2025 21:01:46 +0800 Subject: [PATCH 11/26] Add JavaDoc comments --- src/main/java/faith/Faith.java | 26 +++++++++---- .../java/faith/exception/FaithException.java | 14 +++++++ src/main/java/faith/io/Storage.java | 22 ++++++++++- src/main/java/faith/io/Ui.java | 31 +++++++++++++++ src/main/java/faith/logic/Parser.java | 39 ++++++++++++------- .../logic/command/AddDeadlineCommand.java | 14 +++++++ .../faith/logic/command/AddEventCommand.java | 14 +++++++ .../faith/logic/command/AddTodoCommand.java | 11 ++++++ .../java/faith/logic/command/Command.java | 16 +++++++- .../faith/logic/command/DeleteCommand.java | 13 +++++++ .../java/faith/logic/command/ExitCommand.java | 11 ++++++ .../java/faith/logic/command/ListCommand.java | 8 +++- .../java/faith/logic/command/MarkCommand.java | 13 ++++++- .../faith/logic/command/UnmarkCommand.java | 12 +++++- src/main/java/faith/model/TaskList.java | 26 +++++++++++++ 15 files changed, 244 insertions(+), 26 deletions(-) diff --git a/src/main/java/faith/Faith.java b/src/main/java/faith/Faith.java index 89fd901de1..72e892b47e 100644 --- a/src/main/java/faith/Faith.java +++ b/src/main/java/faith/Faith.java @@ -7,13 +7,21 @@ import faith.logic.command.Command; import faith.model.TaskList; - +/** + * Entry point of the Faith application. + * Wires together UI, storage, task list, and the command loop. + */ public class Faith { private static final String FILE_PATH = "./data/tasks.txt"; private Storage storage; private TaskList tasks; private Ui ui; + /** + * Creates a new Faith instance and attempts to load tasks from the given file path. + * + * @param filePath path to the persistent tasks file (e.g., "data/tasks.txt"). + */ public Faith(String filePath) { this.ui = new Ui(); this.storage = new Storage(filePath); @@ -25,6 +33,10 @@ public Faith(String filePath) { } } + /** + * Runs the main event loop: + * reads commands, executes them, handles errors, and decides when to exit. + */ public void run() { ui.showWelcome(); boolean isExit = false; @@ -43,16 +55,14 @@ public void run() { } } + /** + * Launches the application. + * + * @param args command line arguments (unused). + */ public static void main (String[] args) { new Faith("data/tasks.txt").run(); } - private void save() { - try { - storage.save(tasks); - } catch (FaithException e) { - ui.showError(" OOPS!!! There is an error saving tasks."); - } - } } diff --git a/src/main/java/faith/exception/FaithException.java b/src/main/java/faith/exception/FaithException.java index 9797e31664..54b2a8048f 100644 --- a/src/main/java/faith/exception/FaithException.java +++ b/src/main/java/faith/exception/FaithException.java @@ -1,9 +1,23 @@ package faith.exception; +/** + * checked exception for recoverable errors + * (e.g., unscripted commands, I/O failures). + */ public class FaithException extends Exception { + + /** + * Constructs a new {@code FaithException} with a human-readable message. + * + * @param msg reason for the failure. + */ public FaithException(String msg) { super(msg); } + + /** + * Constructs a new {@code FaithException}. + */ public FaithException() { super(); } diff --git a/src/main/java/faith/io/Storage.java b/src/main/java/faith/io/Storage.java index aa0be72bb3..963c97a070 100644 --- a/src/main/java/faith/io/Storage.java +++ b/src/main/java/faith/io/Storage.java @@ -12,15 +12,29 @@ import java.util.ArrayList; import java.util.List; +/** + * Store tasks to disk and loads them back on startup. + * Storage format is string text, one task per line. + */ public class Storage { private final String filePath; - + /** + * Creates a storage with the given file path. + * + * @param filePath path to the tasks file. + */ public Storage(String filePath) { this.filePath = filePath; } + /** + * Loads tasks from disk. Creates the file if missing. + * + * @return a list of tasks loaded from storage. + * @throws FaithException if the file cannot be read or parsed. + */ public List load() throws FaithException { TaskList taskList = new TaskList(); @@ -78,6 +92,12 @@ public List load() throws FaithException { return taskList.asList(); } + /** + * Saves the task list to disk, overwriting the file. + * + * @param tasks the task list to store. + * @throws FaithException if writing fails. + */ public void save(TaskList tasks) throws FaithException { try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) { for (Task t : tasks.asList()) { diff --git a/src/main/java/faith/io/Ui.java b/src/main/java/faith/io/Ui.java index 1ea7d9c743..2f57f65f4f 100644 --- a/src/main/java/faith/io/Ui.java +++ b/src/main/java/faith/io/Ui.java @@ -2,35 +2,66 @@ import java.util.Scanner; +/** + * Handles all user interaction: reading commands and printing messages. + * Keeps business logic out of I/O code. + */ public class Ui { private final Scanner in = new Scanner(System.in); + /** + * Prints a friendly greeting at program start. + */ public void showWelcome() { System.out.println(" ____________________________________________________________\n" + " Hello! I'm Faith\n" + " What can I do for you?\n" + " ____________________________________________________________"); } + /** + * Prints a goodbye message just before the program exits. + */ public void showGoodbye() { System.out.println(" Bye. Hope to see you again soon!"); } + /** + * Prints a horizontal divider line for visual separation. + */ public void showLine() { System.out.println(" ____________________________________________________________"); } + /** + * Prints a message. + * + * @param message text to print. + */ public void show(String message) { System.out.println(message); } + /** + * Prints an error message . + * + * @param message description of the error. + */ public void showError(String message) { System.out.println(message); } + /** + * Prints a specific message when loading stored tasks fails. + */ public void showLoadingError() { System.out.println(" OOPS!!! I couldn't load your tasks. Starting fresh."); } + /** + * Reads a full line of single command fron user input. + * + * @return the original command line. + */ public String readCommand() { return in.nextLine(); } diff --git a/src/main/java/faith/logic/Parser.java b/src/main/java/faith/logic/Parser.java index 6ebde6e7bf..7a3c011703 100644 --- a/src/main/java/faith/logic/Parser.java +++ b/src/main/java/faith/logic/Parser.java @@ -7,22 +7,45 @@ import faith.model.task.Task; import faith.model.task.Todo; +/** + * Parses user input strings into executable {@link Command} objects. + * Responsible only for syntactic interpretation; execution happens in commands. + */ public class Parser { + + /** + * Parses the original user command into a specific {@link Command} instance. + * + * Supported commands include: list, bye, todo, deadline, event, mark, unmark, delete. + * + * @param input the command line input from user. + * @return a {@link Command} instance. + * @throws FaithException if the command is unknown or arguments are invalid. + */ public static Command parse (String input) throws FaithException { String s = input.trim(); if (s.equals("bye")) return new ExitCommand(); if (s.equals("list")) return new ListCommand(); if (s.startsWith("mark ")) { - int idx = parseIndex1Based(s.substring(5).trim()); + int idx = Integer.parseInt(s.substring(5).trim()); + if (idx <= 0) { + throw new FaithException("Index must be a positive integer."); + } return new MarkCommand(idx); } if (s.startsWith("unmark ")) { - int idx = parseIndex1Based(s.substring(7).trim()); + int idx = Integer.parseInt(s.substring(7).trim()); + if (idx <= 0) { + throw new FaithException("Index must be a positive integer."); + } return new UnmarkCommand(idx); } if (s.startsWith("delete ")) { - int idx = parseIndex1Based(s.substring(7).trim()); + int idx = Integer.parseInt(s.substring(7).trim()); + if (idx <= 0) { + throw new FaithException("Index must be a positive integer."); + } return new DeleteCommand(idx); } if (s.startsWith("todo ")) { @@ -51,14 +74,4 @@ public static Command parse (String input) throws FaithException { throw new FaithException(" Sorry, I don't understand."); } - - private static int parseIndex1Based(String token) throws FaithException { - try { - int oneBased = Integer.parseInt(token); - if (oneBased <= 0) throw new NumberFormatException(); - return oneBased; - } catch (NumberFormatException e) { - throw new FaithException(" Index must be a positive integer."); - } - } } \ No newline at end of file diff --git a/src/main/java/faith/logic/command/AddDeadlineCommand.java b/src/main/java/faith/logic/command/AddDeadlineCommand.java index 312fcac768..64350aece5 100644 --- a/src/main/java/faith/logic/command/AddDeadlineCommand.java +++ b/src/main/java/faith/logic/command/AddDeadlineCommand.java @@ -6,13 +6,27 @@ import faith.model.TaskList; import faith.model.task.Deadline; +/** + * Adds a new {@code Deadline} task with a due date/time string. + * The {@code Deadline} class is responsible for parsing the date/time. + */ public class AddDeadlineCommand extends Command { private final String desc; private final String by; + + /** + * Creates a command to add a Deadline task with the given description. + * @param desc non-empty task description + * @param by deadline datetime of task (e.g., 20/9/2025 1600) + */ public AddDeadlineCommand(String desc, String by) { this.desc = desc; this.by = by; } + + /** + * Executes: adds the deadline task, shows feedback, and saves. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Deadline t = new Deadline(desc, by); diff --git a/src/main/java/faith/logic/command/AddEventCommand.java b/src/main/java/faith/logic/command/AddEventCommand.java index f34fe00513..6e4dfd76ea 100644 --- a/src/main/java/faith/logic/command/AddEventCommand.java +++ b/src/main/java/faith/logic/command/AddEventCommand.java @@ -6,15 +6,29 @@ import faith.model.TaskList; import faith.model.task.Event; +/** + * Adds a new {@code Event} task to the list. + */ public class AddEventCommand extends Command { private final String desc; private final String from; private final String to; + + /** + * Creates a command to add a Event task with given description, start time and end time. + * @param desc the task description + * @param from the start time of the event task + * @param to the end time of the event task + */ public AddEventCommand(String desc, String from, String to) { this.desc = desc; this.from = from; this.to = to; } + + /** + * Executes: adds the event task, shows feedback, and saves. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Event e = new Event(desc, from, to); diff --git a/src/main/java/faith/logic/command/AddTodoCommand.java b/src/main/java/faith/logic/command/AddTodoCommand.java index b6467b078f..88e14629c4 100644 --- a/src/main/java/faith/logic/command/AddTodoCommand.java +++ b/src/main/java/faith/logic/command/AddTodoCommand.java @@ -6,12 +6,23 @@ import faith.model.TaskList; import faith.model.task.Todo; +/** + * Adds a new {@code Todo} task to the list. + */ public class AddTodoCommand extends Command { private String desc; + /** + * Creates a command to add a Todo task with the given description. + * + * @param desc non-empty task description. + */ public AddTodoCommand(String desc) { this.desc = desc; } + /** + * Executes: adds the todo task, shows feedback, and saves. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Todo t = new Todo(desc); diff --git a/src/main/java/faith/logic/command/Command.java b/src/main/java/faith/logic/command/Command.java index 9b84ba4c92..4983a867b1 100644 --- a/src/main/java/faith/logic/command/Command.java +++ b/src/main/java/faith/logic/command/Command.java @@ -5,11 +5,25 @@ import faith.io.Ui; import faith.model.TaskList; - +/** + * Base class for all user commands such as marking, deleting, or exiting. + */ public abstract class Command { + /** + * Executes the command against the given collaborators. + * + * @param tasks task list. + * @param ui the UI to show messages to the user. + * @param storage the storage used to store task list. + * @throws FaithException error during execution. + */ public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException; + /** + * + * @return true if it is an exit command, false otherwise + */ public boolean isExit() { return false; } diff --git a/src/main/java/faith/logic/command/DeleteCommand.java b/src/main/java/faith/logic/command/DeleteCommand.java index af3225214f..0ebecc44b3 100644 --- a/src/main/java/faith/logic/command/DeleteCommand.java +++ b/src/main/java/faith/logic/command/DeleteCommand.java @@ -6,11 +6,24 @@ import faith.model.TaskList; import faith.model.task.Task; +/** + * Deletes a task from the list by index. + */ public class DeleteCommand extends Command { private final int idx; + + /** + * Constructs a deletion command for the given 1-based index. + * + * @param idx position of the task on the UI to remove. + */ public DeleteCommand(int idx) { this.idx = idx; } + + /** + * Executes: removes the task, shows feedback, and saves the new list. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { ui.show(" Noted. I've removed this task:"); diff --git a/src/main/java/faith/logic/command/ExitCommand.java b/src/main/java/faith/logic/command/ExitCommand.java index f50522bf15..0650f0d154 100644 --- a/src/main/java/faith/logic/command/ExitCommand.java +++ b/src/main/java/faith/logic/command/ExitCommand.java @@ -4,11 +4,22 @@ import faith.io.Ui; import faith.model.TaskList; +/** + * Tell the application to exit after showing a goodbye message. + */ public class ExitCommand extends Command { + /** + * + * @return always true because this is an exit command + */ public boolean isExit() { return true; } + + /** + * Executes: prints the goodbye message + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { ui.showGoodbye(); diff --git a/src/main/java/faith/logic/command/ListCommand.java b/src/main/java/faith/logic/command/ListCommand.java index eb2c38f316..30a8a180a2 100644 --- a/src/main/java/faith/logic/command/ListCommand.java +++ b/src/main/java/faith/logic/command/ListCommand.java @@ -4,8 +4,14 @@ import faith.io.Storage; import faith.model.TaskList; +/** + * Print the task list in their natural order + */ public class ListCommand extends Command { - public ListCommand() {} + + /** + * Executes: prints either an empty message or a numbered list of tasks. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { ui.show(" Here are the tasks in your list:"); diff --git a/src/main/java/faith/logic/command/MarkCommand.java b/src/main/java/faith/logic/command/MarkCommand.java index 5538169765..86094605e8 100644 --- a/src/main/java/faith/logic/command/MarkCommand.java +++ b/src/main/java/faith/logic/command/MarkCommand.java @@ -6,12 +6,23 @@ import faith.model.TaskList; import faith.model.task.Task; - +/** + * Mark a task as done by its displaying index + */ public class MarkCommand extends Command { + private int idx; + + /** + * Creates a command to mark a task as done with the given displaying index. + */ public MarkCommand(int idx) { this.idx = idx; } + + /** + * Executes: marks the task as done, shows feedback, and saves the change. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException { Task targetTask = tasks.get(idx - 1); diff --git a/src/main/java/faith/logic/command/UnmarkCommand.java b/src/main/java/faith/logic/command/UnmarkCommand.java index 9467d8091f..1be2893b84 100644 --- a/src/main/java/faith/logic/command/UnmarkCommand.java +++ b/src/main/java/faith/logic/command/UnmarkCommand.java @@ -5,12 +5,22 @@ import faith.io.Ui; import faith.model.TaskList; import faith.model.task.Task; - +/** + * Marks a task as not done by its displaying index. + */ public class UnmarkCommand extends Command { private int idx; + + /** + * Creates a command to mark a task as not done with the given displaying index. + */ public UnmarkCommand(int idx) { this.idx = idx; } + + /** + * Executes: marks the task as not done, shows feedback, and saves the change. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws FaithException{ Task targetTask = tasks.get(idx - 1); diff --git a/src/main/java/faith/model/TaskList.java b/src/main/java/faith/model/TaskList.java index cb258e656b..b64a8031ed 100644 --- a/src/main/java/faith/model/TaskList.java +++ b/src/main/java/faith/model/TaskList.java @@ -5,6 +5,7 @@ import java.util.List; public class TaskList { + private final ArrayList taskList; public TaskList() { @@ -15,22 +16,47 @@ public TaskList(List initial) { this.taskList = new ArrayList<>(initial); } + /** + * Returns the number of tasks in the list + * + * @return the number of tasks in the list. + */ public int size() { return taskList.size(); } + /** + * Returns the task at the specified position in this list + * @param index index of the task to return + * @return the task at the specified position in this list + */ public Task get(int index) { return taskList.get(index); } + /** + * Appends the specified task to the end of this list + * @param t task to be appended to this list + */ public void add(Task t) { taskList.add(t); } + /** + * Removes the task at the specified position in this list. Shifts any subsequent tasks to the left (subtracts one from their indices). + * + * @param index the index of the task to be removed + * @return the task that was removed from the list + */ public Task remove(int index) { return taskList.remove(index); } + /** + * return task list + * + * @return task list + */ public List asList() { return taskList; } From d3ce9dcd67df015dc4a72b020cd16edfaa7d24f6 Mon Sep 17 00:00:00 2001 From: ivanng Date: Sun, 21 Sep 2025 22:08:06 +0800 Subject: [PATCH 12/26] Add find command --- src/main/java/faith/logic/Parser.java | 8 ++++- .../java/faith/logic/command/FindCommand.java | 29 +++++++++++++++++++ src/main/java/faith/model/task/Task.java | 5 ++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/main/java/faith/logic/command/FindCommand.java diff --git a/src/main/java/faith/logic/Parser.java b/src/main/java/faith/logic/Parser.java index 6ebde6e7bf..d8fe98413a 100644 --- a/src/main/java/faith/logic/Parser.java +++ b/src/main/java/faith/logic/Parser.java @@ -48,7 +48,13 @@ public static Command parse (String input) throws FaithException { if (desc.isEmpty() || from.isEmpty() || to.isEmpty()) throw new FaithException(" Deadline needs description, /from and /to."); return new AddEventCommand(desc, from, to); } - + if (s.startsWith("find ")) { + String keyword = s.substring(5).trim(); + if (keyword.isEmpty()) { + throw new FaithException(" Find keywords cannot be empty."); + } + return new FindCommand(keyword); + } throw new FaithException(" Sorry, I don't understand."); } diff --git a/src/main/java/faith/logic/command/FindCommand.java b/src/main/java/faith/logic/command/FindCommand.java new file mode 100644 index 0000000000..88e3e9fc02 --- /dev/null +++ b/src/main/java/faith/logic/command/FindCommand.java @@ -0,0 +1,29 @@ +package faith.logic.command; + +import faith.io.Storage; +import faith.io.Ui; +import faith.model.TaskList; +import faith.model.task.Task; + +public class FindCommand extends Command { + private String keyword; + + public FindCommand(String keyword) { + this.keyword = keyword; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) { + TaskList findList = new TaskList(); + for (int i = 0; i < tasks.size(); i++) { + Task currentTask = tasks.get(i); + if (currentTask.getDescription().toLowerCase().contains(keyword.toLowerCase())) { + findList.add(currentTask); + } + } + ui.show(" Here are the matching tasks in your list:"); + for (int i = 0; i < findList.size(); i++) { + ui.show(" " + (i + 1) + "." + findList.get(i)); + } + } +} \ No newline at end of file diff --git a/src/main/java/faith/model/task/Task.java b/src/main/java/faith/model/task/Task.java index 10fe9686c0..c0f005623e 100644 --- a/src/main/java/faith/model/task/Task.java +++ b/src/main/java/faith/model/task/Task.java @@ -9,6 +9,11 @@ public Task(String description) { this.description = description; this.isDone = false; } + + public String getDescription() { + return this.description; + } + public void markDone() { this.isDone = true; } From 16293888c57a21446f77ac113ba3a98a12d092c1 Mon Sep 17 00:00:00 2001 From: ivanng Date: Mon, 22 Sep 2025 01:32:58 +0800 Subject: [PATCH 13/26] nothing but for branch-Level-7 --- src/main/java/faith/model/TaskList.java | 29 +++++++++++++------------ 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/faith/model/TaskList.java b/src/main/java/faith/model/TaskList.java index 4e6819c038..6bfcc29eab 100644 --- a/src/main/java/faith/model/TaskList.java +++ b/src/main/java/faith/model/TaskList.java @@ -9,23 +9,23 @@ public class TaskList { private final ArrayList taskList; /** - * Returns a new empty task list + * Returns a new empty task list. */ public TaskList() { this.taskList = new ArrayList<>(); } /** - * Constructs a task list from given list + * Constructs a task list from given list. * - * @param initial returns a task list constructed with given list + * @param initial returns a task list constructed with given list. */ public TaskList(List initial) { this.taskList = new ArrayList<>(initial); } /** - * Returns the number of tasks in the list + * Returns the number of tasks in the list. * * @return the number of tasks in the list. */ @@ -34,36 +34,37 @@ public int size() { } /** - * Returns the task at the specified position in this list - * @param index index of the task to return - * @return the task at the specified position in this list + * Returns the task at the specified position in this list. + * @param index index of the task to return. + * @return the task at the specified position in this list. */ public Task get(int index) { return taskList.get(index); } /** - * Appends the specified task to the end of this list - * @param t task to be appended to this list + * Appends the specified task to the end of this list. + * @param t task to be appended to this list. */ public void add(Task t) { taskList.add(t); } /** - * Removes the task at the specified position in this list. Shifts any subsequent tasks to the left (subtracts one from their indices). + * Removes the task at the specified position in this list. + * Shifts any subsequent tasks to the left (subtracts one from their indices). * - * @param index the index of the task to be removed - * @return the task that was removed from the list + * @param index the index of the task to be removed. + * @return the task that was removed from the list. */ public Task remove(int index) { return taskList.remove(index); } /** - * return task list + * return task list. * - * @return task list + * @return task list. */ public List asList() { return taskList; From fa8079d5bcd9bc45f4170c38e7a8deefa32a3eec Mon Sep 17 00:00:00 2001 From: ivanng Date: Mon, 22 Sep 2025 01:43:23 +0800 Subject: [PATCH 14/26] standardize code to the code standard --- .../java/faith/exception/FaithException.java | 2 +- .../logic/command/AddDeadlineCommand.java | 4 +-- .../faith/logic/command/AddEventCommand.java | 6 ++-- .../java/faith/logic/command/Command.java | 2 +- .../java/faith/logic/command/ExitCommand.java | 4 +-- .../java/faith/logic/command/ListCommand.java | 2 +- .../java/faith/logic/command/MarkCommand.java | 2 +- src/main/java/faith/model/TaskList.java | 29 ++++++++++--------- 8 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/java/faith/exception/FaithException.java b/src/main/java/faith/exception/FaithException.java index 54b2a8048f..93ab23792a 100644 --- a/src/main/java/faith/exception/FaithException.java +++ b/src/main/java/faith/exception/FaithException.java @@ -1,7 +1,7 @@ package faith.exception; /** - * checked exception for recoverable errors + * checked exception for recoverable errors. * (e.g., unscripted commands, I/O failures). */ public class FaithException extends Exception { diff --git a/src/main/java/faith/logic/command/AddDeadlineCommand.java b/src/main/java/faith/logic/command/AddDeadlineCommand.java index 64350aece5..bfed48b042 100644 --- a/src/main/java/faith/logic/command/AddDeadlineCommand.java +++ b/src/main/java/faith/logic/command/AddDeadlineCommand.java @@ -16,8 +16,8 @@ public class AddDeadlineCommand extends Command { /** * Creates a command to add a Deadline task with the given description. - * @param desc non-empty task description - * @param by deadline datetime of task (e.g., 20/9/2025 1600) + * @param desc non-empty task description. + * @param by deadline datetime of task (e.g., 20/9/2025 1600). */ public AddDeadlineCommand(String desc, String by) { this.desc = desc; diff --git a/src/main/java/faith/logic/command/AddEventCommand.java b/src/main/java/faith/logic/command/AddEventCommand.java index 6e4dfd76ea..22b8bc7759 100644 --- a/src/main/java/faith/logic/command/AddEventCommand.java +++ b/src/main/java/faith/logic/command/AddEventCommand.java @@ -16,9 +16,9 @@ public class AddEventCommand extends Command { /** * Creates a command to add a Event task with given description, start time and end time. - * @param desc the task description - * @param from the start time of the event task - * @param to the end time of the event task + * @param desc the task description. + * @param from the start time of the event task. + * @param to the end time of the event task. */ public AddEventCommand(String desc, String from, String to) { this.desc = desc; diff --git a/src/main/java/faith/logic/command/Command.java b/src/main/java/faith/logic/command/Command.java index 4983a867b1..33a3ba63f2 100644 --- a/src/main/java/faith/logic/command/Command.java +++ b/src/main/java/faith/logic/command/Command.java @@ -22,7 +22,7 @@ public abstract class Command { /** * - * @return true if it is an exit command, false otherwise + * @return true if it is an exit command, false otherwise. */ public boolean isExit() { return false; diff --git a/src/main/java/faith/logic/command/ExitCommand.java b/src/main/java/faith/logic/command/ExitCommand.java index 0650f0d154..ea2003e38d 100644 --- a/src/main/java/faith/logic/command/ExitCommand.java +++ b/src/main/java/faith/logic/command/ExitCommand.java @@ -11,14 +11,14 @@ public class ExitCommand extends Command { /** * - * @return always true because this is an exit command + * @return always true because this is an exit command. */ public boolean isExit() { return true; } /** - * Executes: prints the goodbye message + * Executes: prints the goodbye message. */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { diff --git a/src/main/java/faith/logic/command/ListCommand.java b/src/main/java/faith/logic/command/ListCommand.java index 8c641626b6..d1ceb79f62 100644 --- a/src/main/java/faith/logic/command/ListCommand.java +++ b/src/main/java/faith/logic/command/ListCommand.java @@ -5,7 +5,7 @@ import faith.model.TaskList; /** - * Print the task list in their natural order + * Print the task list in their natural order. */ public class ListCommand extends Command { diff --git a/src/main/java/faith/logic/command/MarkCommand.java b/src/main/java/faith/logic/command/MarkCommand.java index 86094605e8..47789347f3 100644 --- a/src/main/java/faith/logic/command/MarkCommand.java +++ b/src/main/java/faith/logic/command/MarkCommand.java @@ -7,7 +7,7 @@ import faith.model.task.Task; /** - * Mark a task as done by its displaying index + * Mark a task as done by its displaying index. */ public class MarkCommand extends Command { diff --git a/src/main/java/faith/model/TaskList.java b/src/main/java/faith/model/TaskList.java index 4e6819c038..6bfcc29eab 100644 --- a/src/main/java/faith/model/TaskList.java +++ b/src/main/java/faith/model/TaskList.java @@ -9,23 +9,23 @@ public class TaskList { private final ArrayList taskList; /** - * Returns a new empty task list + * Returns a new empty task list. */ public TaskList() { this.taskList = new ArrayList<>(); } /** - * Constructs a task list from given list + * Constructs a task list from given list. * - * @param initial returns a task list constructed with given list + * @param initial returns a task list constructed with given list. */ public TaskList(List initial) { this.taskList = new ArrayList<>(initial); } /** - * Returns the number of tasks in the list + * Returns the number of tasks in the list. * * @return the number of tasks in the list. */ @@ -34,36 +34,37 @@ public int size() { } /** - * Returns the task at the specified position in this list - * @param index index of the task to return - * @return the task at the specified position in this list + * Returns the task at the specified position in this list. + * @param index index of the task to return. + * @return the task at the specified position in this list. */ public Task get(int index) { return taskList.get(index); } /** - * Appends the specified task to the end of this list - * @param t task to be appended to this list + * Appends the specified task to the end of this list. + * @param t task to be appended to this list. */ public void add(Task t) { taskList.add(t); } /** - * Removes the task at the specified position in this list. Shifts any subsequent tasks to the left (subtracts one from their indices). + * Removes the task at the specified position in this list. + * Shifts any subsequent tasks to the left (subtracts one from their indices). * - * @param index the index of the task to be removed - * @return the task that was removed from the list + * @param index the index of the task to be removed. + * @return the task that was removed from the list. */ public Task remove(int index) { return taskList.remove(index); } /** - * return task list + * return task list. * - * @return task list + * @return task list. */ public List asList() { return taskList; From cd31aead2f6e25c234fc14b8c401acf05226ee99 Mon Sep 17 00:00:00 2001 From: ivanng Date: Fri, 26 Sep 2025 00:23:46 +0800 Subject: [PATCH 15/26] Add GUI --- build.gradle | 17 ++++++- src/main/java/faith/Faith.java | 29 ++++++++++++ src/main/java/faith/FaithApp.java | 23 +++++++++ src/main/java/faith/Launcher.java | 9 ++++ src/main/java/faith/io/BufferedUi.java | 35 ++++++++++++++ src/main/java/faith/ui/DialogBox.java | 60 ++++++++++++++++++++++++ src/main/java/faith/ui/MainWindow.java | 46 ++++++++++++++++++ src/main/resources/images/DaUser.png | Bin 0 -> 148149 bytes src/main/resources/images/chatbot.png | Bin 0 -> 85868 bytes src/main/resources/view/DialogBox.fxml | 22 +++++++++ src/main/resources/view/MainWindow.fxml | 44 +++++++++++++++++ 11 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 src/main/java/faith/FaithApp.java create mode 100644 src/main/java/faith/Launcher.java create mode 100644 src/main/java/faith/io/BufferedUi.java create mode 100644 src/main/java/faith/ui/DialogBox.java create mode 100644 src/main/java/faith/ui/MainWindow.java create mode 100644 src/main/resources/images/DaUser.png create mode 100644 src/main/resources/images/chatbot.png create mode 100644 src/main/resources/view/DialogBox.fxml create mode 100644 src/main/resources/view/MainWindow.fxml diff --git a/build.gradle b/build.gradle index c8356e9f9a..770e4df969 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,21 @@ repositories { } dependencies { + String javaFxVersion = '17.0.7' + + 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' + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0' } @@ -28,7 +43,7 @@ test { } application { - mainClass.set("faith.Faith") + mainClass.set("faith.Launcher") } shadowJar { diff --git a/src/main/java/faith/Faith.java b/src/main/java/faith/Faith.java index b29b7207ad..ea1ac1625c 100644 --- a/src/main/java/faith/Faith.java +++ b/src/main/java/faith/Faith.java @@ -1,6 +1,7 @@ package faith; import faith.exception.*; +import faith.io.BufferedUi; import faith.io.Storage; import faith.io.Ui; import faith.logic.Parser; @@ -32,6 +33,34 @@ public Faith(String filePath) { } } + public String getResponse(String input) { + /*try { + Command c = Parser.parse(input); + c.execute(tasks, ui, storage); + if (c.isExit()) { + return "Bye. Hope to see you again soon!"; + } + return "OK."; + } catch (FaithException e) { + return e.getMessage(); + } catch (Exception e) { + return "Unexpected error: " + e.getMessage(); + }*/ + BufferedUi bui = new BufferedUi(); + try { + Command c = Parser.parse(input); + c.execute(tasks, bui, storage); // <— run with buffered UI, not the console Ui + String reply = bui.drain(); + if (reply.isEmpty()) reply = "OK."; + return reply; + } catch (FaithException e) { + bui.showError(e.getMessage()); + return bui.drain(); + } catch (Exception e) { + return "Unexpected error: " + e.getMessage(); + } + } + /** * Runs the main event loop: * reads commands, executes them, handles errors, and decides when to exit. diff --git a/src/main/java/faith/FaithApp.java b/src/main/java/faith/FaithApp.java new file mode 100644 index 0000000000..a3128ca30e --- /dev/null +++ b/src/main/java/faith/FaithApp.java @@ -0,0 +1,23 @@ +package faith; + +import faith.ui.MainWindow; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class FaithApp extends Application { + private Faith faith = new Faith("data/tasks.txt"); + + @Override + public void start(Stage stage) throws Exception { + FXMLLoader fxmlLoader = new FXMLLoader(FaithApp.class.getResource("/view/MainWindow.fxml")); + Scene scene = new Scene(fxmlLoader.load()); + MainWindow controller = fxmlLoader.getController(); + controller.setFaith(faith); + + stage.setTitle("Faith"); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/main/java/faith/Launcher.java b/src/main/java/faith/Launcher.java new file mode 100644 index 0000000000..14c3205fca --- /dev/null +++ b/src/main/java/faith/Launcher.java @@ -0,0 +1,9 @@ +package faith; + +import javafx.application.Application; + +public class Launcher { + public static void main(String[] args) { + Application.launch(FaithApp.class, args); + } +} diff --git a/src/main/java/faith/io/BufferedUi.java b/src/main/java/faith/io/BufferedUi.java new file mode 100644 index 0000000000..f3a459e5fe --- /dev/null +++ b/src/main/java/faith/io/BufferedUi.java @@ -0,0 +1,35 @@ +package faith.io; + +public class BufferedUi extends Ui { + private final StringBuilder sb = new StringBuilder(); + + @Override + public void showWelcome() { + sb.append("Hello! I'm Faith\nWhat can I do for you?\n"); + } + @Override + public void showGoodbye() { + sb.append("Bye. Hope to see you again soon!\n"); + } + @Override + public void showLine() {} // no divider in GUI (or append one if you like) + @Override + public void show(String message) { + sb.append(message).append('\n'); + } + @Override + public void showError(String message) { + sb.append(message).append('\n'); + } + @Override + public void showLoadingError() { + sb.append("Oops, I couldn't load your tasks. Starting fresh.\n"); + } + + /** Returns accumulated text and clears the buffer. */ + public String drain() { + String out = sb.toString().trim(); + sb.setLength(0); + return out; + } +} diff --git a/src/main/java/faith/ui/DialogBox.java b/src/main/java/faith/ui/DialogBox.java new file mode 100644 index 0000000000..fe60a476b9 --- /dev/null +++ b/src/main/java/faith/ui/DialogBox.java @@ -0,0 +1,60 @@ +package faith.ui; + +import java.io.IOException; +import java.util.Collections; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + +/** + * Represents a dialog box consisting of an ImageView to represent the speaker's face + * and a label containing text from the speaker. + */ +public class DialogBox extends HBox { + @FXML + private Label dialog; + @FXML + private ImageView displayPicture; + + private DialogBox(String text, Image img) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(MainWindow.class.getResource("/view/DialogBox.fxml")); + fxmlLoader.setController(this); + fxmlLoader.setRoot(this); + fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + } + + dialog.setText(text); + displayPicture.setImage(img); + } + + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + Collections.reverse(tmp); + getChildren().setAll(tmp); + setAlignment(Pos.TOP_LEFT); + } + + public static DialogBox getUserDialog(String text, Image img) { + return new DialogBox(text, img); + } + + public static DialogBox getFaithDialog(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/faith/ui/MainWindow.java b/src/main/java/faith/ui/MainWindow.java new file mode 100644 index 0000000000..8f97cf143b --- /dev/null +++ b/src/main/java/faith/ui/MainWindow.java @@ -0,0 +1,46 @@ +package faith.ui; + +import faith.Faith; +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; + +public class MainWindow extends AnchorPane { + @FXML + private ScrollPane scrollPane; + @FXML + private VBox dialogContainer; + @FXML + private TextField userInput; + @FXML + private Button sendButton; + + private Faith faith; + + private Image userImage = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); + private Image faithImage = new Image(this.getClass().getResourceAsStream("/images/chatbot.png")); + + @FXML + public void initialize() { + scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); + } + + public void setFaith(Faith f) { + faith = f; + } + + @FXML + private void handleUserInput() { + String input = userInput.getText(); + String response = faith.getResponse(input); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(input, userImage), + DialogBox.getFaithDialog(response, faithImage) + ); + userInput.clear(); + } +} diff --git a/src/main/resources/images/DaUser.png b/src/main/resources/images/DaUser.png new file mode 100644 index 0000000000000000000000000000000000000000..e6bcce091410322840e86d6f7caaf6c919bf74cf GIT binary patch literal 148149 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 z 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

1$T2K(I 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 T8Ez*60lp-~ + + + + + + + + + + + + + diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml new file mode 100644 index 0000000000..80690a365d --- /dev/null +++ b/src/main/resources/view/MainWindow.fxml @@ -0,0 +1,44 @@ + + + + + + + + + + + +