From 65f72a8d7407cfc1d4ded97e87a8cbbbe6d16d8b Mon Sep 17 00:00:00 2001 From: Jeffry Lum <22460123+j-lum@users.noreply.github.com> Date: Tue, 6 Aug 2019 15:24:53 +0800 Subject: [PATCH 01/36] Add support for Gradle workflow --- build.gradle | 16 +++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55190 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 172 +++++++++++++++++++++++ gradlew.bat | 84 +++++++++++ settings.gradle | 1 + 6 files changed, 278 insertions(+) create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..e5b8ce7e49 --- /dev/null +++ b/build.gradle @@ -0,0 +1,16 @@ +plugins { + id 'java' + id 'application' +} + +group 'seedu.duke' +version '0.1.0' + +repositories { + mavenCentral() +} + +application { + // Change this to your main class. + mainClassName = "seedu.duke.Duke" +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..87b738cbd051603d91cc39de6cb000dd98fe6b02 GIT binary patch literal 55190 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 z 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 \(.*\)$'` + 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"' + +# 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, switch paths to Windows format before running java +if $cygwin ; 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=$((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" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..6d57edc706 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@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 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" + +@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/settings.gradle b/settings.gradle new file mode 100644 index 0000000000..d1e92fe5db --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'duke' From 0112efe4f745ecd1985e5362f85e8ddc5facb02c Mon Sep 17 00:00:00 2001 From: Jeffry Lum <22460123+j-lum@users.noreply.github.com> Date: Mon, 12 Aug 2019 18:09:24 +0800 Subject: [PATCH 02/36] Add sample checkstyle configuration Add toolVersion block in to Gradle code sample to prevent errors. --- config/checkstyle/checkstyle.xml | 257 +++++++++++++++++++++++++++++++ tutorials/gradleTutorial.md | 7 +- 2 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 config/checkstyle/checkstyle.xml diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000000..b1a57ba6c0 --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tutorials/gradleTutorial.md b/tutorials/gradleTutorial.md index d16b72179a..fd6b043bf7 100644 --- a/tutorials/gradleTutorial.md +++ b/tutorials/gradleTutorial.md @@ -74,11 +74,16 @@ plugins { id 'application' id 'checkstyle' } + +checkstyle { + toolVersion = '8.23' +} + // ... ``` Checkstyle expects configuration files for checkstyle to be in `./config/checkstyle/` by convention. -For example, you can copy [these files from se-edu/addressbook-level3](https://github.com/se-edu/addressbook-level3/blob/master/config/checkstyle/) to your project. +A sample checkstyle rule configuration is provided in the branch. The plugin adds a few _tasks_ to your project. Run `gradlew checkstyleMain checkstyleTest` to verify that you have set up Checkstyle properly (the command will check your main code and test code against the style rules). From cfd6da79bab287c74d4b7f5666e61e686674fb29 Mon Sep 17 00:00:00 2001 From: Jeffry Lum <22460123+j-lum@users.noreply.github.com> Date: Sun, 18 Aug 2019 23:25:53 +0800 Subject: [PATCH 03/36] Change file mode on `gradle` to be executable --- gradlew | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 gradlew diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From a3ca5a4e3fe35013f5690cacd168b19f7370a013 Mon Sep 17 00:00:00 2001 From: Jeffry Lum <22460123+j-lum@users.noreply.github.com> Date: Wed, 21 Aug 2019 00:32:40 +0800 Subject: [PATCH 04/36] Add configuration for console applications Gradle defaults to an empty stdin which results in runtime exceptions when attempting to read from `System.in`. Let's add some sensible defaults for students who may still need to work with the standard input stream. --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index e5b8ce7e49..ce97c7ba2e 100644 --- a/build.gradle +++ b/build.gradle @@ -14,3 +14,7 @@ application { // Change this to your main class. mainClassName = "seedu.duke.Duke" } + +run { + standardInput = System.in +} \ No newline at end of file From c4678f7d8b2274a013b5a9c920fcfd6981f2122a Mon Sep 17 00:00:00 2001 From: Jeffry Lum <22460123+j-lum@users.noreply.github.com> Date: Fri, 20 Sep 2019 16:05:59 +0800 Subject: [PATCH 05/36] JavaFX tutorial: Support cross-platform JARs The OpenJFX plugin expects applications to be modular and bundled with jlink, resulting in fat jars that are not cross-platform. Let's manually include the required dependencies so that shadow can package them properly. --- tutorials/javaFxTutorialPart1.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/tutorials/javaFxTutorialPart1.md b/tutorials/javaFxTutorialPart1.md index 2f63317346..48691f7fa1 100644 --- a/tutorials/javaFxTutorialPart1.md +++ b/tutorials/javaFxTutorialPart1.md @@ -27,18 +27,25 @@ A JavaFX application is like a play you are directing. Instead of creating props Update your `build.gradle` to include the following lines: ```groovy -plugins { - id 'java' - id 'org.openjfx.javafxplugin' version '0.0.7' -} - repositories { mavenCentral() } -javafx { - version = "11.0.2" - modules = [ 'javafx.controls', 'javafx.fxml' ] +dependencies { + String javaFxVersion = '11' + + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' } ``` From 9bef9af07a533e56d34f4471b65a832da3bd0613 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 10:09:23 +0800 Subject: [PATCH 06/36] Level-1 --- src/main/java/Duke.class | Bin 0 -> 1456 bytes src/main/java/Duke.java | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Duke.class diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class new file mode 100644 index 0000000000000000000000000000000000000000..93e8a9e62ea1594bf516869e6aa1b6fca5d36047 GIT binary patch literal 1456 zcmaJ>|85gU5dPM7e9mzpU;-qxzy<<1B;okc9~6fKFoYPKfaC~78|k#M7jpP~>-zSh zTJnRmPeA`Ie*}q2eSkg%&w-$2_8ds8Sgdusvoqh!elxS{fB$>?4}j}+ zG9^`)45Jl4l&f)bL$=q%MnIZOQ}`jnvBEEvmtsq}fe2r?Ro(W(7e(VZQq`i?SP`uR zZ{aF~T~%?rCYOBUKYTZC$VU=syA~!PhOsDcTH@UuY2CCN2Ya;B(G~b_z~9` z4&6~oN4hOqD^hQ&dNi8FPdVIhP{h22n+_JR$dFp#4sK!5!EM~33T||ygA(pC%&cvS zu)#Yj=Fe4|#}So@Cl#=l#g^oPhki}+y68;OnfFXRGR90t?^gHG#!Fe#eX3r;`&FGt z%O;UA?K#?Oj<4Ku*orm5rDzrz#tQ=trg3Q%(;2&tkEx}f9c?V(K0{$y27%(w+p1}^ zr<+1^Y8Wr`I_W4olciRa3zg(}Q#52rg*Bm{`g)V3NQ+QM4Ci+!^j)0&cZuOhQUOX~ z4-*EfWq1W9$3cN8k)Z@Zg$(6yl+jpWdQkMN{52K<@#zcGD|K=DX9`mbR3t4dn`T!S zrgj_Rhg+&4cW!+z$t6+Ks@<`$N>8bxR3mONIAwF4OM!?YNhkfjm+(%E-o08DVLg!1 zRL`-vpYI+`pW|AmB?rLwzRk}m?GI5BK~VLzELwQPaBg3IgSauA`Z^AiI7I(RW~9K( z6Q_BMb|-0Nv<_W-1NIjQRC=1Ti87609K&&v4fIc>k)id$-$*@sjr1F2D*2(6*T~Mk zg#~OQM{<668}`gL4y?}Qoo$T#f$S@ckYSGOul|2$AO}e#$f!9lm7I4K4#`6}K!FaD zd;+65LzFKN>B~g-8Zo#*TyA2V-s1$ygcv7}F{D4@goTuai4Pd3`8{z?lhs821`lbq UiGLX@ctCz "); + String input = scanner.next(); + if (input.equals("bye")) { + break; + } else { + System.out.println(input); + } + } + + System.out.println("Thank you for using Duke.\nHave a nice day!\n"); + scanner.close(); } } From edff64565e1766dfc2f37c80f715f0480c501904 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 10:29:42 +0800 Subject: [PATCH 07/36] Level-2 --- src/main/java/Duke.class | Bin 1456 -> 1587 bytes src/main/java/Duke.java | 7 +++++-- src/main/java/Todo.class | Bin 0 -> 1242 bytes src/main/java/Todo.java | 23 +++++++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Todo.class create mode 100644 src/main/java/Todo.java diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 93e8a9e62ea1594bf516869e6aa1b6fca5d36047..ef8a5cd2f531bb36e54c18b8359002aaa37a4058 100644 GIT binary patch delta 656 zcmW-dO;1x%5Qd*~KYA~>w-#E;rvgPmpdk2-D5xNc3MlfSU`(vE225=YEe02c-$3q0 z6ZhS?0F5Pq#GM;gu8se|e_#wchjVh~%sVshnRm{1__P1~`@!BY*D`W~=zc=Quaa~b8S}2r? zrM2{{scdPbkSRt(jJk~Z++f_{rq3-V6vjxK&uu1r?r>LOK6{h(nPf_y%dHkmIydce zkMW?a2F&|31V7a~bA|`Oy0IN`^VyBkvsO<`V7>QuaOd5%G>B~scC5P1CW(avfk_q3 z9Mu^?zXaQIzud=I{DirSHMx(yxJzg%=1hOW?b{Oq6+H1{;R=4LLS)Elv|>jpMBfuC z(vWl&1_qz8VP`-MmYP$Q(>Fzn*AMJMf&bPn2Ux8_Ehjequa5%*gj)r&) z1RQf0Y?6xs70V?q8)huC%qhIt0m~KUELWLV==GO% z%QY6_@2ad9$;ZZfqpx!#e&=obiD&hVR(wxaGX8_7jb`0&)3vL{dwN8z#=rC@bt`_G zsOEDrs5>4?ROQ9?y!H#P4#-nd0BBMaIOqsL?*%8sFMq+iyMz8rq8j3uws4Em?vZe^pRzdob0%p zvZ$LB2^A4DLy<*U_L5{2rKAV_hdzU6=>1Jm?7oQB!n)S|tcVX~fF)`yOWkq7f#4Hz GhyDW#Busw* diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 593b9badcc..812ebd6a96 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -3,6 +3,7 @@ public class Duke { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); + Todo todo = new Todo(); String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" @@ -13,11 +14,13 @@ public static void main(String[] args) { while(true) { System.out.print("> "); - String input = scanner.next(); + String input = scanner.nextLine(); if (input.equals("bye")) { break; + } else if (input.equals("list")) { + System.out.print(todo); } else { - System.out.println(input); + System.out.println(todo.add(input)); } } diff --git a/src/main/java/Todo.class b/src/main/java/Todo.class new file mode 100644 index 0000000000000000000000000000000000000000..50e3e268edafcf3ba19840cd1fee04c3ffd0877b GIT binary patch literal 1242 zcma)6TTc@~6#k|yY`boumYbJ?pn$yq#XC?yu?ewB(T5U=`r^<|%F<=G*`1Q$vp>RT zUwqX>A;HA>?0@i&n0PtUuDXQA_;O~?neY3~WoGuvkK<1O7O34e2BpvKn$4W*8!t=}Cs6@-E-!`Ia=T{F>|XgEEB+46%w?x4CS& zf+5olv)l<<+^**<(lzaRVU>8j%cgD0Rfcdn^O&*}of;|hmrYwdZ0&6ecav{h6bbWM zjbS={TE)*66lRD@r;~(XFx?dquSi~PZ1AR^K(9D0w<^|6l`XdE)SNlhsevR07zVm@ zZJ-bR28J=qkht$S(vvQ4ZV0*K)V%&)%tetmFpm)in)5YWH*f&X^x?yJiV*vO_GKt}GBaLEJoOiZ1YH z0sQYF2SUC?ky}>9l%k;F9>dhB{<_u1F!pa8Cg_sH=@~M5eRQ#CO^_GDS%m4EZXwx0 zip;ltAdx)+%YH=Y$q~XI5P8?;4w3C61kj5JG}4I@Zx|y!dxjK4w42DjM#4W8$LxGQ{5e z{F+m;A*iB;(L+`>lcdH5Fhy&Qb}mrVK0PGSmA1|N0zqae^8f$< literal 0 HcmV?d00001 diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java new file mode 100644 index 0000000000..a2b5560be2 --- /dev/null +++ b/src/main/java/Todo.java @@ -0,0 +1,23 @@ +import java.util.ArrayList; + +public class Todo { + private ArrayList list; + + public Todo() { + this.list = new ArrayList(); + } + + public String add(String task) { + this.list.add(task); + return "added: " + task; + } + + @Override + public String toString() { + String output = ""; + for (int i = 0; i < list.size(); i++) { + output = output + (i + 1) + ". "+ list.get(i) + "\n"; + } + return output; + } +} From d3035228eb8d90a2209c30364387cadfec90cc50 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 11:00:13 +0800 Subject: [PATCH 08/36] Level-3 --- src/main/java/Duke.class | Bin 1587 -> 1864 bytes src/main/java/Duke.java | 3 +++ src/main/java/Task.class | Bin 0 -> 1237 bytes src/main/java/Task.java | 26 ++++++++++++++++++++++++++ src/main/java/Todo.class | Bin 1242 -> 1402 bytes src/main/java/Todo.java | 15 ++++++++++----- 6 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 src/main/java/Task.class create mode 100644 src/main/java/Task.java diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index ef8a5cd2f531bb36e54c18b8359002aaa37a4058..8fb54ee074a790735e14b888a0e29253d7bd6011 100644 GIT binary patch delta 728 zcmXAm%}*0i6vcn9(=x*_5h%9MB3KXw1O*iZ5m6D9B8Y~wCJ>&glIH4rO4A^DLiX(jt+zKDqm2tPJ=F!1}++O8(dO+kHVJ?dR4w+a+PbU zQJ)Ie4f<8t4V{}h;?~C8gc#V^t=4L&-S`zPNm>kY+oFb{O|iZ{%pE~lUoKa03we8G z*eT5CQf_GxBL;UZ?lGz}W^tc!L7+Eb@qlrQhddH!Gi#2;V>NJ+X?{S%8xp30(BE?Xr#Ofsc2ZSf4-VumS;Sw_8|qFqZ->*;|v zn#0`A`#^~(D|T0Bq|b$HS`ckYCcSAbqD7kab4~f8{oHQL*x7VjGFx!cPF`TF*m>8H z&}-K!>ywgLw)0EH6WsII$)Lkf8+#b`Fxcxb z;$buBvQH=X2huq1ae#v^IgNSUcF5(hM?Xhgj_TwwJ#*aUgf31voOC#~@w%u^Z~W>V z?jfblRxbI%&9)!b4kTwANGJ52gaQSj;EOq5Ztmd|od(J@`CHR_G^@aaOOu~IA7 zlL@9>&ihyVZi4yvp#cNQJ4>3RD9-HP*~N~dPCQ)`dnis${Ts}I;p5+ zyfGKKvDGx%RksT~8BH5IwhFyDbZ?3kZl}t5DlTK?M~lnqUplgpY?dm`HrMv^TJHyW8yEV)z}t zVB)*4n207k_yhbI{t)BrZh?|ErpfHyGc#w-%+Brazh}PyEa6281Gt$)3b%YSrQ)`V ztcsjY?wJ%pc^wP|1w{o0gDSb#*yK&YpsyeBLq2bDdvCrXUDMtxF(gdywPTZ)y{E&9 zX`AvT!)T#5wz$m@D?4?HO|P4_*lag{mRF?{YGO!LoVHsNYi2-PCH-^0a19yU*Pvlg!w}L8(LY~41@@RBzvZ;N zT(-JzdfAWM%W}&VyndAR3y6A_kUDjlW5~R69O+4yw>E^_cj{g`fd?w)G|c0nh7pXa zc;p`*Q@4I?O1T`{*6x9*$t%#g>S&?3ox%bZ874Qvs?t~E&;Pvsa+WcSHF-mn9lOTm zJ5%n{nj>|Q|~v*_zwHvQ!VvL=#B65H55GYdwk9?ec7C8A36=uS&dNO8m~#m zJyPIr%DUq;+ARj{t!)dpY;n&Mr24p9M291s?Hg{_E#XaviKSj;UC5Qh>QPJd3E%08 z55GjIySENSnOj!Hl%k|yg<+nrv4v?9Nnw|x?&Of(Fz7{w1xDH(RIt<8d?7e zE(8%k+V}}(%$_1*L{Aa@MlOb7vN|OIak2>{q0lO;M@QAFDKj_7Bodh9FW zdi;c-NI;MX+yl5yh=Pc=s$h(u@e77E3iKH!LWYE%I5A?RfsT{i3`qrhjYmI0W~B_hD2dkp{Q|0aU&2qNqo0vh|#6`@S zNFdDs6PGaO!)3|LOJl3vVhC--1Z>ujz!S7isaq3!^jwH}Ba zmWW-!0z=}C`zq6+#xrY9JG0`t&5YP%c@g5{ezm>6MMEe>t18Oe7E{WoXmH(oRW@=> zY;lX-5bybCwaQQs-+4j2R`L@8+9zl`95g1Ka)BJ9Q0Yz!pcoZDl zf;3W&&LZ_RPN)g~8y@;L$Jjm*3Niy*7Rz)R^!OsKV~Ms< Oq&z?cEy7BJcx1ZhZPVdJnAA2spx=$9#Zh zE=|ZOTNQKiTJkB|=8O$X9+e!5WslfnWpJyuRBb*?9w+sKe!Ej|^m@sYW_!QC@dxZA zd#(CTzt`St4a{AWSM@DLu+u&0-QT^@?(8bkx4RFzt5zW-M_!Ttk6K8EsgMFS^HLSo zR(2b8oacffJEs1#)90d{yJSA9$V};(iOZ}je6y`flkR@|sqA+u)te^K zMe{;e2cKtsk1Lk4X};*H+BS~!&b_WEo1#-T-<{H8D2GB0psgjzS?M%KaikXi5|5dR zyYTF|;2A+-0vAtaeR(S|Z6^d>5tf#mU4Dxj4@upLM>5JA!4#Hl&kd8<-%!kO;xDr$ zdRDiV^P0|PWcfq!ko2Pu1S28Se6H2&U*BS@tH-(pQc_#TIdPw-EIF2! oSwTbe4^ke1IuzXD list; + private ArrayList list; public Todo() { - this.list = new ArrayList(); + this.list = new ArrayList(); } - public String add(String task) { + public String add(String taskName) { + Task task = new Task(taskName); this.list.add(task); - return "added: " + task; + return "New task has been added: " + taskName; + } + + public String markDone(int taskID) { + return list.get(taskID - 1).markDone(); } @Override public String toString() { String output = ""; for (int i = 0; i < list.size(); i++) { - output = output + (i + 1) + ". "+ list.get(i) + "\n"; + output = output + (i + 1) + ". " + list.get(i) + "\n"; } return output; } From c0e4482963ff6d3591d0fad0c1995e40010dbfba Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 12:17:07 +0800 Subject: [PATCH 09/36] Level-4 --- src/main/java/Deadline.class | Bin 0 -> 222 bytes src/main/java/Deadline.java | 5 ++++ src/main/java/Duke.class | Bin 1864 -> 2722 bytes src/main/java/Duke.java | 45 ++++++++++++++++++++++++++----- src/main/java/DukeList.class | Bin 0 -> 2044 bytes src/main/java/DukeList.java | 51 +++++++++++++++++++++++++++++++++++ src/main/java/Event.class | Bin 0 -> 216 bytes src/main/java/Event.java | 5 ++++ src/main/java/Task.class | Bin 1237 -> 1550 bytes src/main/java/Task.java | 22 ++++++++++++--- src/main/java/Todo.class | Bin 1402 -> 246 bytes src/main/java/Todo.java | 29 +++----------------- 12 files changed, 121 insertions(+), 36 deletions(-) create mode 100644 src/main/java/Deadline.class create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/DukeList.class create mode 100644 src/main/java/DukeList.java create mode 100644 src/main/java/Event.class create mode 100644 src/main/java/Event.java diff --git a/src/main/java/Deadline.class b/src/main/java/Deadline.class new file mode 100644 index 0000000000000000000000000000000000000000..ba0213b7047888eafc8111366c7cf0f8141e42fd GIT binary patch literal 222 zcmX^0Z`VEs1_lcTUM>b^1}=66ZgvJ9Mg}&U%)HDJJ4OZ#4WF#UvPAuy#JqI<;F6-u zymV`4Od-uMMg|t={FGEi27aH+yi~u^+@#c^ki?`Mpa@rRerZv1s#_+A!|Rfon34lj zq6adUhk=EGm63r1CI~boB(XS~L6Lz8=o}DW1VW%1Ajt;gsQ}q5K$=5KTSj*~1LH=p Y3U(mL1=PU+)WZ&x2O0=uGcj-i0QaaY7ytkO literal 0 HcmV?d00001 diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 0000000000..4546b5222f --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,5 @@ +public class Deadline extends Task { + public Deadline(String newTask, char taskType, String taskTime) { + super(newTask, taskType, taskTime); + } +} diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 8fb54ee074a790735e14b888a0e29253d7bd6011..a1ab8c7b6e533c3c5bab7584c776a11b13469cf3 100644 GIT binary patch delta 1460 zcmZWpU2qds6#j0K&EABiqzi3LOX;Ril9Zpc6a;dqtfHGw&y zf{CRhOmL(*G8~3VYq_aOjwy~T$0@OVPDWnF^zylJW-k9$muNvNL**%bPEX9**?eLo zt(&G%kYOp9!D$68C@}Ee*_@He7HucO&XkI<8AAIk%P!gledeHHPg$AbIzMJP<`m51 zjEn^ZXR*lO*`p~~!lHuL@dkr;V!=>Q!Z`+Cp7a!)#|4I_F?}JTjZPT_L(}PRTAHmF zb44v{Y75qEK@->rLu7yu&L6Cyw1kTcQpPe3(!Yc^6lfK=}s z_HJzS$8_6;aDw!S1EBq<^H$N2u_D_1xpUJOXSbc7eBZGzoFyr>eJt`GZo8R2`VZI=YPN-CpH zh~RgkY;-A!$CP@Pq7kJ;oTL;QZTGt*f0$^ST-w(}YjA0UL<^C4jjFl4&af{OAf6g2 zqcJIkC2w1jh`zS_*bI6wLcQ(WRpViQm`dE@>W!0LldCsCdam5oGEUOIg`QvNMgON4 zbM^ZEs~30m*3c4aGljx$6RFkPBBXN)(r|}pg2!#bEkvDr{>`N-^rIR>sKFS*&{2yV z_3aWi(TC80&k(^~G~x%^#E;m5U$GT`B8rEIF%RNwEt**+wy_9yux{*R2asTg(87+> z>v95ZYzDhn5glw1Np=xk>@vF9RqSEcuovxAOXE=lSJ5cLBSVtW@es9S>nhuJKfv$< o49Wi>2roUmqU=uGBp;+3a|5@iv@rJ3cmvJ%P_Eatx@%AV3(jjSSpWb4 delta 710 zcmXAn%TE(g6vltI({`rAXtB^jK^`Ixd5EZ}Ac}~H3L?r&!HO1I&Apuys>7F#1yc+BQF?G`6Ap44ThEIMpz>9ja)(WUh>nxD1k)_BgQhx58o zuMQV1`t-4jCjBPr(#x+?RhJd^sJpr{o9>^_q!ppQ)x~t{Lh@14p@K@UN5vvn90nNF z{Hnq~=B8XPqaF_qaZOR!>$N+;8QHej=8qL~6GP|5x*rYWjCWcZo~d zoTp4X@$EVpK>rN^3dBx6kaOk5>bXlo1}y}N_k2d&t=dTGT^$n-jp5( w<$M{z9coN`CIOS$Ka@!H-q!Jsj(5{kENGZFVBn5HjRg(w8R)@X4fhQ6;jU7?uc2rljYS;~ z(hzuG!$S?r0*RXK`2vHbXV$(o)9~%u%)NTuIxJCK5a=q~+m7Wo>QdlJl+Ju<&GM>+ z1?qOr+m7uo2*fkl&uF>mR*32=*^XRo>~6~XnzdP@ByLqI0+%xZG8IcilCmwMpdc;)vJrD~k*(AF$r-mH}nc_ySo0W<~dXCS{gP~Exr_(xF~?_?7LMN-l>3#C2Pxf z>xUY?rrVP1RvUW)$z{ip^;UN zPg?XNatloqty-;Y`;u?mQ-SMk`9;MhF#g|qxWCnP41(6K(L zR!8Uzr^I*A)7lGkr1cYY0Y6eX24yx)D9}w|FaLeWaD0`L8;G6JeoVuVMkUT^aYlFN zg18cBc#Wb7To2=zqA_JIbqZr+YV;W0tGVeTB$YeSbf>-%zyQA?gOt2ZH$nb0=-?md zKSd9b)5qwYOXNnFLK}DlNs`Em5e4oGz^Q)&j}v^A;4E^X=PY?uFg1XGY_m#9#QsDF%OL*XKF(8B*PHl) Zvq9gF@fDu1?QU`3%ahxb%{9lRzX5#X&4&O0 literal 0 HcmV?d00001 diff --git a/src/main/java/DukeList.java b/src/main/java/DukeList.java new file mode 100644 index 0000000000..e5d1843f48 --- /dev/null +++ b/src/main/java/DukeList.java @@ -0,0 +1,51 @@ +import java.util.ArrayList; + +public class DukeList { + private ArrayList list; + + public DukeList() { + this.list = new ArrayList(); + } + + public String add(Task task) { + this.list.add(task); + + + return "New task has been added:\n " + task + + "\nNow you have "+ list.size() + (list.size() == 1 ? " task" : " tasks") + " in the list."; + } + + + public String newTodo(char taskType, String taskName) { + Task task = new Todo(taskName, taskType); + return add(task); + } + + public String newEvent(char taskType, String taskName, String taskTime) { + Task task = new Event(taskName, taskType, taskTime); + return add(task); + } + + public String newDeadline(char taskType, String taskName, String taskTime) { + Task task = new Deadline(taskName, taskType, taskTime); + return add(task); + } + + + public String markDone(int taskID) { + return list.get(taskID - 1).markDone(); + } + + public int getSize() { + return list.size(); + } + + @Override + public String toString() { + String output = ""; + for (int i = 0; i < list.size(); i++) { + output = output + (i + 1) + ". " + list.get(i) + "\n"; + } + return output; + } +} \ No newline at end of file diff --git a/src/main/java/Event.class b/src/main/java/Event.class new file mode 100644 index 0000000000000000000000000000000000000000..07b1a48e7f0e2cbdd5ef8efd3a448f8dbfc08f68 GIT binary patch literal 216 zcmX^0Z`VEs1_lcTUM>b^1}=66ZgvJ9Mg}&U%)HDJJ4OZ#4WF#UvPAuy#JqI<;F6-u zymV`4Od-uMMg|t={FGEi27aH+yi~u^+@#c^ki?`Mpa@rRerZv1s#_+Q<64%QSE2_p zl!t+Zft8Vg6)XbOACg#{&7jD@1at@pFajY^0gz+^@>GCq79h=`r7feooq=&9SOq(f V0NG3ooB&$+De3?K literal 0 HcmV?d00001 diff --git a/src/main/java/Event.java b/src/main/java/Event.java new file mode 100644 index 0000000000..4fdec724ec --- /dev/null +++ b/src/main/java/Event.java @@ -0,0 +1,5 @@ +public class Event extends Task { + public Event(String newTask, char taskType, String taskTime) { + super(newTask, taskType, taskTime); + } +} diff --git a/src/main/java/Task.class b/src/main/java/Task.class index 266eda9cab6189f3af997f2d1d150e71109f1996..0b285619297c8395e14cb8ba768507703d75cf15 100644 GIT binary patch literal 1550 zcmaJ>+fEZv6kVsc8OlJlUJwBt5VZ^n-Y?X95jBE7Ks3?#aA+qmw#+o01BUPLMHAnB z@c|Rjga<#s&+tQx>&%o=X=9q%XU;xrud~vkHP5LX-i>l%ID@B2f7tRJg zPsOVycxkh)x24^!r(-j>Jl|7y1PX;tmQtr{;)Ot}6jT_RoA-S8+4|bD+gOszHF|nh zT(zjAS`P&d7bZHR1^Reit}e)W6k_0-Krf?~T4Hv0akk0A1oPFtSyxtSypY+i$woES zW~v|-ERbCc)*EGa&WjS!d{eqA7LMS$g?{8L9Kb;fc^tBE7&(FD?@#X|`$1sxc~B2W z?WI*Ov~^+acQUkPt-(t-ZGE3xvFWL>qN4%_9t433RYTSnT(ufh!dwP7Ox(0EgQA5& z95-=GZ*H?#Iu(ZOwdncsTeqzKaqWtr+!tBg!Cir&h4@z0N~wAOj4cEP)@0Q!1%6qo zm!4YXTd1V3Sobqs`q;G-+1KKYtsg0&`8HO&^d}vqGyyJpTmh z!Ri8k-G+}lRBYGQq$tT+ZP8P1(ZC~t(;fP{+a)cor+ekRcZ6uxHZKRy@+em-qp};ZPei;)_nuRbd9taMw$$1 zG9+|doIo6Rh`SRwNvrd3ho-*lgANd6cV$iQXB{GRv<01Grdq;aEFqIOx15wN3-j5b zbnJ=AN98-oy4bA87)yLA5|)I>l4GpJIYpr6JW7(3^Bq}D#wWeQ8b*ZeDho)GNLOqe YC9az5KD+gRg+9-HKToFUn~v0pi+5k)=B`_q{p3Pjl|RrxxFSUtR$$VckI*y(u{83#H%2fQ_7uyw7sM zp;h!DC|MY_5L|3drp>j=QRQ?)&{n#*-7}5!eSA{Q z=XMS&Red8f?c+8kTufrhMJw8DOoxXV{Vnrq7IQjp95~5c*~^Jwsibd>Wph64Sk|A$ zsH|#F)e~!ig8otc`b(A1!T|t-AO9ci7=deov9oBVhNH|z9e@`+LxOT0Mxg3Y4=f2< zs6H{?xuwfTAdBV z78^rESBx-yvlb*6f=Aj{)F96pQikXaM>_Hc#OFQq diff --git a/src/main/java/Task.java b/src/main/java/Task.java index daaefd50d6..c27aa38d8b 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,19 +1,35 @@ public class Task { private String taskName; private boolean isDone; + private char taskType; + private String taskTime; - public Task(String newTask) { + public Task(String newTask, char taskType, String taskTime) { this.taskName = newTask; this.isDone = false; + this.taskType = taskType; + this.taskTime = taskTime; } public String getStatus() { return (isDone ? "\u2713" : "\u2718"); } + public String getTaskName() { + return this.taskName; + } + + public char getTaskType() { + return this.taskType; + } + + public String getDeadline() { + return this.taskTime; + } + public String markDone() { if (this.isDone) { - return "Oops! This was already marked as done!"; + return "Oops! This task was already marked as done!"; } this.isDone = true; return "Marked this task as done: " + taskName; @@ -21,6 +37,6 @@ public String markDone() { @Override public String toString() { - return "[" + getStatus() + "] " + this.taskName; + return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName + this.taskTime; } } diff --git a/src/main/java/Todo.class b/src/main/java/Todo.class index 59d818c7eeadbcd6653a391618c57e5d17922f68..76fd997c67a72159f37629afbcc78d2021c5ae12 100644 GIT binary patch literal 246 zcmZury9&ZU5S-1!#Pf-Tm5qgvC}=AvHiDJdB-o#Ng!7R=jQ*FEVBrV&QR1Gh?!wIO zF#CADA5Q>dG<{SA98^8jJk$xLsZMnu=Ty&102h0QOTAWj!0 hMvuE5t2T4FKj^gR4(s-{_>2M;qYa-e{0!F?#0L;EFv|b{ literal 1402 zcmaJ>TTc@~7(LULZd;c7{iYQGdqKcEP(Y!GU8a@;MZ7Kj_1Gc8jtF!*Ef=cJsr4T@^Xn3mWm@8yM)3Qix~yT~VNZ)In#Nb$Jzx>U;sO z#;4*hB6x&FhW-ulIx5L;bcegqybxBDsxOS$C}Zf^<3*9Stpb;urre>KE4d|IYSFe( zm*Qf%YuaSnHQ%T{#^P(#b;c&5EW$A3;cu<3p=Z|Wpjz8CEUAL5FpQj6!n6+TqNv@B zs>u~zkhXKEVU>=}*mkkJ&!DeamT=M~?z)1UzpHmq)2Mc3m0LzhxFglT)MXoW$c4b% z;lA*ozpUeX list; - - public Todo() { - this.list = new ArrayList(); - } - - public String add(String taskName) { - Task task = new Task(taskName); - this.list.add(task); - return "New task has been added: " + taskName; - } - - public String markDone(int taskID) { - return list.get(taskID - 1).markDone(); - } - - @Override - public String toString() { - String output = ""; - for (int i = 0; i < list.size(); i++) { - output = output + (i + 1) + ". " + list.get(i) + "\n"; - } - return output; +public class Todo extends Task { + public Todo(String newTask, char taskType) { + super(newTask, taskType, ""); } } From 6eb8c6e8efb61a4ce12d1637bf1c33fb4c9d03c6 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 13:49:46 +0800 Subject: [PATCH 10/36] A-TextUiTesting --- src/main/java/Duke.class | Bin 2722 -> 2723 bytes src/main/java/Duke.java | 2 +- text-ui-test/ACTUAL.TXT | 85 ++++++++++++++++++++++++++++++++++++++ text-ui-test/EXPECTED.txt | 85 ++++++++++++++++++++++++++++++++++++++ text-ui-test/input.txt | 21 ++++++++++ text-ui-test/runtest.sh | 34 +++++++++++++++ 6 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 text-ui-test/ACTUAL.TXT create mode 100644 text-ui-test/EXPECTED.txt create mode 100644 text-ui-test/input.txt create mode 100755 text-ui-test/runtest.sh diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index a1ab8c7b6e533c3c5bab7584c776a11b13469cf3..fa8ad8e708c19b56709e755e327c9b365e898ccf 100644 GIT binary patch delta 18 ZcmZ1^x>$6B8566Te||ynW-F!)4gfc`1%m(p delta 17 YcmZ21x=3_`854_YWMbuJYo-hi05NF=6aWAK diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 2a9772ff7a..9d4d26ed7c 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -20,7 +20,7 @@ public static void main(String[] args) { } else if (input.equals("list")) { if (duke.getSize() == 0) { - System.out.println("Yay! There are no tasks in your list!"); + System.out.println("Oops! There are no tasks in your list!"); } else { System.out.println("Here are your tasks in your list:"); System.out.print(duke); diff --git a/text-ui-test/ACTUAL.TXT b/text-ui-test/ACTUAL.TXT new file mode 100644 index 0000000000..07d559051e --- /dev/null +++ b/text-ui-test/ACTUAL.TXT @@ -0,0 +1,85 @@ +Hello from + ____ _ +| _ \ _ _| | _____ +| | | | | | | |/ / _ \ +| |_| | |_| | < __/ +|____/ \__,_|_|\_\___| +What can I do for you today? +> Oops! Unknown command! + +> Oops! Unknown command! + +> Oops! Unknown command! + +> Oops! Unknown command! + +> Oops! There are no tasks in your list! + +> New task has been added: + [T] [✘] test9 +Now you have 1 task in the list. + +> New task has been added: + [T] [✘] test 3 +Now you have 2 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✘] test 3 + +> New task has been added: + [D] [✘] test4 (by: Sunday) +Now you have 3 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✘] test 3 +3. [D] [✘] test4 (by: Sunday) + +> New task has been added: + [E] [✘] test5 (at: 10/2/20 11:59am) +Now you have 4 tasks in the list. + +> New task has been added: + [T] [✘] test10 +Now you have 5 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✘] test 3 +3. [D] [✘] test4 (by: Sunday) +4. [E] [✘] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Marked this task as done: test 3 + +> Marked this task as done: test4 + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✓] test 3 +3. [D] [✓] test4 (by: Sunday) +4. [E] [✘] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Oops! This task was already marked as done! + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✓] test 3 +3. [D] [✓] test4 (by: Sunday) +4. [E] [✘] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Marked this task as done: test5 + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✓] test 3 +3. [D] [✓] test4 (by: Sunday) +4. [E] [✓] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Thank you for using Duke. +Have a nice day! + diff --git a/text-ui-test/EXPECTED.txt b/text-ui-test/EXPECTED.txt new file mode 100644 index 0000000000..07d559051e --- /dev/null +++ b/text-ui-test/EXPECTED.txt @@ -0,0 +1,85 @@ +Hello from + ____ _ +| _ \ _ _| | _____ +| | | | | | | |/ / _ \ +| |_| | |_| | < __/ +|____/ \__,_|_|\_\___| +What can I do for you today? +> Oops! Unknown command! + +> Oops! Unknown command! + +> Oops! Unknown command! + +> Oops! Unknown command! + +> Oops! There are no tasks in your list! + +> New task has been added: + [T] [✘] test9 +Now you have 1 task in the list. + +> New task has been added: + [T] [✘] test 3 +Now you have 2 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✘] test 3 + +> New task has been added: + [D] [✘] test4 (by: Sunday) +Now you have 3 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✘] test 3 +3. [D] [✘] test4 (by: Sunday) + +> New task has been added: + [E] [✘] test5 (at: 10/2/20 11:59am) +Now you have 4 tasks in the list. + +> New task has been added: + [T] [✘] test10 +Now you have 5 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✘] test 3 +3. [D] [✘] test4 (by: Sunday) +4. [E] [✘] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Marked this task as done: test 3 + +> Marked this task as done: test4 + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✓] test 3 +3. [D] [✓] test4 (by: Sunday) +4. [E] [✘] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Oops! This task was already marked as done! + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✓] test 3 +3. [D] [✓] test4 (by: Sunday) +4. [E] [✘] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Marked this task as done: test5 + +> Here are your tasks in your list: +1. [T] [✘] test9 +2. [T] [✓] test 3 +3. [D] [✓] test4 (by: Sunday) +4. [E] [✓] test5 (at: 10/2/20 11:59am) +5. [T] [✘] test10 + +> Thank you for using Duke. +Have a nice day! + diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt new file mode 100644 index 0000000000..57d0300849 --- /dev/null +++ b/text-ui-test/input.txt @@ -0,0 +1,21 @@ +hi +test +add +add test9 +list +todo test9 +todo test 3 +list +deadline test4 /by Sunday +list +event test5 /at 10/2/20 11:59am +todo test10 +list +done 2 +done 3 +list +done 2 +list +done 4 +list +bye diff --git a/text-ui-test/runtest.sh b/text-ui-test/runtest.sh new file mode 100755 index 0000000000..8604b8cce1 --- /dev/null +++ b/text-ui-test/runtest.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# create bin directory if it doesn't exist +if [ ! -d "../bin" ] +then + mkdir ../bin +fi + +# delete output from previous run +if [ -e "./ACTUAL.TXT" ] +then + rm ACTUAL.TXT +fi + +# compile the code into the bin folder, terminates if error occurred +if ! javac -cp ../src -Xlint:none -d ../bin ../src/main/java/*.java +then + echo "********** BUILD FAILURE **********" + exit 1 +fi + +# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT +java -classpath ../bin Duke < input.txt > ACTUAL.TXT + +# compare the output to the expected output +diff ACTUAL.TXT EXPECTED.TXT +if [ $? -eq 0 ] +then + echo "Test result: PASSED" + exit 0 +else + echo "Test result: FAILED" + exit 1 +fi \ No newline at end of file From 8417caaabf891aa68fdff88b5a45227a4138f352 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 13:50:36 +0800 Subject: [PATCH 11/36] A-TextUiTesting --- text-ui-test/ACTUAL.TXT | 85 ----------------------------------------- 1 file changed, 85 deletions(-) delete mode 100644 text-ui-test/ACTUAL.TXT diff --git a/text-ui-test/ACTUAL.TXT b/text-ui-test/ACTUAL.TXT deleted file mode 100644 index 07d559051e..0000000000 --- a/text-ui-test/ACTUAL.TXT +++ /dev/null @@ -1,85 +0,0 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| -What can I do for you today? -> Oops! Unknown command! - -> Oops! Unknown command! - -> Oops! Unknown command! - -> Oops! Unknown command! - -> Oops! There are no tasks in your list! - -> New task has been added: - [T] [✘] test9 -Now you have 1 task in the list. - -> New task has been added: - [T] [✘] test 3 -Now you have 2 tasks in the list. - -> Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✘] test 3 - -> New task has been added: - [D] [✘] test4 (by: Sunday) -Now you have 3 tasks in the list. - -> Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✘] test 3 -3. [D] [✘] test4 (by: Sunday) - -> New task has been added: - [E] [✘] test5 (at: 10/2/20 11:59am) -Now you have 4 tasks in the list. - -> New task has been added: - [T] [✘] test10 -Now you have 5 tasks in the list. - -> Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✘] test 3 -3. [D] [✘] test4 (by: Sunday) -4. [E] [✘] test5 (at: 10/2/20 11:59am) -5. [T] [✘] test10 - -> Marked this task as done: test 3 - -> Marked this task as done: test4 - -> Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✓] test 3 -3. [D] [✓] test4 (by: Sunday) -4. [E] [✘] test5 (at: 10/2/20 11:59am) -5. [T] [✘] test10 - -> Oops! This task was already marked as done! - -> Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✓] test 3 -3. [D] [✓] test4 (by: Sunday) -4. [E] [✘] test5 (at: 10/2/20 11:59am) -5. [T] [✘] test10 - -> Marked this task as done: test5 - -> Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✓] test 3 -3. [D] [✓] test4 (by: Sunday) -4. [E] [✓] test5 (at: 10/2/20 11:59am) -5. [T] [✘] test10 - -> Thank you for using Duke. -Have a nice day! - From d04527061fc45f28a2e7cc492d52d89c75e4232f Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 16:34:44 +0800 Subject: [PATCH 12/36] Level-5 --- src/main/java/Duke.class | Bin 2723 -> 2965 bytes src/main/java/Duke.java | 77 +++++++++++++++++++++++------------ src/main/java/DukeList.class | Bin 2044 -> 2044 bytes src/main/java/DukeList.java | 3 -- 4 files changed, 50 insertions(+), 30 deletions(-) diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index fa8ad8e708c19b56709e755e327c9b365e898ccf..dad7a67cd00e475d63c46eff338a14a5692f49e4 100644 GIT binary patch delta 1454 zcmZux+fNi{6#t!_otckyp}1T}gdIR(xyULvag`QOYyky9P+PG$umh~XEMXUrr0Mpi zZLPh~L9Dd4Y5G8#J~Y~N+t7se(e|xP>|R5_SO%9>VuQ9gq}1KQ@UlE(S&a3Q6p)Fld&1I zlpvc6rj=yEVS`D2?6j!euIr5_b<>K^_fAaeF>5?NH)A-sdNQt$&6y10f-*$j<34T+ zE*f`;JdF=oQ&xP@(v2~vywt9i_DeRO*##-=$vJOdRC4X>QcPOG4f}!ghaxAEbFo?b zp0_6`CuXN(%q>af1>v(11p^d8wrEN1!bM) z+1cqjm9=RE){u1#1#%jN5mi&A`iQKl-g=J8 z0nNqIH04L^Y8Fmmo=Bs}!NYf2N)GIH7Zhqr#LZ?8YMd{2^DA6m;--&kN+6hq9ub<5 z>K)P5z_jso6^DODL#RQ4)(J+bChGpTsiVDPP#0_ delta 1217 zcmZWpU2_vv7=BLn>vY{hx}^=<(vn2lq_i|4wkZUw4p6mHTPvWppmvk2B{bbs66kci zh{}hkh?XO2Q9;Lx&UmLY28RoD#u+c1@j`!rzrY*45~kyOmeCoKH&vV{)-!pqP z@uU#IKffkIB8O8!O&1Pu(sw`Dw(WCx?Us?8}h05Zh>lb4T5JE{SAJ9-g zDk*WFT2em5M`Bt1RZMH+dw8MZ*W8j{W#~*!oOI8)sj}KRzGu#8W|A9^3VA-arj)Xx}t#D>u={xtfZ7(|L*2xvVFv=Fix z%DTwYM9_BL1pA5th6l*%K~X^yhA>PqK|>3)`X&MhQR0L3oa(6drUo{zL0@MRl!SvM zG0;HEHEjAC+_oDq*IADYTPY+@hg;TJE1}yOXkWvCqbf!N5qoPu?s8P#fb%UnvYJG< zX$^Er5&TA!Z2=_}Q0m0#3OLbwoSYUulGOu}?hvgzpnXZS?E!6^XkikM*wKKt*HObw zbeA1#AfD44P08elsAg{AejsOr4`z9w#vR?E7Iy@Cv!vG}^&Y|FBpB%R{;Q`;y~O|Y zl7ZgXfAs`2TciC_bmIoyW7C&0DcvP^5DIp19SJdEI`uSc}GSwuq6z!Dn{5V$g#87$1Y%$UB*Lm>Gb%7 diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 9d4d26ed7c..c58f9b0994 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -12,9 +12,10 @@ public static void main(String[] args) { + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo + "What can I do for you today?"); - while(true) { + while (true) { System.out.print("> "); - String input = scanner.nextLine(); + String input = scanner.nextLine().strip(); + if (input.equals("bye")) { break; @@ -26,36 +27,58 @@ public static void main(String[] args) { System.out.print(duke); } - } else if (input.contains("done ") && input.substring(0, 4).equals("done")) { - int taskID = (Integer.parseInt(input.substring(5))); - System.out.println(duke.markDone(taskID)); - - } else if (input.contains("todo ") && input.substring(0, 4).equals("todo")) { - String newTaskName = input.substring(5); - char taskType = 'T'; - System.out.println(duke.newTodo(taskType, newTaskName)); - - } else if (input.contains("deadline ") && input.substring(0, 8).equals("deadline")) { - String[] taskDetails = input.substring(9).split("/by"); - String newTaskName = taskDetails[0]; - String newTaskDeadline = "(by:" + taskDetails[1] + ")"; - char taskType = 'D'; - System.out.println(duke.newDeadline(taskType, newTaskName, newTaskDeadline)); - - } else if (input.contains("event ") && input.substring(0, 5).equals("event")) { - String[] taskDetails = input.substring(6).split("/at"); - String newTaskName = taskDetails[0]; - String newTaskDeadline = "(at:" + taskDetails[1] + ")"; - char taskType = 'E'; - System.out.println(duke.newEvent(taskType, newTaskName, newTaskDeadline)); + } else { + String command = ""; + String parameters = ""; + try { + String[] result = input.split(" ", 2); + command = result[0]; + parameters = result[1]; - } + if (command.equals("done")) { + int taskID = Integer.parseInt(parameters); + System.out.println(duke.markDone(taskID)); + + } else if (command.equals("todo")) { + String taskName = parameters; + System.out.println(duke.newTodo('T', taskName)); + + } else if (command.equals("deadline")) { + try { + String[] taskDetails = parameters.split("/by"); + String taskName = taskDetails[0].strip(); + String taskTime = " (by: " + taskDetails[1].strip() + ")"; + System.out.println(duke.newDeadline('D', taskName, taskTime)); + + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("Oops! This task needs a date/time!"); + } - else { - System.out.println("Oops! Unknown command!"); + } else if (command.equals("event")) { + try { + String[] taskDetails = parameters.split("/at"); + String taskName = taskDetails[0].strip(); + String taskTime = " (by: " + taskDetails[1].strip() + ")"; + System.out.println(duke.newEvent('E', taskName, taskTime)); + + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("Oops! This task needs a date/time!"); + } + } + + } catch (ArrayIndexOutOfBoundsException e) { + if (command.equals("todo") || command.equals("deadline") || command.equals("event")) { + System.out.println("Oops! Not enough information to create task!"); + } else if (command.equals("done")) { + System.out.println("Oops! Task not found!"); + } else { + System.out.println("Oops! Unknown action!"); + } + } } System.out.println(""); + } System.out.println("Thank you for using Duke.\nHave a nice day!\n"); diff --git a/src/main/java/DukeList.class b/src/main/java/DukeList.class index 412056a189019eb5baca2ddd55820ebafa4e195a..5db758f551c83ac638b939a245bab8e27b721896 100644 GIT binary patch delta 93 zcmeyv|A&7AFB>Nh10Mq~g9Zc7WHGiRRzU_X2BFEdY!;ki3_J|t42%pKlN;GYCSPJx vV3h`n$V~puX2z&ES&vNx10MrFg9ZcNWHGiRRuKj+2GPm2Y!;l73_J`{42%pKlN;GYCSPJx vV3h-k$WQ*xX2z&8S&v diff --git a/src/main/java/DukeList.java b/src/main/java/DukeList.java index e5d1843f48..14535a97d0 100644 --- a/src/main/java/DukeList.java +++ b/src/main/java/DukeList.java @@ -9,13 +9,10 @@ public DukeList() { public String add(Task task) { this.list.add(task); - - return "New task has been added:\n " + task + "\nNow you have "+ list.size() + (list.size() == 1 ? " task" : " tasks") + " in the list."; } - public String newTodo(char taskType, String taskName) { Task task = new Todo(taskName, taskType); return add(task); From 2070a30a41a05ad3240f79114880f1e3bc7319bd Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 19 Jan 2020 16:53:49 +0800 Subject: [PATCH 13/36] Level-6 --- src/main/java/Duke.class | Bin 2965 -> 3223 bytes src/main/java/Duke.java | 23 +++++++-- src/main/java/DukeList.class | Bin 2044 -> 2433 bytes src/main/java/DukeList.java | 8 ++- src/main/java/Task.class | Bin 1550 -> 1539 bytes src/main/java/Task.java | 2 +- text-ui-test/EXPECTED.txt | 96 +++++++++++++++++++++++------------ text-ui-test/input.txt | 20 +++++--- 8 files changed, 104 insertions(+), 45 deletions(-) diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index dad7a67cd00e475d63c46eff338a14a5692f49e4..a8ee71d70f6e8982c54afac84a5adf2368cd0cbe 100644 GIT binary patch delta 1473 zcmZ`(ZBSHY6n@SwyZ7aKRa`;Z_*y`ekF`YwrNsb2{NTe)0WCskVK2J6?UH+0ptRK> zi!w`ZVqo@VMb0$NSko5%XliO|rholt>Stp=oqp*wjpJbFy(HtGc6QD=?|II1KHm4t zJ)eESo&0(J`ZoY-@TrOos8dj%js|R1VMC*WCKV3U32c+jW)}zUQqh7|fi|hzW!P>N zegp&_mwJ!DUdibY=oILZLHh*u3p^pwCk47yJcS+^azH_^*n>WSr{ysy&@V6`!$K~Q zEabqTf`bBw1i}J`U0lraMg*RbXjC93FeLD-?Bl3{xB}zsx7}&O3KC{M<*eR_D#D7x z!9>tEY=k4ej)7n_s&nLshEa@Z*of!M12o?CJdP1E8e=gdZX68`wd=;ASSY^SiQ@t< zXh`COf|D9v#5loL=g}~MaSbowl!ljaieT>_(>1(;NkUpA95*z)ir36)TOc`s(*&M} znDjc%Fdm9Ubp>x|coSzeoP$Xywpxq?qX&Jvq9J`WFl+<{8)L)KP`r6`Kp!%~u_z%c z5F3gYdOCygBc5o?@C?d;Le6N!LNN_*;XFZv^k66wj_TZ#uYXLFMW+NVXm}gb<}bG1 zRRS{_E@GPC4CxWw;J)91X;#^5%n5tF{SvCoAMID|@8Z2LM$$sIN>6Ff@O!9?b4T@& z=7b(K23w-oADOqDW%P-er+k?Q;M zEUWpHC$EOJqx>t-H8u#FSUN4I9qHK2yJ>~mFY}WxVZPlAi+Y+fuZWzL=RSvUWu~CA z_NI_EODD|V#9CTo-V<5Lzx+btd5q8E54XdWpF+ko9&$S^z?;$O7AX{1@OKP*EV#+- zbQPvhMXd7m_WY;thrHGYaIT)}6^#SL;%7D~uV zJ=DiKL6dZv{Rvt=MbjwZ2j>?h8yd_uHIOXDC6qDM%j9xgMFn^m%)y86QHh_h9>4N> z+~DQ7$-LXx%*+~cVG9@WQ#NX;fbAmGkrxeAjjdFNMruP7^|S@Tt(*O6 zWoa2`CwzX5hgWL4i|XY;-bSVOe+Gd6%I2@JG{yz zhgmKuf~PMg9bV&gMQD61lXZB5%U)NYKR&~o3b}<6(G}hjel(p*TD4(~c#<)Tt_wqyE1n0SSXE`() zSf5H>=$cBVI-ki`Yv=+vBf)~%e+BdTlAQ0*L(spn!J+O z9p0Q?yYX?sB65NtQFii#VdM~zC(o06{NUZyZShGr6f4Y8aD%G49I*w~+(yTWa@dRN zkO_+=6fb1SqH6XUqE$Vv8~L7x8?=E-bdFM!%^f!!d&IA_-izwG|mDsEEE*VK@smL=-AE1SC~8~auE^1I~z z!A=!sm(;3P@}E&LiA&h6%Gsl;X;wREQEjxUembR3yBeZH4bvyRx>SO0HA|1W%6>J^ z0reHVYLUb0TL#o^hSbtDN7OP$sh5#DC|F^WMZh9#(eQu`VoM8GXc6y!ca_apR654o uC)z3Q0p()t;yz4+P>f*)pD}ROf`fAo1TL`W zqC;ZT#3ctRt{50IFfO2F(kr>=4_}I_(h+a=St&Q;=G=+o%7WYyV@?Tv0^pb1i4yG7Q{cOb1Vd5@VxMyP;QznvZ%m~25EUPKGu8gZL?n|M53097~ zi`i8-70S(}S3)_e(PxF|Cj_E$TPc$@nqv#-%N|UiMuydp{6_z{2+FVOi2i_!F34W3 zSuDyK?Y*`n5RrK;A_sj9^?teqXnhKErMH?a1vMxlofbnfEZ2PD>N@ftprryjG#GRO zlVU{MLwxl0iMkhhMR$Y%jZk(FhGM{P&~@l_#16s!I8=5Rh?1)jODg*KwyPSbZ#lXf~mr#HO~Qyiq`-D delta 746 zcmY*W%T7~K6kX@u_MXf27Vts~l~Qd1=>uE97orF#^;wGoKJa}_JE%4=pfWWkj!pD@ zfXs@6F)$Iz^HYd8;v^I`|P#WUi<8G9(R53c=Yk-+xGw_;5+ESn8dgP z17mH7VZS~d(BYtsLpBb36dsj0=D@*}L&b54X$KL^NX$Cuz>F53kT~hU!<>zh2Z7TP zXC%%Fgc|j=ra-iO-(UBO51aKyarW8M=i;17iPvgd%$o`HtAf!R=|$Yd9-Mbk#)w)p zhAS6rR9wvCB5jsdtE(;&xTG~HfpBTPw$jwdf`C0&^Q(>eO3lS0mbBVmd*C9Af&gq> z)+SffCu709ifd}z{GvXDO4hQ5Z>g?uR@_lj;my!pfgzQ&lB(Ov`!T)@xQPK?jCmI; z1AVj;9NN#ABr*z_8h_sw2oSr-=;1Xi;iN#3V(`o@lZ24`6CQVt~*fh62lsOvSaO{t{p(v;K^|w9*6b z$-#fv7{~Mw&-`Xz{Kxi@O_0qZ7xZq+bW}TAtPm`a$4J0z*ztkCjK0S{6f{F!m876#^-3~WLi8?;!qGB9gRu4J7G01FZpIsgCw delta 83 zcmZqX>Eqd;%p@i4n^=^cnxasWky)%zl31LrkXWpclAo7qHQA9#j!8{p@&+c=%~edd mnPl7;m>3ut7#JkAwlFZyWMC8G*r3I-m4O+^WtyDFIu!uyLlz1E diff --git a/src/main/java/Task.java b/src/main/java/Task.java index c27aa38d8b..9157e8238c 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -32,7 +32,7 @@ public String markDone() { return "Oops! This task was already marked as done!"; } this.isDone = true; - return "Marked this task as done: " + taskName; + return "Marked this task as done:\n " + this; } @Override diff --git a/text-ui-test/EXPECTED.txt b/text-ui-test/EXPECTED.txt index 07d559051e..1d2e13ef2b 100644 --- a/text-ui-test/EXPECTED.txt +++ b/text-ui-test/EXPECTED.txt @@ -5,39 +5,42 @@ Hello from | |_| | |_| | < __/ |____/ \__,_|_|\_\___| What can I do for you today? -> Oops! Unknown command! +> Oops! Unknown action! -> Oops! Unknown command! +> Oops! Unknown action! -> Oops! Unknown command! - -> Oops! Unknown command! +> Oops! Unknown action! +> > Oops! There are no tasks in your list! > New task has been added: - [T] [✘] test9 + [T] [✘] Buy Textbooks Now you have 1 task in the list. > New task has been added: - [T] [✘] test 3 + [T] [✘] Buy Eggs Now you have 2 tasks in the list. > Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✘] test 3 +1. [T] [✘] Buy Textbooks +2. [T] [✘] Buy Eggs + +> Oops! Not enough information to create task! > New task has been added: - [D] [✘] test4 (by: Sunday) + [D] [✘] Homework (by: Sunday) Now you have 3 tasks in the list. > Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✘] test 3 -3. [D] [✘] test4 (by: Sunday) +1. [T] [✘] Buy Textbooks +2. [T] [✘] Buy Eggs +3. [D] [✘] Homework (by: Sunday) + +> Oops! This task needs a date/time! > New task has been added: - [E] [✘] test5 (at: 10/2/20 11:59am) + [E] [✘] Project Meeting (at: 10/2/20 11:59am) Now you have 4 tasks in the list. > New task has been added: @@ -45,40 +48,67 @@ Now you have 4 tasks in the list. Now you have 5 tasks in the list. > Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✘] test 3 -3. [D] [✘] test4 (by: Sunday) -4. [E] [✘] test5 (at: 10/2/20 11:59am) +1. [T] [✘] Buy Textbooks +2. [T] [✘] Buy Eggs +3. [D] [✘] Homework (by: Sunday) +4. [E] [✘] Project Meeting (at: 10/2/20 11:59am) 5. [T] [✘] test10 -> Marked this task as done: test 3 +> Marked this task as done: + [T] [✓] Buy Eggs + +> Marked this task as done: + [D] [✓] Homework (by: Sunday) -> Marked this task as done: test4 +> Oops! This task needs a date/time! > Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✓] test 3 -3. [D] [✓] test4 (by: Sunday) -4. [E] [✘] test5 (at: 10/2/20 11:59am) +1. [T] [✘] Buy Textbooks +2. [T] [✓] Buy Eggs +3. [D] [✓] Homework (by: Sunday) +4. [E] [✘] Project Meeting (at: 10/2/20 11:59am) 5. [T] [✘] test10 +> New task has been added: + [D] [✘] Finish Presentation Slides (by: 23/1/20) +Now you have 6 tasks in the list. + > Oops! This task was already marked as done! > Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✓] test 3 -3. [D] [✓] test4 (by: Sunday) -4. [E] [✘] test5 (at: 10/2/20 11:59am) +1. [T] [✘] Buy Textbooks +2. [T] [✓] Buy Eggs +3. [D] [✓] Homework (by: Sunday) +4. [E] [✘] Project Meeting (at: 10/2/20 11:59am) 5. [T] [✘] test10 +6. [D] [✘] Finish Presentation Slides (by: 23/1/20) + +> Marked this task as done: + [E] [✓] Project Meeting (at: 10/2/20 11:59am) -> Marked this task as done: test5 +> Oops! Task not found! > Here are your tasks in your list: -1. [T] [✘] test9 -2. [T] [✓] test 3 -3. [D] [✓] test4 (by: Sunday) -4. [E] [✓] test5 (at: 10/2/20 11:59am) +1. [T] [✘] Buy Textbooks +2. [T] [✓] Buy Eggs +3. [D] [✓] Homework (by: Sunday) +4. [E] [✓] Project Meeting (at: 10/2/20 11:59am) 5. [T] [✘] test10 +6. [D] [✘] Finish Presentation Slides (by: 23/1/20) + +> Removed this task: + [T] [✓] Buy Eggs +Now you have 5 tasks in the list. + +> Removed this task: + [E] [✓] Project Meeting (at: 10/2/20 11:59am) +Now you have 4 tasks in the list. + +> Here are your tasks in your list: +1. [T] [✘] Buy Textbooks +2. [D] [✓] Homework (by: Sunday) +3. [T] [✘] test10 +4. [D] [✘] Finish Presentation Slides (by: 23/1/20) > Thank you for using Duke. Have a nice day! diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 57d0300849..d85cbf8650 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,21 +1,29 @@ hi test add -add test9 +add Buy Textbooks list -todo test9 -todo test 3 +todo Buy Textbooks +todo Buy Eggs list -deadline test4 /by Sunday +deadline +deadline Homework /by Sunday list -event test5 /at 10/2/20 11:59am +event Project Meeting +event Project Meeting /at 10/2/20 11:59am todo test10 list done 2 done 3 +deadline Finish Presentation Slides list +deadline Finish Presentation Slides /by 23/1/20 done 2 list done 4 +done 9 list -bye +delete 2 +delete 3 +list +bye \ No newline at end of file From ba8cd09391d3634ae251359b575ef34d56e92b13 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Mon, 20 Jan 2020 12:38:52 +0800 Subject: [PATCH 14/36] Level-6 --- src/main/java/Duke.class | Bin 3223 -> 3595 bytes src/main/java/Duke.java | 126 ++++++++++++++++++++------------------ text-ui-test/EXPECTED.txt | 13 ++-- text-ui-test/input.txt | 2 +- 4 files changed, 76 insertions(+), 65 deletions(-) diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index a8ee71d70f6e8982c54afac84a5adf2368cd0cbe..ea54ce995bccd78a36bb3d73c1ad3bd5be83c6d2 100644 GIT binary patch literal 3595 zcmcIn>vI#=75`n?(yrGV3<4V~E@n+ImH}H7Qj*970nx^#W^j+LmCeX(;opd_+(wWY5ru~#}`2#Z3v}rrgb9ZGd2Zi=a zW$W&_XV3ZFbAI>SbL}^7T>CYE`*Bsledv|YSBHZ*q`-%M32_+@%Xmb_fQ&&ILo$YC zJX(*3@R$NW4ogTVXh5%w5#e?uNKm5+PT-`BG4Xs{0G(2>A4wTc$k2s2E{2pqNehV! zhzS{!GN#1b2!aWe224xH$jHhtWmrK%aMk?<5lV2@!M&R&L^aOY8m+L)E*3=IQ@$%hKrah@O1$1|j<&FY59&=fv7a9W?y zBN^SCj3k`AVNUi4$GZ}ao|+!ibFRIFk4pHMgpV^Q39FD#@q>mysp~CF^KJp460;95 ztZ~5#j**EZQo3pKyo67vIFC;XgHJK6T{hUC&+Ekj!*(bd$4Xlaem=uZn#yUer!y2X zy~%h6X-mukX`bN@2{q$IuHw^pTEKpWJVYQKmaQe}qm@6m1Z7UslG+%3={cv(xmHPy z)GK}>T11!$wQJ>#nzo0$k`ZN2U`MpEWO93wUX3M5O3o=Np24#Ws}ER~V>@|0H^`kS zD{VIf@L3t3Q}KCxLBew?zK9D9zP*}?FX4iUFXMR?FW`9wssu*bui!-$7ja2QUsdsv z7`}#=88!@CIlE08nKEq6(d}u?rkiOktvfv8817n|-p{(ys3tOAl<_SU-^O-&65@{D9$} z5OP@;Vb?6 z4CSMlMv4+6`tOqTmhCS+78cB zA&Dd0=pA6gip0%a!69?5XL~54aMc&$aQmzYhUd!f-IMQy*Hh68{_mPjZ!x!5h@>gx zP&p)57qc=MqKxX(ZAdj%f#_RK_EBn8OUWwuF@8b?-_J7{OPk1BS%n>&(jARjkQUd{ zq@#@!8%TXdFYaSlpVg;%%raBDbIfq2NU|N>bZmw#m9#81#0p-@s-;dwv{yvJAmv0{ z8L=Q&yKj=xg#9AorkJ{cT`!w`tq_C z)}5%vI$b_y`@H`DK(&?r$F&J@yyziHliW!d=ZIjs4CC+Fk)>Q|N4!hRc=Q4(O^Yl{_%W!+M=U92J z%L!Dlxx#UznB!H+p>(pk@)Z1J~gn4F-Zz zP!84wm0*2Py^6aQv1;%-8b%kfdMLOiTDyQ?sP-Dx0wt`YNwBemrfnsxFQGZ=4~C)v z`br^x@a_^?Esy@f7fmB8F0)TkF?hb!JBcv_Z167b>of$zKp-&+BX*ZwQ~WrDAB z;XArY*m}u}f|#Tz&Wk9vlPKaYp=%y_vZmN6m@OgcD!O;O#57WT5!d6e%T(}#?xc^5 z>#G_QB?RAIY1~Z4s%yMz9!+B5UEacC7uL<+Xcek^NuJ2)XlL#02s=*C z1@=1o19q@C+1u=I*g-W(MaNokh)PeQB9o~u>#!LLwnL@&Yp4j%bL+@k?x@D7x@RbmK3G;4MOZht9#f z*ol8(7xUv@wi>%xGwx?Ch_ZI<}dj*fN1ti$37-6sD7-f2dy@8|bPbB{tqwGzbWN%@Ny^SPg|2X?Q zPO+Ov`h3uRD#m>cnDVX1uY4Qv8{a1U*0&X}`MU8t>?L+a&~%f?@JrYy!6)G%2@Mkc z8-yF^q^I}WxJ#Ln(Ee{U(fChDzLm3T)rZH>CLxb2*eN!nUEm3+Y62Ysoe~!H zgJdE%b}8r*=oW|x?Dlgq+Zq?xBfW+|LZDY*udJg_LB9g?%+IZL0}2KSzUIV0U#Gq{ z7S{>h`hgyO{%&nhQ?Uq(3E5H(516rdxVcj^44vbLR6L1c33$r-jt;jyjeUfy+C;+a zH~X~SM&0aAMEj?DuwURA6-gXWa8Sh|940twf+~*Su!?7KRK;^RN^o`z>nfhdF@h@| z>o--rfa8SnO^M!q>yUH(tRpx<;AV+qPvR8Aq6tG+@S=*-IHTe$EbE4|rji|IBAQU~ z5?&^VsIEohF@xK3hC8_4lNb>=r{WciTE9A~sMNaVC`?8*QxBW5J^D<7TOZU7Q{pvK zU`)k%j1oLiJ+7Nv;;XO-Az9YUU{k^j>PBLqt2-Dob|w1uXl5*71kFUSvrlKrpsDru zFlAmEzSZb45<^B%>y$9I&ui({jGo}IRqHBuUch3j$5ou0WluY<8C~IKvoB_J5pt}9 zN}hGywb8ofp5c5AuUkL3Zzvvp?|>HXw@4IFtM!{wY5n9`WEF{4Yq_H3b__>?R6)ov z^r8B@L$E$jR$HS=PLVI&O$(RD4R^*9{XEGxNAiS545?qDh@%d87{{4-N1jfjA7R?8N=0pXIu1ZDvd z* z$n)V2Gw<(kD-S2#;}{C;c91oO%zM??qpq^!D%mI}mv*N!NO$t?urlP_<}*~@`7&fO zEX6R3j9&0Dufqu5$A>7!P4ZJ7$|yu_)Xw)H9itO$AEXf)MH#OcFBLiX2Nd=ad5{Bv zd}N{&S*S!dFJKNHL@pze`TT=ffXygG8>S(OA{Zz^AA%TU_yL~(QOw2(lymyIxPS^S zBE)4>;v>xC?F-=w!uT8u@Ff=F8>YU=`+JK^_yfzhh~?zRN-j4-1z15PESI8&LRdvh zu$pR;sHFzfQ5)8AFKbA{T8gn8$9fvX2HKB}bPP@0Ujv;&BaNVqd)z|j(M(s+LSJAT zeT(h%BUbZ(Iv(H|>_qM)N)7C R%X%*R*RgHAed_kv^ABJ commandList = new ArrayList( + List.of("todo", "event", "deadline", "list", "done", "delete", "bye")); DukeList duke = new DukeList(); String logo = " ____ _ \n" @@ -16,80 +20,86 @@ public static void main(String[] args) { System.out.print("> "); String input = scanner.nextLine().strip(); - if (input.equals("bye")) { - break; - - } else if (input.equals("list")) { - if (duke.getSize() == 0) { - System.out.println("Oops! There are no tasks in your list!"); - } else { - System.out.println("Here are your tasks in your list:"); - System.out.print(duke); - } + String command = ""; + String message = ""; + if (!input.contains(" ")) { + command = input; } else { - String command = ""; - String parameters = ""; - try { - String[] result = input.split(" ", 2); - command = result[0]; - parameters = result[1]; - - if (command.equals("done")) { - try { - int taskID = Integer.parseInt(parameters); - System.out.println(duke.markDone(taskID)); - } catch (IndexOutOfBoundsException e) { - System.out.println("Oops! Task not found!"); - } - + String[] s = input.split(" ", 2); + command = s[0]; + message = s[1]; + } - } else if (command.equals("todo")) { - String taskName = parameters; + if (commandList.contains(command)) { + if (command.equals("todo")) { + if (!message.equals("")) { + String taskName = message; System.out.println(duke.newTodo('T', taskName)); + } else { + System.out.println("Oops! This task needs a name!"); + } - } else if (command.equals("deadline")) { - try { - String[] taskDetails = parameters.split("/by"); - String taskName = taskDetails[0].strip(); - String taskTime = " (by: " + taskDetails[1].strip() + ")"; - System.out.println(duke.newDeadline('D', taskName, taskTime)); - - } catch (ArrayIndexOutOfBoundsException e) { + } else if (command.equals("event")) { + try { + String[] taskDetails = message.split("/at"); + String taskName = taskDetails[0].strip(); + String taskTime = " (at: " + taskDetails[1].strip() + ")"; + System.out.println(duke.newEvent('E', taskName, taskTime)); + + } catch (ArrayIndexOutOfBoundsException e) { + if (message.equals("")) { + System.out.println("Oops! This task needs a name and date/time!"); + } else { System.out.println("Oops! This task needs a date/time!"); } + } - } else if (command.equals("event")) { - try { - String[] taskDetails = parameters.split("/at"); - String taskName = taskDetails[0].strip(); - String taskTime = " (at: " + taskDetails[1].strip() + ")"; - System.out.println(duke.newEvent('E', taskName, taskTime)); - - } catch (ArrayIndexOutOfBoundsException e) { + } else if (command.equals("deadline")) { + try { + String[] taskDetails = message.split("/by"); + String taskName = taskDetails[0].strip(); + String taskTime = " (by: " + taskDetails[1].strip() + ")"; + System.out.println(duke.newEvent('D', taskName, taskTime)); + + } catch (ArrayIndexOutOfBoundsException e) { + if (message.equals("")) { + System.out.println("Oops! This task needs a name and date/time!"); + } else { System.out.println("Oops! This task needs a date/time!"); } - } else if (command.equals("delete")) { - try { - int taskID = Integer.parseInt(parameters); - System.out.println(duke.deleteTask(taskID)); - } catch (IndexOutOfBoundsException e) { - System.out.println("Oops! Task not found!"); - } - } - } catch (ArrayIndexOutOfBoundsException e) { - if (command.equals("todo") || command.equals("deadline") || command.equals("event")) { - System.out.println("Oops! Not enough information to create task!"); + } else if (command.equals("list")) { + if (duke.getSize() == 0) { + System.out.println("Yay! There are no tasks in your list!"); + } else { + System.out.println("Here are your tasks in your list:"); + System.out.print(duke); + } - } else if (command.equals("done") || command.equals("delete")) { + } else if (command.equals("done")) { + try { + int taskID = Integer.parseInt(message); + System.out.println(duke.markDone(taskID)); + } catch (IndexOutOfBoundsException e) { System.out.println("Oops! Task not found!"); + } - } else { - System.out.println("Oops! Unknown action!"); + } else if (command.equals("delete")) { + try { + int taskID = Integer.parseInt(message); + System.out.println(duke.deleteTask(taskID)); + } catch (IndexOutOfBoundsException e) { + System.out.println("Oops! Task not found!"); } - } + + } else if (command.equals("bye")) { + break; + + } else {} + } else { + System.out.println("Oops! Command not found!"); } System.out.println(""); diff --git a/text-ui-test/EXPECTED.txt b/text-ui-test/EXPECTED.txt index 1d2e13ef2b..9d0a043c45 100644 --- a/text-ui-test/EXPECTED.txt +++ b/text-ui-test/EXPECTED.txt @@ -5,14 +5,15 @@ Hello from | |_| | |_| | < __/ |____/ \__,_|_|\_\___| What can I do for you today? -> Oops! Unknown action! +> Oops! Command not found! -> Oops! Unknown action! +> Oops! Command not found! -> Oops! Unknown action! +> Oops! Command not found! -> -> Oops! There are no tasks in your list! +> Oops! Command not found! + +> Yay! There are no tasks in your list! > New task has been added: [T] [✘] Buy Textbooks @@ -26,7 +27,7 @@ Now you have 2 tasks in the list. 1. [T] [✘] Buy Textbooks 2. [T] [✘] Buy Eggs -> Oops! Not enough information to create task! +> Oops! This task needs a name and date/time! > New task has been added: [D] [✘] Homework (by: Sunday) diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index d85cbf8650..e7aa14573a 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -26,4 +26,4 @@ list delete 2 delete 3 list -bye \ No newline at end of file +bye \ No newline at end of file From ee41b144ce0765a9093293d77007988dd665f5b9 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 26 Jan 2020 12:54:04 +0800 Subject: [PATCH 15/36] (Level-7) Added Load and Save features. --- src/main/java/Deadline.class | Bin 222 -> 225 bytes src/main/java/Deadline.java | 4 +- src/main/java/Duke.class | Bin 3595 -> 4293 bytes src/main/java/Duke.java | 45 +++++++-- src/main/java/DukeList.class | Bin 2433 -> 0 bytes src/main/java/Event.class | Bin 216 -> 219 bytes src/main/java/Event.java | 4 +- src/main/java/Storage.class | Bin 0 -> 3701 bytes src/main/java/Storage.java | 93 ++++++++++++++++++ src/main/java/Task.class | Bin 1539 -> 1604 bytes src/main/java/Task.java | 8 +- src/main/java/TaskList.class | Bin 0 -> 2444 bytes .../java/{DukeList.java => TaskList.java} | 19 ++-- src/main/java/Todo.class | Bin 246 -> 249 bytes src/main/java/Todo.java | 4 +- 15 files changed, 150 insertions(+), 27 deletions(-) delete mode 100644 src/main/java/DukeList.class create mode 100644 src/main/java/Storage.class create mode 100644 src/main/java/Storage.java create mode 100644 src/main/java/TaskList.class rename src/main/java/{DukeList.java => TaskList.java} (65%) diff --git a/src/main/java/Deadline.class b/src/main/java/Deadline.class index ba0213b7047888eafc8111366c7cf0f8141e42fd..e2ce960929135703ac2d60163888eaae7dd59e8c 100644 GIT binary patch delta 66 zcmcb|_>gge0;A?cMPbIMi6+&CY7DGE$iTp*r7a^X$+De+aU+n&$iNN~V_*W3%nY0i NEI<(sAe)JS699#w2eSYG delta 45 xcmaFJc#m;{0;9%6Md692)x0VUEI`P>z@eorqdRfGC@(vZ%gDe16k=lF1OVXT2N3`O diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 4546b5222f..7df4cdaf27 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,5 +1,5 @@ public class Deadline extends Task { - public Deadline(String newTask, char taskType, String taskTime) { - super(newTask, taskType, taskTime); + public Deadline(String newTask, boolean isDone, char taskType, String taskTime) { + super(newTask, isDone, taskType, taskTime); } } diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index ea54ce995bccd78a36bb3d73c1ad3bd5be83c6d2..075f86d3b83ce46b86bc9492abb66d1c7971a884 100644 GIT binary patch delta 2400 zcmai0dw5jE75~lbV`g_R5HBY7LeLvT*tLdW6fn!1ELbE7nDE*l=*{kJvSir}yBi=j zbz4NxS|50;HnFV_tm#8*#kzSQVA|56wWZq9D%yuuto@7jpML$U+Mc;do6oO)U-!Fn z=FFMjIlnXK&dlCBD^FGxU;1d|IDl*LZV;crMuANMY{r%#IN}1W5?dv1kk}@%UE)TG znxz^Q(1s)gpCPT0#+nr0;t5a#4ArR~CwCC=yc3T?O;5vp2lwQ+aNTq995>_T- z=LDY6Fo16-Sfjz<&0D)|4d20cmGw!1r!;&IPdk5Rd$)fd&oGp&%w`MuLeA=H zvZ}BC-8#OMm79U zi67y|&M_Vioxn+npJ@0gPC0+&2SP7ucnPO8{0uKUy`HABVf$)*wxonwCN?m1$>KyrIL+ z*``IUJL9^UiSZz*jM+mKHPfklp~{S9)yUkF%6FKBtjn;BVM;vOX0{NUIZn->H$}}@ zDxa`&$q8e4ea_D3O)Jx5W(&kg3r-|CEtIZj$E_eRy=X%W*x8GBF6wvy>o#&-TD4#g*h zCjvw^F^E)t)y}R0W$Xz@TGbXx-AsI*cDuk(9$ph^n5g=?wjFk&u!v@@BqifZq_cTj z;P-0xyzSg8BkUb#L_WvPIbDHs-QQZs<} zT?C;K{4Ynr<452bgty@+d~w~c3tj2~J*bCtO`kM`$%B~EsHO%{)-;3*qF!B(`i@|# z;Tyq)KndkE&?`!~=+h;9sstnI*QZ4VHE9(6`t%Yi`w=w!Q856+AcL=j8PR|d@YF_y z5%AVVE_ce2F1+e+ifLp~jH{|A1x3m9>0JdS>f(34y= zRecEa75xGi=Fp7h&fHNwjD-ySc(|IhYiKtohf&Az0;1!-{(&NHRj!N3RrQO<`z7Q3 zQtH*FQEy9MMp64QiL~XP$XrJ=D_l$sX)6`x!@CABvs!JQdXCNGFDy15oHkE+ap1#F zMZ9W^X!SGj;xuE-i`i@*YhyO`qwEZO4Ylk%_i#UI=?KxGVQtt#hejX-iA(6{%qDFv z9hs{z84EELF;o!lB5Z_#IHqA6D$$M^$PjujOx%Jh>_>4H?!jf~Blp9YL;oOQy7MD+ z(O-^}sHVHQhHl$=cneqJJf*-8rPQuwe#~cOSiq)JSuZ8qY%FH;u$0wd8C!|vY&}*` zf@>)Kde)8@+l5uE7uT}=WIKqp><}7Q9~#-?MXX~_Vm%u~3me5ob_$!=8N_M5o7q`x zVQ-Uu4qMrIY-4}NcJ6^iHMo(}X96!HeJT=s29kUxY+j9az7QQejugKEoji#&Ph%%9 zAj5l+<@?aZAHXjD5OVx5^85)DcyR>X{1|%qizxC}u#dlv{rpWF;P2ode-F1~9Tho& z>Hng7`UTbtaDnUHr&-W91U^E9`mv{cevrN-W`BSRlJ7(CkB=(#n*?e#R~U0YKplB4 tnesj=LgF8E+j-DJTpSyy+MqGRAMhvqkzQYl#uw834zhK+^7F2|_1_5YAQ=Dv delta 1772 zcmai!*>er_ItPkR~K75|RK(kWCrcLqLH|z6Dt8M!cT%P3i&N9*e&_T#-&y)}pBuGj zcU%4)-H_PpH^t#O&lTEjX+(!%vtY_KdFQx>*ZjynvkhD}y)^HG*2mo1uh z!<~i>L#HoP8SCAKE-nujzGE8ND;tz8>h7PPg?z4-jCTUx3&C+|smGM?#*e2Z(g z_O!LvG;TfG3!8{;X%(;m;TSM#jLbL>+%vqpM^?DKe@7d-a!fTEmOcWzMq|;o;brD=t60^jG#}cY zKMH5Ml`0*!x*w~7uq1m)YMN}J{W;RFOkHF`v=ZCBoY8RusN(_@H;9Z48i_N5nS#YN z^1W!;5?^x$r@5cV09i}U5N-BjzV?kD_gz2R_fB%v06Fz%$ZZ}VuffkxWcA|*S*g=p z4QUEQ^9$1q8J}ionxaJ14-zrCbP)B2r71pu8$=VaJ_2iqrWu|vfr(5?!~&BwDWN9> zu~U>d^r|O=m>)}1+DlcS{XozGiUOT5lA5MUH~;)A`1#_0`Hu*HJi}jJm1f+5!7^l)QpPS@#sq=3@HAC@bcweVFV&1q1^Oh_ z(=xLulnQGyAf{p==~pO8H(_iUFlpT&R)hjr;i~v^W?$I_CXZ%T`IMv zDFUUosmIAmah{*~jWSiHn$#*e`_(!16%*A(^`rWUiL#iod8(9!vVU4O&B$`b8H39N zJh`7Qn^-^{g)}gfWfZZ3VXUK=R`I->QnoRI`x(vS^8EHmOm!WzR2{Qb6APvEx$0Kt zsg2aCPU_S)vF+d{wTne+4~x})>eV3{)Y~jo{WPjmELZ1PnUY?c)CE?kZ&<0mrCD8M zwfceE)Q_x{{%=>mutr^Gt>ch%Jk~q8Y;uP3sWXDJ&S*Y&#_@$y&6muQ`7CG1Wf@0Q zGh5?m=4f)YeBil6rJRHR!pZJVP1&Ce5xMerwDXT@wc`A>nu%UUc=}fvbcA_A?oi7K cIbC`2kMlA81Tt!5_z_l$ZB<5Y&d9s|0whFZ5&!@I diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index c88184c005..9109c44dec 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -6,8 +6,10 @@ public class Duke { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List commandList = new ArrayList( - List.of("todo", "event", "deadline", "list", "done", "delete", "bye")); - DukeList duke = new DukeList(); + List.of("todo", "event", "deadline", "list", "done", "delete", "bye", "save")); + + List commandLog = new ArrayList(); + TaskList tasklist = Storage.load(); String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" @@ -35,7 +37,7 @@ public static void main(String[] args) { if (command.equals("todo")) { if (!message.equals("")) { String taskName = message; - System.out.println(duke.newTodo('T', taskName)); + System.out.println(tasklist.newTodo('T', false, taskName)); } else { System.out.println("Oops! This task needs a name!"); } @@ -45,7 +47,7 @@ public static void main(String[] args) { String[] taskDetails = message.split("/at"); String taskName = taskDetails[0].strip(); String taskTime = " (at: " + taskDetails[1].strip() + ")"; - System.out.println(duke.newEvent('E', taskName, taskTime)); + System.out.println(tasklist.newEvent('E', false, taskName, taskTime)); } catch (ArrayIndexOutOfBoundsException e) { if (message.equals("")) { @@ -60,7 +62,7 @@ public static void main(String[] args) { String[] taskDetails = message.split("/by"); String taskName = taskDetails[0].strip(); String taskTime = " (by: " + taskDetails[1].strip() + ")"; - System.out.println(duke.newEvent('D', taskName, taskTime)); + System.out.println(tasklist.newDeadline('D', false, taskName, taskTime)); } catch (ArrayIndexOutOfBoundsException e) { if (message.equals("")) { @@ -71,17 +73,17 @@ public static void main(String[] args) { } } else if (command.equals("list")) { - if (duke.getSize() == 0) { + if (tasklist.getSize() == 0) { System.out.println("Yay! There are no tasks in your list!"); } else { System.out.println("Here are your tasks in your list:"); - System.out.print(duke); + System.out.print(tasklist); } } else if (command.equals("done")) { try { int taskID = Integer.parseInt(message); - System.out.println(duke.markDone(taskID)); + System.out.println(tasklist.markDone(taskID)); } catch (IndexOutOfBoundsException e) { System.out.println("Oops! Task not found!"); } @@ -89,15 +91,38 @@ public static void main(String[] args) { } else if (command.equals("delete")) { try { int taskID = Integer.parseInt(message); - System.out.println(duke.deleteTask(taskID)); + System.out.println(tasklist.deleteTask(taskID)); } catch (IndexOutOfBoundsException e) { System.out.println("Oops! Task not found!"); } + } else if (command.equals("save")) { + Storage.save(tasklist); + System.out.println("Changes saved!"); + } else if (command.equals("bye")) { - break; + if (commandLog.isEmpty() || commandLog.get(commandLog.size() - 1).equals("save")) { + break; + } else { + System.out.println("There are unsaved changes in your list! Do you wish to save?"); + System.out.println("Y: Save Changes"); + System.out.println("N: Discard Changes"); + System.out.println("Press any other key to Cancel and Return"); + String choice = scanner.nextLine(); + if (choice.equals("Y") || choice.equals("y")) { + Storage.save(tasklist); + System.out.println("Changes saved!"); + break; + } else if (choice.equals("N") || choice.equals("n")) { + break; + } else { + continue; + } + } } else {} + commandLog.add(command); + } else { System.out.println("Oops! Command not found!"); } diff --git a/src/main/java/DukeList.class b/src/main/java/DukeList.class deleted file mode 100644 index dac37e4827d83681f21759884a3454499b990128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2433 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 delta 403 zcmW+wyH3Jj7(IV4v@}%$$W1CBik5OIibWJ}^*%7k6A(>^#xSVS2hiP+{{f7fqf0e$ zaB?y}gb(1Pv&641=j2@SedkTT*4_8v%PW8;_BD*45QL5yA7*_peJHB1RFqVdBUG$u zWX(muP*<>^z!|s)W2V_Y>0Wm2({8_KcP`G3`@PoSp*Hxcvj)$xL$=6o*ipQxVoAp` zS~^k~SFz%YRX${nxQ2D!5S{`XzO~K2g(BPKhUiIq3m?rn&+_cNG{EOz=A?mJ}YzWk?bR zh=C|!23dYDMR{8e%L&pszsj%Vu#zSyP95mz+!qoqD5lo{(o(i9`W1A2u a04<%y7O|hXw0x6BRY;FgQYFv+$N4`iEIfPw diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 9157e8238c..fa482b6ab6 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -4,13 +4,17 @@ public class Task { private char taskType; private String taskTime; - public Task(String newTask, char taskType, String taskTime) { + public Task(String newTask, boolean isDone, char taskType, String taskTime) { this.taskName = newTask; - this.isDone = false; + this.isDone = isDone; this.taskType = taskType; this.taskTime = taskTime; } + public boolean checkIsDone() { + return isDone; + } + public String getStatus() { return (isDone ? "\u2713" : "\u2718"); } diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class new file mode 100644 index 0000000000000000000000000000000000000000..214cacd0e701c0df686aa643d49c221b75df8c4f GIT binary patch literal 2444 zcma)7T~ixX7=BK^cG)f;4W%@E)KpuV1PXTAMyZLrFk$8sK!*-upKnd}Vlp4;eD;8Z3Y zUUIi;EAqCj_-a*Alpe!MBNJ~SEzlXFmx*5VnRo~DCO*eyfq2^U3rP5TU7+Kp>w0ys zW^K+&Z_O>&+Y`92W5L7&EK)K>uu8C`qMT;{pFCxG$g&R^F!2Q*DQ^ZhF@!N4U#bXS znRtvxI#}ZaEDJ!#iaJtl{jdkt;8*VJeRp|Xu27pM(;+cknI>r(e);SYlh#S30g0~# z@^f;>?<~D$)ziyTI%$rUEKe9|{)92-?xc6!E#BRhX(7_KllInRT21`0K=+1KkpkPW>P5|+MEPRX%>3OW}!b5Cx# z+p^3K?7H7{(51jYbCN@le z=$t8UTG<3Udt$1#2SHlLIE4prFYg53SaU5AIRIPelQq1p~TM1$`hX0P` zl&i9Sz5&c1XROKc5^#QZQ--)dZ1NB3EeKJts@0P1$-D+f;KH%~!fK;p|L=!${0{W+ z!@vhby#%=T^D2U~XyKV}46f&Bxy*MzA53)Q_91f55Lw(u^jE}w_OWksZKDUEF^8f-Uwv^rZF_@uYr0EPkSM1S)KjP{5?Il_}bg z;eLUZi-DTbdWKd7PQ~`oHWAOI;vw*EmU@Q3!7zCHA-v;N@IJ!( z2_M3xAbXbds=7`p#(HDrJ)Ha<$vt!)6`r6g$ce!43)r`$Pw6ss1UtYfVD`mz*TPUB zLa@E0#c8?@{a1|(=peDZBsNcKl^R*4#ubqClutTU81UtIVc}sQ&|`$t)X+msm#SG0 zQvb+vLxe^zL%bTr7}s;WQx1B`CA*8!slEX719}JhVvp5TA4xeN?I?Z|5l^50Ie1j~ zX list; +public class TaskList { + protected ArrayList list; - public DukeList() { + public TaskList() { this.list = new ArrayList(); } @@ -13,18 +14,18 @@ public String add(Task task) { + "\nNow you have "+ list.size() + (list.size() == 1 ? " task" : " tasks") + " in the list."; } - public String newTodo(char taskType, String taskName) { - Task task = new Todo(taskName, taskType); + public String newTodo(char taskType, boolean isDone, String taskName) { + Task task = new Todo(taskName, isDone, taskType); return add(task); } - public String newEvent(char taskType, String taskName, String taskTime) { - Task task = new Event(taskName, taskType, taskTime); + public String newEvent(char taskType, boolean isDone, String taskName, String taskTime) { + Task task = new Event(taskName, isDone, taskType, taskTime); return add(task); } - public String newDeadline(char taskType, String taskName, String taskTime) { - Task task = new Deadline(taskName, taskType, taskTime); + public String newDeadline(char taskType, boolean isDone, String taskName, String taskTime) { + Task task = new Deadline(taskName, isDone, taskType, taskTime); return add(task); } diff --git a/src/main/java/Todo.class b/src/main/java/Todo.class index 76fd997c67a72159f37629afbcc78d2021c5ae12..c8263cf54c8eb58f02143b942dcfae05b4e04e8f 100644 GIT binary patch delta 106 zcmeyy_>*yhvZ%O*PgY`CqJBhFObvWS?5PgY`CqJBC!tIJLB8 hgc!FoFl_{K7#TQ#Bo_k{kYon3S%4y(KsFNt7XSiK6_)@2 diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index 962eb94f71..da549b3d8c 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,5 +1,5 @@ public class Todo extends Task { - public Todo(String newTask, char taskType) { - super(newTask, taskType, ""); + public Todo(String newTask, boolean isDone, char taskType) { + super(newTask, isDone, taskType, ""); } } From 1b68b03e49ea8e2fb587820bff1bc67a6a7e8d04 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 26 Jan 2020 14:30:47 +0800 Subject: [PATCH 16/36] (Level-8) Added LocalDateTime class to represent date and time. --- src/main/java/Deadline.class | Bin 225 -> 225 bytes src/main/java/Deadline.java | 4 ++-- src/main/java/Duke.class | Bin 4293 -> 4407 bytes src/main/java/Duke.java | 9 ++++++-- src/main/java/Event.class | Bin 219 -> 219 bytes src/main/java/Event.java | 4 ++-- src/main/java/Storage.class | Bin 3701 -> 3789 bytes src/main/java/Storage.java | 3 ++- src/main/java/Task.class | Bin 1604 -> 2924 bytes src/main/java/Task.java | 42 ++++++++++++++++++++++++++--------- src/main/java/TaskList.class | Bin 2444 -> 2444 bytes src/main/java/TaskList.java | 9 ++++---- src/main/java/Todo.class | Bin 249 -> 249 bytes src/main/java/Todo.java | 4 ++-- 14 files changed, 52 insertions(+), 23 deletions(-) diff --git a/src/main/java/Deadline.class b/src/main/java/Deadline.class index e2ce960929135703ac2d60163888eaae7dd59e8c..7cda6a5ac98500ce65c3003d71fa1aa839928906 100644 GIT binary patch delta 37 scmaFJ_>ggel8AGZPgY`CqJB;M1& delta 37 scmaFJ_>ggel88@MVp*boPGVlVesD=qW?s5=l=DQh7G`Z3*@=5q0RMRm>;M1& diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 7df4cdaf27..22da0bd3c3 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,5 +1,5 @@ public class Deadline extends Task { - public Deadline(String newTask, boolean isDone, char taskType, String taskTime) { - super(newTask, isDone, taskType, taskTime); + public Deadline(char taskType, boolean isDone, String taskName, String taskTime) { + super(taskType, isDone, taskName, taskTime); } } diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 075f86d3b83ce46b86bc9492abb66d1c7971a884..422bf47546eed2c585e87626ca6199e9ed5fa9ee 100644 GIT binary patch delta 1088 zcmaiyTWl0n7{`C#*|vL|)~3~##S~_H-L{cJ5vkQi>D3?w#FB^zahDFeTi9*guBA(a z1#LovD#0-^JQ+2S7#|F7-6q8NhSe%Uy|&&_NtF0tj3jCr>)DkzO?;ShzVDm=<;;K1 zdH-~^XZEjiZvk!maLRMC(!(|mIXUbi?c#`&qb?qI@x9;$LrgX*Yl$ZIl+;m2HeaHpi4X4Rn<)&vQ$1g7vvEIc!-&9`RbcJJ&Skn-{f_>$;KVHT|cPEyWd0 zk^dF$y)K-&wYW{>kR2=Wr+4P8dbCw@mfo`z>A)9RqAs_KpMbQ9B@ycK`*GdR$rbsL zR#{Tzs)AM&n?Me-TVFI6ULE2}9bLT+ZxzL?AvN47&AML2UDCz|*+8dkq)YCnTP!x~PwJH+`qGl*9!axNj_KiXHpwLY@~p0( zW2?Nteew$1WQqZKlkGCY12V^hGS5!A!fu_zLvoc}@~f_|@vtlrQbp`hV z%G7lY5p@eu)yk0SV87}krlQ2ve)>mLl1J2IB-8|>YLcXShDX)QjHy>SpfZfBEGae1 zL3M$nYJmxLnPciFo>V_`LjA_1`kklPqQl=umA$$&P@8g6w@8Iv|HRqpBw+k|Vkb)j ZRo`fmM_>1^bf913Bbxt%!jPWr`x|`i1OEU3 delta 949 zcmZ{jOKeni6vlt&Khw^gJD15Ym6F>+=zuLV7@!uBG9vP5H42qRgHkJMhc*RUs?cg^ zs7x&lbpwRlL{nL?sFn>2u{uraBeFotOI{WMQ2{B@RRaqbY7A!v65_(mx#ygG-+6rJ ze}`utjoHWl9r+rlN1V~$STfA%06UESa_>)d!S$ym89i!enU-x9+ z{8XpKF^A)fI-KC7SLCk^p9=83!)eYqoaLOi&A%*uo^uWyeSu-IO5zP2$r4F;j|HCzYLx2C zMLUDH^M7&pjO*TZJ0Ul`kL}N8+^Y|zr{)o)hG%u5Rp7sgjRWQn?^bA!JnnTna|-i6 zr63y1Fy)~9?FOQO3^V$9$@|7}(<3|x$&dnEf27*y+HNRAX%6~jGU!^-q8vD!tuQ;A zCX0>6bBGVMn02?9A`=;ADJAHu$lxYzH|WngBh0zqpz2|#fm zs}Eqlp0u26Jj{fSAS89PM6G_t|3h zv(*gHZU*TvBb2^nzM{((0Q(>e)Bpeg delta 37 scmcc3c$;y8l88@MVp*boPGVlVesD=qW?s5=l=DQhI%aJd*@@d#0R4>&)Bpeg diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 370f0b7e91..533c073b59 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -1,5 +1,5 @@ public class Event extends Task { - public Event(String newTask, boolean isDone, char taskType, String taskTime) { - super(newTask, isDone, taskType, taskTime); + public Event(char taskType, boolean isDone, String taskName, String taskTime) { + super(taskType, isDone, taskName, taskTime); } } diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index 013c3c2e74647101af2a49d60acfbc18301642eb..d0108fb8e74a0f656ffb74f0e47a7fa1f751dd95 100644 GIT binary patch delta 1379 zcmZvcTU3-)6vuyOW|;HM=TT?~mQ)y;s~8l~w6#8SACx_wYZLz4w3bv(Nv0zh87b zzvtNB14n?V{Nyr&I)`~K^)zVayEJm$Fq&APS!l=W!{T_8i)OJ)88>TgaWT|sqAnv? zqFL&aMRQ09V%ALplnq$Ma%+e?w7LXX;m~Hsl@9Gac9O6(9S*nJG3k)9W2dGojE~zi ztHSutCSDU3cVR5!4$Ym`yjCL|<81c3T#C6nB(dvU?qU5fYPi?J2F*s7$=qk*euoF_ zxXIx`m;A{*6efd5Z0w^J9t#t+te)m^Z=`Cy@CijA7442Gh8NZ}MpG+l;;GKkNRwuZ zw_T0OEoY{}=}N_t6Pn{m&69?w*y^27In_@ao?)A2yI}{|jHzsn}@HT@EM+~#MT9KVDqAl9KtfXqy(pX1lJkf5w-|;T> zPpmKJUBi34uld06As-n&X3+2npGq%n3k^p(X84Rj$vDyQxvf$z?l`*~zOY1J8osji zpJ1lL*L}PFbCv%j-}LZEVng<@)}!yJTd8`i%Q^}K z&llnxp%^KcC$1NWaPmb|qvRo7Oev#1^|RgE`#c%)}aR^v{b@YG(Myo`RP4G1;UgT;BleoA|X_7(SYWiMH^ z2MCWJkdz{Voc+QVpqtf10Y~OKbJeYW0w`&-JZ)*ZS{$zWv|h+2>g1UvmeKo|!xV zEaX?0avB|$yR2ZPW|hloni5#UTFp8uuL%k9Iv36LE@j-HxzWYYsM+X}L|C)QC7I@U z3D9C`;-IXb#%-G0t@#ekc9(pcU1Ak-XT12{<+6jj6R2aSg?lvjx?IkE7VdX=z{&?LJak@& zI3BT%k6L&vM9_wOLi41Tq1rP%MIajPZ&f7DuWt%RJL)6RzS3M7$y45Ll{HwwVuiCc z+S+?*OQcuxwBZ?cDU#d6{o$g{a93N=>b~AcSDWTp!*e{ZdBHHmiwYB?M7oQXMLJsz zFEK1`mEGNa(Z1erPeW_pmhP75tRTA`UN-Dum!X1J3|CPlDbLp8mHE>B6};-L_hr;q z@S5RuMjYPIylL2L*>Bmf{_O49hPQb~p%xh4IxV#85}4PP_t@QqDy%IkIc# zl1iFT(`9|;%1UL*TgswTI8|IgHS^>dUC3H4VG}tFkjqZ;Z{ zZooTZ=BqL?2e#DLLf6Q%5C0fHvBtK3{A^ z<o&1ei+3}@nH0_^ zPGdA$ldmb%)Omj0PNA$sGKj-CBG~6ZnU8uP13vO}zy3N%E5-U2*u4U-(Hz ezFy7+((wlQc5Mt>W4JYj12Mcch7ZT^@&5n}-0k21 diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index 34da171b2f..281d27c26f 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -7,6 +7,7 @@ import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.LocalDateTime; public class Storage { public static File init() { @@ -77,7 +78,7 @@ public static void save(TaskList tasklist) { String taskStr = thisTask.getTaskType() + " ~ " + (thisTask.checkIsDone() ? "1" : "0") + " ~ " + thisTask.getTaskName() + " ~ " - + thisTask.getDeadline() + "\n"; + + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskTime()) + "\n"; bw.write(taskStr); } bw.close(); diff --git a/src/main/java/Task.class b/src/main/java/Task.class index 13b49108f2b721a7c2ab786d1ade240109f70a5a..53b7aa5c32f4efd74bb89f57e65a5f0bc3189c27 100644 GIT binary patch literal 2924 zcmbVOTUQfT6#h;~m?RDYZ>ZDgj%l)?3>l8DJ!tiOB?wz2EOQ z+pg+beej`c`O*j5RjiAL{(%0B{*c=5%!CjK+OAHLz0clfpM9Tw^5@@6e*idy@50!L zXG7@3F$s=KkO-q6Lm}+LaG2zXjyk3zK~^h_N72ayc%+gaoG~cwT}R!kEOA zM*S~o5I7gac?~{Xl*(S#(12IvO4r~=T0;QoAPfaF3T6d@j$WLfD(4LWkq~G!i$k_0 ziF1{`aXm*;8@r@0=<%#>&BiC4f@#eTE}u2!ew(-Nkcf}jX+1lnJH`|#iZvcFEz>zF z&>KyhtJhP{={+srPuLmiZ5}f%W4x4`HVRYvbe5c^Nk>o5r}Vr_E0|MY3WV}{p=d~> z0{zi-R6fMN@bJ~Nk#|hnDk``nupvEXr00{BL^MQunTpV?;n1*CDhh0l_SPHVF^Wtv znO?${DKE8D!sJ$Y%!`6~CNQTL=DmCe9ox&RKzPzF71G9tDZ>p(mHTA!RYZ|h5kZ%V zZak`@2fI|{a6pBHJu2eZuVOd$Flm`gJQXkViHwd8} zoiBDprsm9IM0Ql@t!>OzKVl*GKdc(@u7+VNqi)U zkAwI`fSv4@!PAG8-kX@dWTc%{tmU+AbEWD#P+-r>&Wv5i=}vsPJ5R~3sg|FmbtO$Z zK4}z8J!@X`dXD8|ODbk@IG1IM#<{8% zzC!`GzXi_Jsz}V~g-PRb$*|JKU`>NRP*0_A>vKd4O>EyGy*x3KvMpzhF-Cin9@k}@ z*0UwHqe7{(hR(p`YLt!Yy&EahD#>@R)y;`JCX$w8%*qrf3-av5jKJ1tvi8-fNDPMY zDLxbM?H2;ua{9cHu&uQ2oH3m_u8NLsIc(c4s}EPFP)Nl2iHHH7-WN^s@lvs-ii5S5 ztA}@{yxw%Gja%u`fpCNmRc?=t$u3;~c<8*i7?D2;9*!pJ$3i`4T{l{*dLq&3@<2rN z3Y`3J`u>Ln-H{d)d@f(MuLXKmie_31_PkLU@m?85^t59a$_lP?l#ki=d?_!WCN0Y- zB(i$3Xs|XnYTL4+!65Rhf#4gr3b# znvOB3fTM0#U3}~LCeZnCIdt(B-N{?l&&!o#m@A*0#4hGAb}^C(0%th^?Hc}k&gi=%RapAE(-C!sfb>$ zgm{8}1@B^`hoqOJT0GS1A+06!(=toDhfTNLU?`?7VKcDAG+`wk`Hu^1gEofW!3amV zmZj>Fr8?+V2Y$ilKInx`npdEsAVkLi_Ue z@VeU_+}3uiWTBG|$-llK)~21I^)R#n97O`p;4F^0E(Xxh-q}e{k5bgfjjxEM(_i2l dd`X91B)yw;I!)dg7oK(D1sA^J!f6*~{sG(wqyzu} literal 1604 zcmaJ>T~iZD6g{1<8ODLI@q-mah7~j!6x4NB*Z3V4VFi7F(kd+HUlyljKlcA9!yIoSF-Hh0Gle05KtRP1GWS?Tqao(p6uVU4l*Wk2wqZf~u7 ztu?vcpyxz&)2r5(+L_bE5_1o1cxqKiwH*nZDwcW~1qOLut*^*tOk>~{nHaU!QFyRR zB#@UPv~S*%wFZlzq%GO1CxT5CCS4G)R>SR9)m!j&aRZufR=3K=Y5Znm2zeXB_`ya2 zCvBWUULgJDpTAf_FjSFh z$>xfuHp5z!&*8R-vW+{qYhw)OOx)9(`)r^tg&~Lc_H6x)S5-$`2O=o~rtE z_txv_Lv7%Z*1RAvbtu*k-iCFrJ*!Ev3$m)h){cQi&g60!*0-Ai_EHddtx7{ikw*o) z-6PuONP4{}gIdFjrjo#NZ)IJcBY}FL`oLdx;gg#=(zZ55MK&6%zVgZjmIS7I^!2Mv z;QaS-nB=QI$ag-2l%7yNrSy=-E9W#`IjUSu{vVvi8QKx<7KqDo9d$oKxHEf5x##wf zcE|USanEMm>A%92o{-7;4E_s+R--WI9EYr*8Lype>>s1*qNv0 zRMYD8H@IqOUPJ$eS;)OZwqU%cD;4KVf=*(b9s?=+p@H*^nCLKcCrjzLq}C*Eggb}5 zNs@I#Gso*1Bj~5Ttl8tN6NFyqKr5_NOE{BA$Q8`@F8h{t_t_#GDk-pUV4Q&|_U$6? z;!>~&1oE%7qam?m+Gl)rP;TopXVJTGL9`yrlO KrSDp7Z+rtS|5r8u diff --git a/src/main/java/Task.java b/src/main/java/Task.java index fa482b6ab6..79ad4c2e77 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,14 +1,24 @@ +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + public class Task { - private String taskName; - private boolean isDone; private char taskType; - private String taskTime; + private boolean isDone; + private String taskName; + private LocalDateTime taskTime; - public Task(String newTask, boolean isDone, char taskType, String taskTime) { - this.taskName = newTask; - this.isDone = isDone; + public Task(char taskType, boolean isDone, String taskName, String taskTime) { this.taskType = taskType; - this.taskTime = taskTime; + this.isDone = isDone; + this.taskName = taskName; + this.taskTime = taskTime.isEmpty() + ? LocalDateTime.MIN + : this.parseDate(taskTime); + } + + public LocalDateTime parseDate(String taskTime) throws DateTimeParseException { + return LocalDateTime.parse(taskTime, DateTimeFormatter.ofPattern("dd/M/yyyy HH:mm")); } public boolean checkIsDone() { @@ -27,8 +37,10 @@ public char getTaskType() { return this.taskType; } - public String getDeadline() { - return this.taskTime; + public String getTaskTime() { + return this.taskTime.getDayOfMonth() + "/" + this.taskTime.getMonthValue() + "/" + this.taskTime.getYear() + + " " + this.taskTime.getHour() + ":" + + (this.taskTime.getMinute() > 9 ? this.taskTime.getMinute() : "0" + this.taskTime.getMinute()); } public String markDone() { @@ -41,6 +53,16 @@ public String markDone() { @Override public String toString() { - return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName + this.taskTime; + if (this.taskType == 'T') { + return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName; + + } else if (this.taskType == 'D') { + return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName + " (by: " + this.getTaskTime() + ")"; + + } else if (this.taskType == 'E') { + return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName + " (at: " + this.getTaskTime() + ")"; + } else { + return ""; + } } } diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class index 214cacd0e701c0df686aa643d49c221b75df8c4f..40487fc7c48ddd5b39365460b93b161b3f3d9fb5 100644 GIT binary patch delta 168 zcmeAX?h)Q_fO)b$qbN%lBZKDT6h@8Bj4TtFI5`+t7&saD8Mr3TV)NtW1+w{oke@+= zfp79xHg{%e8QsbD?9!~l3_J`XljGT?z#=v5vaAw7b&`|ku}g6P)kv~zXAqd&$S%Pu z3lx@{e3#vfQE9RWM-s0Zg8+j%gEY`UYoNW&95IZ#lOJ&S3mP#nGZ+KqOc<1av<8FO IWCu list; @@ -15,17 +16,17 @@ public String add(Task task) { } public String newTodo(char taskType, boolean isDone, String taskName) { - Task task = new Todo(taskName, isDone, taskType); + Task task = new Todo(taskType, isDone, taskName); return add(task); } public String newEvent(char taskType, boolean isDone, String taskName, String taskTime) { - Task task = new Event(taskName, isDone, taskType, taskTime); + Task task = new Event(taskType, isDone, taskName, taskTime); return add(task); } public String newDeadline(char taskType, boolean isDone, String taskName, String taskTime) { - Task task = new Deadline(taskName, isDone, taskType, taskTime); + Task task = new Deadline(taskType, isDone, taskName, taskTime); return add(task); } diff --git a/src/main/java/Todo.class b/src/main/java/Todo.class index c8263cf54c8eb58f02143b942dcfae05b4e04e8f..d1a9b40867fed85c7807d5912419c00278daf444 100644 GIT binary patch delta 61 xcmey#_>*yhs)%!xPgY`CqJB*yhs)$ckVp*boPGVlVesD=qW?s5=l=DPOKkVYO&6%}jWG7x#0RXej6}SKZ diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index da549b3d8c..6889f10f38 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,5 +1,5 @@ public class Todo extends Task { - public Todo(String newTask, boolean isDone, char taskType) { - super(newTask, isDone, taskType, ""); + public Todo(char taskType, boolean isDone, String taskName) { + super(taskType, isDone, taskName, ""); } } From defc074a74a3657bb3306766a4315f01d35a0047 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 26 Jan 2020 15:28:17 +0800 Subject: [PATCH 17/36] (Level-8) Minor trimming of code --- src/main/java/Duke.java | 2 +- src/main/java/Storage.java | 1 - src/main/java/TaskList.java | 2 -- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index a58f0dd720..b97a3421e6 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -17,7 +17,7 @@ public static void main(String[] args) { + "| | | | | | | |/ / _ \\\n" + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo + "What can I do for you today?"); + System.out.println(logo + "Welcome! What can I do for you today?"); while (true) { System.out.print("> "); diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index 281d27c26f..59ccddcfb8 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -7,7 +7,6 @@ import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; -import java.time.LocalDateTime; public class Storage { public static File init() { diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java index 93d0cdf17b..8baa8fcbe6 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/TaskList.java @@ -1,6 +1,4 @@ import java.util.ArrayList; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; public class TaskList { protected ArrayList list; From bd31f527abd10fa8ad68d3a9739f93d75cbab741 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 26 Jan 2020 17:51:47 +0800 Subject: [PATCH 18/36] (A-OOP) Reorganized code --- src/main/java/Duke.class | Bin 4407 -> 1288 bytes src/main/java/Duke.java | 137 ++++------------------------------- src/main/java/Parser.class | Bin 0 -> 3672 bytes src/main/java/Parser.java | 110 ++++++++++++++++++++++++++++ src/main/java/Storage.class | Bin 3789 -> 3789 bytes src/main/java/Task.class | Bin 2924 -> 2921 bytes src/main/java/Task.java | 4 +- src/main/java/TaskList.class | Bin 2444 -> 2444 bytes src/main/java/Ui.class | Bin 0 -> 2052 bytes src/main/java/Ui.java | 45 ++++++++++++ 10 files changed, 172 insertions(+), 124 deletions(-) create mode 100644 src/main/java/Parser.class create mode 100644 src/main/java/Parser.java create mode 100644 src/main/java/Ui.class create mode 100644 src/main/java/Ui.java diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 422bf47546eed2c585e87626ca6199e9ed5fa9ee..5198ca98d623e9796e381b96537e09c3af82cfb5 100644 GIT binary patch literal 1288 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 Xfo4B-&)-o{evcpwHwhT_60Ymt1$>u2 diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index b97a3421e6..b56ef20e9a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,142 +1,35 @@ import java.util.Scanner; import java.util.List; import java.util.ArrayList; -import java.time.format.DateTimeParseException; public class Duke { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - List commandList = new ArrayList( - List.of("todo", "event", "deadline", "list", "done", "delete", "bye", "save")); - List commandLog = new ArrayList(); + List log = new ArrayList(); TaskList tasklist = Storage.load(); - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println(logo + "Welcome! What can I do for you today?"); + Ui.firstRun(); - while (true) { - System.out.print("> "); - String input = scanner.nextLine().strip(); - - String command = ""; - String message = ""; - - if (!input.contains(" ")) { - command = input; - } else { - String[] s = input.split(" ", 2); - command = s[0]; - message = s[1]; - } - - if (commandList.contains(command)) { - if (command.equals("todo")) { - if (!message.equals("")) { - String taskName = message; - System.out.println(tasklist.newTodo('T', false, taskName)); - } else { - System.out.println("Oops! This task needs a name!"); - } - - } else if (command.equals("event")) { - try { - String[] taskDetails = message.split("/at"); - String taskName = taskDetails[0].strip(); - String taskTime = taskDetails[1].strip(); - System.out.println(tasklist.newEvent('E', false, taskName, taskTime)); - - } catch (ArrayIndexOutOfBoundsException e) { - if (message.equals("")) { - System.out.println("Oops! This task needs a name and date/time!"); - } else { - System.out.println("Oops! This task needs a date/time!"); - } - } catch (DateTimeParseException e) { - System.out.println("Oops! The date/time might be in the wrong format!"); - } - - } else if (command.equals("deadline")) { - try { - String[] taskDetails = message.split("/by"); - String taskName = taskDetails[0].strip(); - String taskTime = taskDetails[1].strip(); - System.out.println(tasklist.newDeadline('D', false, taskName, taskTime)); - - } catch (ArrayIndexOutOfBoundsException e) { - if (message.equals("")) { - System.out.println("Oops! This task needs a name and date/time!"); - } else { - System.out.println("Oops! This task needs a date/time!"); - } - } catch (DateTimeParseException e) { - System.out.println("Oops! The date/time might be in the wrong format!"); - } - - } else if (command.equals("list")) { - if (tasklist.getSize() == 0) { - System.out.println("Yay! There are no tasks in your list!"); - } else { - System.out.println("Here are your tasks in your list:"); - System.out.print(tasklist); - } - - } else if (command.equals("done")) { - try { - int taskID = Integer.parseInt(message); - System.out.println(tasklist.markDone(taskID)); - } catch (IndexOutOfBoundsException e) { - System.out.println("Oops! Task not found!"); - } - - } else if (command.equals("delete")) { - try { - int taskID = Integer.parseInt(message); - System.out.println(tasklist.deleteTask(taskID)); - } catch (IndexOutOfBoundsException e) { - System.out.println("Oops! Task not found!"); - } - - } else if (command.equals("save")) { - Storage.save(tasklist); - System.out.println("Changes saved!"); - - } else if (command.equals("bye")) { - if (commandLog.isEmpty() || commandLog.get(commandLog.size() - 1).equals("save")) { - break; - } else { - System.out.println("There are unsaved changes in your list! Do you wish to save?"); - System.out.println("Y: Save Changes"); - System.out.println("N: Discard Changes"); - System.out.println("Press any other key to Cancel and Return"); - String choice = scanner.nextLine(); - if (choice.equals("Y") || choice.equals("y")) { - Storage.save(tasklist); - System.out.println("Changes saved!"); - break; - } else if (choice.equals("N") || choice.equals("n")) { - break; - } else { - continue; - } - } - - } else {} - commandLog.add(command); + boolean hasNotExited = true; + while (hasNotExited) { + String thisResult = Ui.getNextCommand(scanner, tasklist); + log.add(thisResult); + if (thisResult.equals("exit")) { + if (log.isEmpty() || log.get(log.size() - 1).equals("save")) { + hasNotExited = false; + } else { + hasNotExited = Ui.askBeforeQuitting(scanner, tasklist); + } } else { - System.out.println("Oops! Command not found!"); + System.out.println(thisResult); } - System.out.println(""); - } - System.out.println("Thank you for using Duke.\nHave a nice day!\n"); + Ui.exitMessage(); + scanner.close(); } } diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class new file mode 100644 index 0000000000000000000000000000000000000000..67351af1db2d6e223e041281a43afeb53832ffba GIT binary patch literal 3672 zcmc&%+glsQ75@#A*hQ=XuZ^z(76Y}AlnCR5#Ky)KE`|i*G?MLLlD3O9z#6fu>@L`( ziQBqKddsDao75()>$q-nZxl!{c3SuAOCS2&r+$6tztQh&`}NF7*rFzF-@1G=XU>^9 zXU=`ZAOCslHh@QPD~v9DS;Z4!1d&pZ7Vw0MlPXTBcv4`aVme)ghcH%+r|`5uzoO!+ z0)9<}sbXA3MnzTyS23YtGK?u$g5iu#)- zGtSJ6X=jHm&u6F`K4Z?AiCN#uB?P6Lp(eZ zOKnN!h~p19vv!t2zxN=+2H*6iM>x-VBjyZA-*^Y_Gku=61Z~q<*Rdy8@d3x3F-gs8 z+es5|Nw`+ThU}sZwOPx{=gfI=qDav)Q=}pHQsx{dWhxI?w&nLQ1S0Jx8G^k|mTsyY zwroB!J2TGRv^kz5N;q%29v`yvvvlR|$h{`CkKIcnvr@j9nNFH{DMrDo3^jSz$#Bo> zE&7^aPh=g|;Z=>h+t-t;9?0ZMiicCqtefEjmQb_$aiOOBfQX!iKJ+s%L&IzMA;nXM zvn)OueuUS_@`P|>ATd7ApwRj`T8XV84Hxla4G-fH1#bu;Z)*4nE|HgfC+ldqj5irV ze2&}1uV%TKC7no#U{2;wFzX1cGRt$^7i5oIPJo}Yd<6>{-oj5c9K-<)Kf@LBs?^V? zP$wp2Y!j=YmPYlT%kaE!IktvFf~QAJKgSgfS8++h5rH1X0kZR`V4X3DEwoFWS#iNhE}$=upqn@$oY}Lz%Q`opPZ3$~d-fTDHfqv%LIBvYX=1%yK)!yW3Aw zLQ=t7BqmaRs??B%*00hKWs8+(*c@56*lO;ExY$GL%S9K}mRGA&rZ-jWAkPKkUd-~quURMQ`nEH!_wtro&|4~jg$?3aOsLCYwQ`WOQi~>HP z7Qn)cVe5=J&3hd?WBR8opUkm6-?V))qNCjGl1KkbpW0YnUp}AYF8QL=N-0Kb99fbm z{HD&B?sT7QAN7%;bv+U;wiV%5@@dL`LvEm-11pqy!;UjO zOF69#**153bEfBUis7YlSCnKF+vFfU{5kHm78$$C{IeSBdoC|Brswl~o#W+Iyjmk= zLQ8k|nz>xc@_Dy{n+$DVaK&2P7#jccIW*HxpDy~5R7HREe1TyfVHMa?NcJMM8R0B&3#4Fi5iKS*3Y^um*yRU?_S6>=Rlr9HY6iNTkaKF+^)| zbO9j*2#!Vdie&^Apap-6;AkM4Di9^KjL>i_*r`{_y*jZ}vyW(*tmug^W5Wl;OW)@-)WXDz0(~8cmJ0-5K;mX2 z!H>~dxI%Ca5B>gmf>+TsC44X(`h&Yb@N{GF&rcGZit9DYsJ#p;(DM$malKArV?n}B z#`TR7ONIy=jO)6@4pkDiKdx_**dB$jcwFBsu@;rE#<*TDvHCi3v^K79k!WR|($nxh zT}t0y!^vhpuC5tgc@W zqamViFYFI4VyD=-3S|-ZtvT0s=Ul_O=VHrfTo7zc#Ad{9QTC!hqF1o1D;TQ}E~7>A zwXG$7sYHyeVD};-1&R>yx66SbYhrPBKX$NVEX__3JkMTcub`D(WN));Xe}kmt7suR zTTz2H7DR-F(a!1-W80BnP1r*cI#~jH*s!@F>gUG3F!5&f^L85>j+)n!Sb->>^IHw=hPxKgF)&Y4$Em_94bu0i1n`Nw$JB zGBNj};UCBE7H68IYxmWq)(Re1qnG71>@9MMs| zMz7O1>bky3->lc`TUHRef%p=t_4}95u0ODZZF*t}_vsx=*s1SXLYv;XgeHCO5)A#p zB}DF)byUi&#AZsI22^7gH0;I(#L0boP)i-Bj;d=T4pYqqaGW%#z~lIgV3>+)2{-U5 N)uKnZO1MvB_FtCbswn^f literal 0 HcmV?d00001 diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java new file mode 100644 index 0000000000..34f3bbf24e --- /dev/null +++ b/src/main/java/Parser.java @@ -0,0 +1,110 @@ +import java.time.format.DateTimeParseException; +import java.util.List; +import java.util.ArrayList; + +public class Parser { + public static List commandList = new ArrayList( + List.of("todo", "event", "deadline", + "list", "done", "delete", + "save", "exit")); + + public static String commandNotFound = "Oops! Command not found!"; + public static String taskNeedsName = "Oops! This task needs a name!"; + public static String taskNeedsDateTime = "Oops! This task needs a date/time!"; + public static String wrongDateTimeFormat = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; + public static String noTaskFound = "Oops! Task not found!"; + public static String noTaskInList = "Yay! There are no tasks in your list!"; + public static String displayTaskList = "Here are your tasks in your list:"; + public static String changesSaved = "Changes saved!"; + + + public static String[] parseInput(String input) { + if (!input.contains(" ")) { + return new String[] {input}; + } else { + String[] s = input.split(" ", 2); + if (!s[1].contains("/at") && !s[1].contains("/by")) { + return s; + } else { + String[] temp = s[1].split("/at|/by"); + return new String[] {s[0].strip(), temp[0].strip(), temp[1].strip()}; + } + } + } + + public static String processCommand(String[] command, TaskList tasklist) { + if (commandList.contains(command[0])) { + switch (command[0]) { + + case "todo": + if (command.length > 1) { + return tasklist.newTodo('T', false, command[1]); + } else { + return taskNeedsName; + } + + case "event": + if (command.length > 2) { + try { + return tasklist.newEvent('E', false, command[1], command[2]); + } catch (DateTimeParseException e) { + return wrongDateTimeFormat; + } + + } else if (command.length == 2) { + return taskNeedsDateTime; + } else { + return taskNeedsName; + } + + case "deadline": + if (command.length > 2) { + try { + return tasklist.newDeadline('D', false, command[1], command[2]); + } catch (DateTimeParseException e) { + return wrongDateTimeFormat; + } + } else if (command.length == 2) { + return taskNeedsDateTime; + } else { + return taskNeedsName; + } + + case "list": + if (tasklist.getSize() == 0) { + return noTaskInList; + } else { + return displayTaskList + "\n" + tasklist; + } + + case "done": + try { + int taskID = Integer.parseInt(command[1]); + return tasklist.markDone(taskID); + } catch (IndexOutOfBoundsException e) { + return noTaskFound; + } + + case "delete": + try { + int taskID = Integer.parseInt(command[1]); + return tasklist.deleteTask(taskID); + } catch (IndexOutOfBoundsException e) { + return noTaskFound; + } + + case "save": + Storage.save(tasklist); + return changesSaved; + + case "exit": + return command[0]; + default: + return commandNotFound; + } + } else { + return commandNotFound; + } + } + +} diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index d0108fb8e74a0f656ffb74f0e47a7fa1f751dd95..fe6a98c39ed275d4c60083853b3fffface2e5914 100644 GIT binary patch delta 222 zcmWO0ODhCm0EOY_tFbU5woP z%1ni7v*zz^QX!X*4hvChQN3kDR*YD+WG&{pBO8uwI*A6ScAVRG5lyb`72ngp{~~-R AX8-^I delta 222 zcmWNLJxhXd6vcmk(4mJ%Q&7p^QPdz&610RgOnU)E$(Ixr+ynzBp&_!xCHexc;o{~L z_z8q^a}ovn1})Amfp@u_d%5SF-@;fJUmZ>9!zZnNV8y~A9&FPet*HhMOgPawlIfQ7 zF=rT@i@LMvZxAO9_dN@Gc{gl(ie(18hp?i Ht}MGfI0Yw~ diff --git a/src/main/java/Task.class b/src/main/java/Task.class index 53b7aa5c32f4efd74bb89f57e65a5f0bc3189c27..19857b981c4000ab93cb7bc687cdff5a7c6fe6b5 100644 GIT binary patch delta 39 rcmaDO_EKy^E)x%LioUOYB@ifhcx}3XGdmSUK1L00RoE delta 42 ucmaDU_C{<&E)ySrN{YU(ekBkncz9TCu4H<^#L3C14}=PgR+|%9IoJRv3=4z+ diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 79ad4c2e77..4d576b9147 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -18,7 +18,7 @@ public Task(char taskType, boolean isDone, String taskName, String taskTime) { } public LocalDateTime parseDate(String taskTime) throws DateTimeParseException { - return LocalDateTime.parse(taskTime, DateTimeFormatter.ofPattern("dd/M/yyyy HH:mm")); + return LocalDateTime.parse(taskTime, DateTimeFormatter.ofPattern("d/M/yyyy HHmm")); } public boolean checkIsDone() { @@ -39,7 +39,7 @@ public char getTaskType() { public String getTaskTime() { return this.taskTime.getDayOfMonth() + "/" + this.taskTime.getMonthValue() + "/" + this.taskTime.getYear() - + " " + this.taskTime.getHour() + ":" + + " " + this.taskTime.getHour() + (this.taskTime.getMinute() > 9 ? this.taskTime.getMinute() : "0" + this.taskTime.getMinute()); } diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class index 40487fc7c48ddd5b39365460b93b161b3f3d9fb5..d3d78667069a9a7069c0c4581905256ccfb12fad 100644 GIT binary patch delta 121 zcmeAX?h)QFk&Tm$frWvcfuDh6@+>w#UTy|X1|9}J23`gY2A;`Z*-}{rfqbFK@$6Qt zVnA{6$@73LX&_5x@?CZ_Muo{D97((?3<3w#US1%Z4+!}gG#L0Me`QN$6=vXJ5Sbj$ZpA7A z6qlSl56F@Qvg9V;WjA9~nk>SR#H+?2z@W|`4b)@JpgFmjBZg6T@&gWkK_doc24kR{ Q34;=l)?hH3?7-;*0M!2!AOHXW diff --git a/src/main/java/Ui.class b/src/main/java/Ui.class new file mode 100644 index 0000000000000000000000000000000000000000..2b990262956e7158839c10b968c7a612aa39c9fc GIT binary patch literal 2052 zcmah~+j7%J82&a1k)ntk3;|kNx`8C*1O|G5VhSw=N=gy}4x~U@cVjP!ur0aLn!z)9 zkhagj1@t0ixab4)nL3?*E1Td*r`%lte|GfPZz$Mf?e1K^eGXt2#T!y@? zhjTdZ;)07$U3})^a}QtOqKiu&PU1@!mp$Zg#l=@HuDZD9;%jU1jg?;akjD+X+;nlv z!M6@>3-n(J!oXY==$)QrRkcwi$9)>aiMihh1x8g;xvrl^ zvA)*`j0wU`0Xe<+Og&fGh6$?KLP>?8j&qBv)LaY_lbd-gaIj!hsj{T%sYeG30z;eH zEbA90AJu9qEDN0fA2+Q-sw&*f7EH{Oa{`0L>76;_O(lR+fo+gIv?)aay!*3O0xIdS(&wJmYr&~Rw=L0s+je*t?#T{FBa#E z6s;FY6}LSH-}$(MMS+p)QDhPmtNM~QTTwX~?#GggWgmC3;^3Z-`zQ#E71VPrH`4sd zcL~16l03RBQ&E14;p;>ovwT_J2$GVD%W{`Fy%IAOQiV+!nJpd5if&31$-D|nx=Mao z-q)rPhYnVKJOFDh9{E_q_avGQNI%9CmZt4dCWKQSr*N4MtKV}~`dCN7#}9bu;71=t z{NzJnLtt)|*ebFaH6+_ZHWF4y-e^?xS?{)uO35%NX<1gyagUxJ1k6g>HfcrgZamW^ zvxn6x@?KUmF}lWnjT+P)Yjs2rWmnh^hWc97avn-xH%*B(T`fg5JucU_l#y&pxgg6? z3eJKw5uq@*M{BC0^HEq*W-TyVq!Ob-!yHew8?v+IX1aCZp)`)YIM{%7i>k`BjdgRx z6`ADMxJ{hMaG>S z8Pxe5SW$7JV-8T=5({D7ruTF=)K9v_KU9yS5<9PBl)LD4VA$`(fwr^2rkHr&6hZhr zs_6E#w@P$Nl^7g*wL;j7QB-LVzrSEVIr*we5<45ebOLYtXpP-%jzCo>6D`Bsei$8` zJ%+2zy6&Rh8RfeI?01n@)oLLyI_ID&Fu5_M++ZKY3Wn(3#R-JSOCw)X+rb_S2`OL^W z`DiL9ukR(@_oVPIz$ZNfmoP?nAHyhtWH5=txQH?S_>S=Bb`&=$Sz}%vG01UR45IIE zTy${q;HV(_Q?q@TpFuAb&C+y^*_xtK4^Cr?yGQ3w@eG@UJI{BQ?`Qa&{TKa? B{Bi&Q literal 0 HcmV?d00001 diff --git a/src/main/java/Ui.java b/src/main/java/Ui.java new file mode 100644 index 0000000000..345ef1c8e3 --- /dev/null +++ b/src/main/java/Ui.java @@ -0,0 +1,45 @@ +import java.util.Scanner; + +public class Ui { + public static void firstRun() { + String logo = " ____ _ \n" + + "| _ \\ _ _| | _____ \n" + + "| | | | | | | |/ / _ \\\n" + + "| |_| | |_| | < __/\n" + + "|____/ \\__,_|_|\\_\\___|\n"; + System.out.println(logo + "Welcome! What can I do for you today?"); + } + + public static boolean askBeforeQuitting(Scanner scanner, TaskList tasklist) { + System.out.println("Save before Quitting?"); + System.out.println("Y: Save Changes"); + System.out.println("N: Discard Changes"); + System.out.println("Press any other key to Cancel and Return"); + String choice = scanner.nextLine(); + + if (choice.equals("Y") || choice.equals("y")) { + Storage.save(tasklist); + System.out.println("Changes saved!"); + return false; + } else if (choice.equals("N") || choice.equals("n")) { + return false; + } else { + return true; + } + + + } + + public static String getNextCommand(Scanner scanner, TaskList tasklist) { + System.out.print("> "); + String input = scanner.nextLine().strip(); + String[] command = Parser.parseInput(input); + + return Parser.processCommand(command, tasklist); + } + + public static void exitMessage() { + System.out.println("Thank you for using Duke.\nHave a nice day!\n"); + } + +} \ No newline at end of file From 50738c857dc457ccbb9d510a81db79316ca06b12 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Sun, 26 Jan 2020 19:21:23 +0800 Subject: [PATCH 19/36] (Level-9) Added search feature --- src/main/java/Duke.class | Bin 1288 -> 1284 bytes src/main/java/Duke.java | 10 +++++----- src/main/java/Parser.class | Bin 3672 -> 4281 bytes src/main/java/Parser.java | 38 ++++++++++++++++++++++++------------- src/main/java/Ui.class | Bin 2052 -> 1733 bytes src/main/java/Ui.java | 9 +++++++-- 6 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 5198ca98d623e9796e381b96537e09c3af82cfb5..7cc113f484c4a32461adca12f1fea2463fcaaadd 100644 GIT binary patch delta 682 zcmZXSOHWf#5XXP#wwKf1-tuTE(5na(F-D6B3L-ubMMQ1!(HI1uh1_7V(xj!LiKZJD zZb?_@2f&qy#FV0mAHXl-cQ8hriwhTSX8tqtpU0UqZ>=|0`1|iK-+)mbTXd|4d#92d zw@5M=qKBaXCoFn7=^4X85{y`w410uAK@Kx&ahkCJXFShY3xji-^P2JXwfV{g&4lKn z=90q76w1X#cPf{66~W2!Q}@_%_IcJOj-zPt@IZMrmmkP1W>;3+qGrPW8Q- zH&=_fm8I$rm2Ncd*=C<%{ z<4=9XoZF@$T}Rgm%+v|`NBlAW2AQM%b*wQn88>$b8O&DVX2h-$-r!JjhepLa!u_9V zs?oeb&^O}WB86Q3n&tOf7?$WbnO1HS<1Xzi2yIzP6op!*ix+Z5ujGijq+EiAUCA~z-5NvFqe;kq Tele)&HG}%6G*TSg8=~(Ie+PF} delta 649 zcmYL{%}-NN5XFD@^*wI;`U<5`u@se015!az5D^6wMX+e1F^1yTD^yZKx@b!iT}X^9 za7nttjZ56h0$NFoYd7xwD_k2R&Z`SIGiT16+LIzW}48ZDQM@u9*SO z1?l9xpCOwt7rf%47lyqsqPgT})MkLo0eTs;xx%=gs~&UB#$ZA-shQd?rSx^p4bAlS zkN8|GaYf^*TXF~2i`lio2TN`)m&t2xI^1H$p_SW;rvHMeeBOPT%od88S%*39Xp#=| z#LLsFr~F+-yUl`I$~Y{La#-ZC=83~oo+)s6PTav2@mrND|5Ov@38TH0nFb?Q&Enbw@&5nhuSj>C|+|o_>3OBWwlqFS$g~ IT{F=07v0)z7XSbN diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index b56ef20e9a..8e091c7460 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -5,11 +5,11 @@ public class Duke { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - List log = new ArrayList(); - TaskList tasklist = Storage.load(); - Ui.firstRun(); + Ui.showLogo(); + TaskList tasklist = Storage.load(); + Ui.showWelcomeMessage(); boolean hasNotExited = true; while (hasNotExited) { @@ -17,7 +17,7 @@ public static void main(String[] args) { log.add(thisResult); if (thisResult.equals("exit")) { - if (log.isEmpty() || log.get(log.size() - 1).equals("save")) { + if (log.isEmpty() || tasklist.list.isEmpty()) { hasNotExited = false; } else { hasNotExited = Ui.askBeforeQuitting(scanner, tasklist); @@ -32,4 +32,4 @@ public static void main(String[] args) { scanner.close(); } -} +} \ No newline at end of file diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class index 67351af1db2d6e223e041281a43afeb53832ffba..626a2b1c180d95edfebec45f98fc31b564374a97 100644 GIT binary patch literal 4281 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 commandList = new ArrayList( - List.of("todo", "event", "deadline", - "list", "done", "delete", - "save", "exit")); + public static HashSet commandList = new HashSet( + List.of("todo", "event", "deadline", "list", "done", "delete", "find", "save", "exit")); - public static String commandNotFound = "Oops! Command not found!"; - public static String taskNeedsName = "Oops! This task needs a name!"; - public static String taskNeedsDateTime = "Oops! This task needs a date/time!"; - public static String wrongDateTimeFormat = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; - public static String noTaskFound = "Oops! Task not found!"; - public static String noTaskInList = "Yay! There are no tasks in your list!"; - public static String displayTaskList = "Here are your tasks in your list:"; - public static String changesSaved = "Changes saved!"; + static String commandNotFound = "Oops! Command not found!"; + static String taskNeedsName = "Oops! This task needs a name!"; + static String taskNeedsDateTime = "Oops! This task needs a date/time!"; + static String wrongDateTimeFormat = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; + static String noTaskFound = "Oops! Task not found in the list!"; + static String noTaskInList = "Yay! There are no tasks in your list!"; + static String displayTaskList = "Here are your tasks in your list:"; + static String displayMatchingTaskList = "Here are your tasks that matched your query:"; + static String changesSaved = "Changes saved!"; public static String[] parseInput(String input) { @@ -93,6 +92,19 @@ public static String processCommand(String[] command, TaskList tasklist) { return noTaskFound; } + case "find": + TaskList query = new TaskList(); + for (Task thisTask : tasklist.list) { + if (thisTask.getTaskName().contains(command[1])) { + query.add(thisTask); + } + } + if (query.list.isEmpty()) { + return noTaskFound; + } else { + return displayMatchingTaskList + "\n" + query; + } + case "save": Storage.save(tasklist); return changesSaved; diff --git a/src/main/java/Ui.class b/src/main/java/Ui.class index 2b990262956e7158839c10b968c7a612aa39c9fc..cd8843576eee0db1f0f49a5323aaec6659b27f64 100644 GIT binary patch delta 756 zcma)(&rcIU6vw}_+jf6+TG|Cl6|qHH3$zu~11d@}gcG(PD7E5`G`cA)e*4XxcB?JmsBPVS z`Kr}52Np;Q#cYqEHnG+B1iqIGXL>+D8EA)9Ep)WiNC?L*YAk5X~ zj1tVAf|m)ZktF4Wi76ZT2Ofuskq#1^76o2VlE@vBSK0RzX9T<%SSzqLEhR;(B}e** zeS$1Gac({$SsY+Qp$UfQ{gRXX<9CMsu-*^#nO++fa-{>w!ziVUQO7vaNU@d)OGLVZU1?A^)F_2$j<`4rWm4;CtV@jrv@oH&+RIN;P y6Nhx4^wB|0#TNMdET5mFfFiRMPMetznrW$QX;$?2AJ{|J0?|cgn`IgebH4%EQfO2F delta 1052 zcmZuw-BS{A6g|I1VOdv&&9AcjK=1=GoL;P`w3wQjL`zIE`&w~T1Q!QZXMBm5p6bcr zrTQCuFl)&1p|@WAo0{q@kl@rZ?7f_O&b{aUcKOl#*3*0P>-al>tJqX<9>X$5+z4V+ zBNkRLzSq~)>%%n}*A+x?L&i-Rw`5Gpm|_*T75MfNQ}Svmm$&A&&AqQB#|3m3H^rMF z0neRm*2-HseJf^I>)Dljs}nI9Gb(2B$c4u$<`6GNrA+s{iYHhQ5Q{1jc*LG)b1O(u#|qv!Jm2Ysj?RP9k&|GsXnWQ@GOB8=4h6skk&pzs;x{O*=f zU#$3#EY(_sXO}mOq!k&dgQ_i}dL|Q3Sw_T#j6mR@1!G3RemG~{3H1DjSjR&@y7&{&hTz+v~| zT|q0FDDOodMfRiv%I)eBrJ9p6JG!b-u0}UwummL*(wa(8KS2#?%}hSRJ9>l`Thdw} z$FU#MJbww^GJ#mbKKo1M1+GA4-U69EJp6RQOD7rvXu|~B`S0jJ6rH%sN`fb|$Tj<^ zXhOqJOt|1{_6ph`fWK;gl8w18x(^F9p_OpX_E|z(EOdnSnK9byIAFbUep;F9 Date: Tue, 28 Jan 2020 21:03:15 +0800 Subject: [PATCH 20/36] Minor code cleanup --- src/main/java/Duke.java | 3 +-- src/main/java/Parser.java | 15 +-------------- src/main/java/Storage.class | Bin 3789 -> 3512 bytes src/main/java/Storage.java | 10 +--------- src/main/java/Ui.java | 5 +---- 5 files changed, 4 insertions(+), 29 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 8e091c7460..18358ee62d 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -28,8 +28,7 @@ public static void main(String[] args) { System.out.println(""); } - Ui.exitMessage(); - + Ui.showExitMessage(); scanner.close(); } } \ No newline at end of file diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java index 11cd50b45a..80f602ba9f 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/Parser.java @@ -3,7 +3,7 @@ import java.util.HashSet; public class Parser { - public static HashSet commandList = new HashSet( + static HashSet commandList = new HashSet( List.of("todo", "event", "deadline", "list", "done", "delete", "find", "save", "exit")); static String commandNotFound = "Oops! Command not found!"; @@ -92,19 +92,6 @@ public static String processCommand(String[] command, TaskList tasklist) { return noTaskFound; } - case "find": - TaskList query = new TaskList(); - for (Task thisTask : tasklist.list) { - if (thisTask.getTaskName().contains(command[1])) { - query.add(thisTask); - } - } - if (query.list.isEmpty()) { - return noTaskFound; - } else { - return displayMatchingTaskList + "\n" + query; - } - case "save": Storage.save(tasklist); return changesSaved; diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index fe6a98c39ed275d4c60083853b3fffface2e5914..42384d2b565a570d58b9772ad9c10b51bf5a46e4 100644 GIT binary patch delta 1882 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 Ww>s^V(=IseqSL<1X+P?;pZq^V "); String input = scanner.nextLine().strip(); String[] command = Parser.parseInput(input); - return Parser.processCommand(command, tasklist); } - public static void exitMessage() { + public static void showExitMessage() { System.out.println("Thank you for using Duke.\nHave a nice day!\n"); } From 64a857bb676a0baf665605d69bae82906a64a3af Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 28 Jan 2020 21:46:14 +0800 Subject: [PATCH 21/36] (Level-9) Added 'find' function, reorganized Storage functions. --- src/main/java/Duke.class | Bin 1284 -> 1288 bytes src/main/java/Parser.class | Bin 4281 -> 4932 bytes src/main/java/Parser.java | 174 ++++++++++++++++++++++-------------- src/main/java/Storage.class | Bin 3512 -> 3409 bytes src/main/java/Storage.java | 25 ++---- src/main/java/Task.class | Bin 2921 -> 3090 bytes src/main/java/Task.java | 3 + src/main/java/Ui.class | Bin 1733 -> 1737 bytes 8 files changed, 121 insertions(+), 81 deletions(-) diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 7cc113f484c4a32461adca12f1fea2463fcaaadd..b35b1a77fce14643a66261e03581f681400d86f0 100644 GIT binary patch delta 29 kcmZqS>fqWihnbDPI3vH@b@M!CeMVLVh8hON$(LA+0EO@fYybcN delta 25 gcmeC+YT?>2hna~xb@L)-eMVMAh8hN?$=6tn09`=_%>V!Z diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class index 626a2b1c180d95edfebec45f98fc31b564374a97..603835222dfb772904af9ab18333ebb732876503 100644 GIT binary patch delta 2275 zcmb7F2~<>N6#o8Mc#oL}j#HGD;06c-Is&;OC?bXkXh5lG;^>Tm4l~G%sAY|sWty7x z(!w?~%JxP^2h>6<+srI8TdZu~Y%g0ht?qq{`aK$KpnYwe0sM6Ebi!YbtBENLa_ldWKth z<~D{#Ha9TbZl&DsHen;~;e|~S?&awwHtv&fKg;@Pg3Ts8fCtT}#X}4aOL)YDL3p&7 zbAODtJzrlAbKcx4$li%W;+@jcDKVb z%UIuk_9=K7`vnYKnu1rbPo1mJ z8|s2n!Ayo(4ArPnFq^eG3~mMw&s~Bt1+U_Of^ybg!$EbIKE3c#HYyli$3X>$uwTIh zHYcKtQXc8``hEU-M_q}_U+s1JIz{0P8E-0h3vWv}tl%BItKdBxQL_vwfy?;d`#2&X zS2%ogiiuPO*Wd#QA1e3=A1n9-pDOqapHmsUL%|nZ;g<|Y@s)zFd3_SfBz&V_Ilfg; z$$50vsGH}naoYQH+3chGt?bk>vTE@3*UGvMScfY=2+y(NgUW|(dI%rKNjQJ`*B zjs$2^`%fm3L1Pe&92)sF3Tc$msGw0vqso@niY`IMt{PqtB=tf~?WSS8h6y~~JxGy) z&FG;GI<3F3sdsDrMq6-4aA_1u)5$VDPyRaiu48Q=9jlm)h*yEfnsFq+5G1@OS)|_E98Vx-3$EnC@(1mX=8o4l1Od!tIW@tienx#T-Gf?e4DWP7$ z_Jjf?V(A>$8ig_FOr3=T=^;9kGkQ1?XSKA<+xpnrj7>N%%~HV5Y)10eJ6O_;q#!M9 zgw%}WcK3n~oP%?b7^yn}5*;5;vt=|}jyPhqD*_X!rinyHr509(zCuExA(~>-dp%q1 zQ5~`S{EygG6x%_ur&H`16x&6i12ZXh^}k|Mo9G}>M;enDM#=`RFO}-E*>)feh>%Fj z?HtxpjUJd$cbY>p)j{1R;;V?LU=FRsTr1LZ(z=BM=*tz@gIW-U?nb`|Usk@bXdsXC zX?6icSg3iW7f>S6u4wLHXLpSL|LHeCeixJ9z!Gx2^dF9?D@GhQQNBh>qjD!QCbb~5 zByB6Q!nmlk?{>PSXhb?G0|jOE`d?yS`kwZL!+76};=YWtml zE{3?E9v(?KktBaG+184jX5{iWYVRE;?KP|;Ue{9$uhwfU+-z3UC*xnqP7GH&S>m!s zv>-18vvp($J*@d5^spB{6^A5v%la3ex)0C2iY>&chb1)FK!39vj6}9 delta 1663 zcmZvcc~n$&6vscmS$L0`2jMHj$psC;aYkhmBGOcpR1!@<4WV>Y6cj;auq)DJn~WQNSg#)E2XB(e|v)>979m^iLkG?r$v5@toc{_kQpGyZ64|dq*?(4~rcC z>p&k+$S)oyv(O~u!Nnqj#Tu8G)S4_cS*Eo*&FT{=X1Rv~R%o@sWTnPNlO~f@CaX=> zm^7P&OkRJD%AK06_Ym>3LEG=rdPK9kZE0tthx>UzJ03LHq|Fa$ zj7Rc zNqf=cC6nzYJ4{|S*=f>d@`}l;2JHr~#Y)virCyJobd)#^-iYpT`WKW_p-@9DcJZbn zWqD|AD61jVxGbw8yr#Z!nZ;Y|RyealVa*q*QBI95tQM3K@S{xu|F;lCvm@ZuuH#LQu!)rpT z%4)-PO-q_DOW>f%A&a-^GkC}1Fz;Ht$B}4;+aD>@iAOo2Fe^jND`wO;hb>lf%;0^C z5BSjHBaT~q%n9jCM_7EKoBouO7N2R?O-wiV+@ggqEN1I+({vyG;@fBm*EeKM3pLkO z)P@bdv^d3Si*mkF44BolsyTMTecIvtnr~ulW~qvuOUzaY-|AL>jOKbrs-L1Y-hHm0 z6&ca-){tnP6^s$R}u~BH`s+Y;LPpDYIO{W?oB!qQR5^_Kc-NQke;hiXsggJp~FI_L1haS z2KroWBnML}odK6r8PL&%uOrasZX-3AQlgCkx7e@hC~|c%NPD(pbTRmnxG5LohIB;! zFEH3m+BTgxRPu%e4{$YfNbO$I3tYkeu5O0M56HaKIO1R9LHt!cj4W~m_Y&wPSmgG( z_cKb-ieF2kl?*keD8ZM|O(ZKmh_e;1&!r97^VLlHYBq&x4&zic*Gt(6Y6TNj6UC~9$!Z-XYJ*((jg+cQ z%urjHt+r7v$5yDFRH}BW)E?%`@ztuA8g+<;>KGyQD~r_cELLZ!Rp*H;b;z&PVNvf$ zWu;>vjgB-{JJM-(j9@MLN|lg)o;pLOOo~6r$=;k4XNAE)cjABGNt|hr;f}NO^fT}q z)CAAsNIr|laQ=x??$<3BZ}(=rQW(k(mQzq=C)+7@Kijr1x394K+gIADy 1) { - return tasklist.newTodo('T', false, command[1]); - } else { - return taskNeedsName; - } - - case "event": - if (command.length > 2) { - try { - return tasklist.newEvent('E', false, command[1], command[2]); - } catch (DateTimeParseException e) { - return wrongDateTimeFormat; - } - - } else if (command.length == 2) { - return taskNeedsDateTime; - } else { - return taskNeedsName; - } - - case "deadline": - if (command.length > 2) { - try { - return tasklist.newDeadline('D', false, command[1], command[2]); - } catch (DateTimeParseException e) { - return wrongDateTimeFormat; - } - } else if (command.length == 2) { - return taskNeedsDateTime; - } else { - return taskNeedsName; - } - - case "list": - if (tasklist.getSize() == 0) { - return noTaskInList; - } else { - return displayTaskList + "\n" + tasklist; - } - - case "done": - try { - int taskID = Integer.parseInt(command[1]); - return tasklist.markDone(taskID); - } catch (IndexOutOfBoundsException e) { - return noTaskFound; - } - - case "delete": - try { - int taskID = Integer.parseInt(command[1]); - return tasklist.deleteTask(taskID); - } catch (IndexOutOfBoundsException e) { - return noTaskFound; - } - - case "save": - Storage.save(tasklist); - return changesSaved; - - case "exit": - return command[0]; - default: - return commandNotFound; + case "event": + return eventCommand(command, tasklist); + + case "deadline": + return deadlineCommand(command, tasklist); + + case "list": + return listCommand(tasklist); + + case "done": + return doneCommand(command, tasklist); + + case "delete": + return deleteCommand(command, tasklist); + + case "find": + return findCommand(command, tasklist); + + case "save": + return saveCommand(tasklist); + + case "exit": + return command[0]; + default: + return commandNotFound; } } else { return commandNotFound; } } + public static String todoCommand(String[] command, TaskList tasklist) { + if (command.length > 1) { + return tasklist.newTodo('T', false, command[1]); + } else { + return taskNeedsName; + } + } + + public static String eventCommand(String[] command, TaskList tasklist) { + if (command.length > 2) { + try { + return tasklist.newEvent('E', false, command[1], command[2]); + } catch (DateTimeParseException e) { + return wrongDateTimeFormat; + } + + } else if (command.length == 2) { + return taskNeedsDateTime; + } else { + return taskNeedsName; + } + } + + public static String deadlineCommand(String[] command, TaskList tasklist) { + if (command.length > 2) { + try { + return tasklist.newDeadline('D', false, command[1], command[2]); + } catch (DateTimeParseException e) { + return wrongDateTimeFormat; + } + } else if (command.length == 2) { + return taskNeedsDateTime; + } else { + return taskNeedsName; + } + } + + public static String listCommand(TaskList tasklist) { + if (tasklist.getSize() == 0) { + return noTaskInList; + } else { + return displayTaskList + "\n" + tasklist; + } + } + + public static String doneCommand(String[] command, TaskList tasklist) { + try { + int taskID = Integer.parseInt(command[1]); + return tasklist.markDone(taskID); + } catch (IndexOutOfBoundsException e) { + return noTaskFound; + } + } + + public static String deleteCommand(String[] command, TaskList tasklist) { + try { + int taskID = Integer.parseInt(command[1]); + return tasklist.deleteTask(taskID); + } catch (IndexOutOfBoundsException e) { + return noTaskFound; + } + } + + public static String findCommand(String[] command, TaskList tasklist) { + TaskList query = new TaskList(); + for (Task thisTask : tasklist.list) { + if (thisTask.getTaskName().toLowerCase().contains(command[1].toLowerCase())) { + query.add(thisTask); + } + } + if (query.list.isEmpty()) { + return noTaskFound; + } else { + return displayMatchingTaskList + "\n" + query; + } + } + + public static String saveCommand(TaskList tasklist) { + Storage.save(tasklist); + return changesSaved; + } + } diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index 42384d2b565a570d58b9772ad9c10b51bf5a46e4..f2717d7a282e7fe321522b28d07d09aa6b4305ee 100644 GIT binary patch delta 1799 zcmZXVYgANK6vuye=FZ$Z!&UJLRkSP7VbB?565EvMGTE;51139^e$YneVYT%UB_6f$sicpY>{K_{W$?Jc6B>bz zNLRG6D$*GlsWH5!Inos=ZfYy8Zfc3n+&@_0RB74zlLk*Yo3)U&Tf>~y(9+b})H&PP zt&Ptvr$StHk&aC@O&y&Uw=%=xY4#XAWAQA{S?s0T$@HYf_L)3yv7ZA5j>QWc)UanYA}-Xdp%=%4lTskzJA zwsd5MSG7hqv_!+5ZDGmM==|ZU%qYD%a=Adbtv%e*=3>U5==LAb{Abn4zH)NRJnb82 zxp_+eRwLV)5*Y7H3KYc3WY&?PHC6M((#4jxikvB{aiZmp`11SEj=R8FBK@w@B*1OV zz6{mQiPtZ&ivxJ-`|vL5MNi=CA*C0;Ya9JiMc4`q5UdwZA4xT_0j&ChK87v50X5u3 z6($%_Tl78tIERYt(UL#>Qj>BV#0!g-sEoq!B5yb+o)PAxV%f+sCq2 zwyl@k&GHy*7UT{lu#apGkt6e$%a`Oykzy%R$gh&+cP2}*GATEef0)L9($+aru9&0? zWEpraGSMJtU|k@|U~cRpA%l5ZX7;~iRT_*r&j?ZDEa`0}w_oXPle`|Px4Q<&xZJsL z%>bFIaal|APck9F#M+`WWNY$iE)gR~;|nHL=ph+_TqW{)Fl{@I&lYYI6u5!py2CMX z7sfHwT6mod6~4ldFF|p9uvaFa zg@?F3ns7KMy&Dqos)!rZhX(a4L4(*_A$(AMP*PC|VcwL(Ui|>GWt`M+*Z`&V_S8P6 yoj||&LktM0T0kBa$Uq?fM;f2=wX`6_GFj(H{^jCZ;mUef-sj3@%T*7#GWI{3-%`c^ literal 3512 zcma)9`&V4m75)zMxR>D~VGz=ZCJr%#0RkkkrV25d48&lDAqoi+`?}0rV8SpLXYLTN zt!-_qZSC7WOdqLzNt?bBYljG}t$k?guU)Hawf}*?^yk`DOTT@GVTLfvWeDfov(I<- zd+&32{eP=31Go#X2XHqY&~REuEPxse2S|)-7zw~H^fLkIcu>Pb0R%8wi!q!P*tsB2 zpAX;>yjM2fr{nzrMDYO~AC%eDF)4FGxFmI0GEeE4mU%`)DhP#H4e20xkxdOUL3rfr zF3f9qRJOAkasjl7a3_FvzcG#SE&ujRMhR+h4GZ)CL zK2nBuoYU~MLSWR+XA_q2B(G7&&YII!kBBnR2QoA&#gawRbj;ple%9)779GKS&cHF; ztDu*(PzY9@dB`%8R#uRoS7<5ioXAg2Sy?Mt-u;4xFB8c6Pdp;@LO@s%jnnfI|Xectn{gCm8<2*+umdMRCn)>NhyquwvnO8HAU z$C_g_?K~B0-c0y2RLh|rmN`c~bjL0!dUL5NDm4w@_jrXG#8@6QCp^UfhD|4|6n4&; zvsTp3Bur;K<;?Ia=a?BMr?9`89otPS#hGSRC`Av?i;C$CwWF3vsbU3RZayuw+g^=# zRTulMNAqTy>TGdqF;e{<=h-z9GiLTUd3qy59Z|~7SQp3aq^%H%M9**6ccW=kx<{do zhX$x++SRhJ>cMx&N++wq1uH|1I!EmJTx^!m+~Ad5SSe=3TmKRp=zsZdWjwk~-`OM}@gWmkN|49Pa7qVT&qCj$0RtU5y=IG)X#OB>y|*kiVmnIqByiuKb{%HS<^#Vprm%v{`B zlu&2fX=|=;mSVNhNm5rv&T+U)CJzH6Q8$5~^$|*CGOk25q#e@BC zYvq=M;_E8#%91YCYz5N|7Ev>u9;H|MHT+efZJT}7bW_;#_Bgci;c_>hMBtM{$;Hj_ zC|A2V^LBu*a|P-eKNRla=y!>AsFkam-vZss2ax;=tf6Ki=vjgHDp!^Gdg6K674bFA zRq{sN570_s|Vt_m)3QaQRrqw{)Af@iC5g&z~Au??7Xj&uOa#t zc4-(;t!@9t-V+*beG`qG_N-H^r-a`FrQ!Df(1uzJ;$$&J)YE+NGDYwdQ-rC}Hqo_$ z{Y;H^NsUOn^F?$N&?)Kg61o)Mb20fkpm>9K_xVD;0(xZVy#zhjv!fIFAhuQJb$FfJ0p1FLj^MD-fg@?rr?o9;h`2C6qm>iwvv z6I$>9?!;+2E5>mcasH$*0vl(L#e+P1mZwMY82=7=5)Zqsdmj2aqvLb^M(?$0XxGRO z>x>Uw$^T`lMkgz^PDQHi)X<61bu?Ao^vI^W@2$G;-PkAOO*E{tIw@9!yP+{y-KS`4 n4TkV%&H<|MN4&;_31OV;{lq^^+Jrk^aK|}!wB7LucYN~yS+!Qi diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index e032bdcb26..55c9ad67d5 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -3,7 +3,6 @@ import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; -import java.io.FileNotFoundException; import java.io.File; public class Storage { @@ -13,9 +12,13 @@ public static TaskList load() { TaskList tasklist = new TaskList(); try { + if (savedData.createNewFile()) { + System.out.println("No save file found. Creating new file at " + savedData.toString() + " ..."); + } FileReader fr = new FileReader(savedData); BufferedReader br = new BufferedReader(fr); System.out.println("Loading file at " + savedData.toString()); + while (true) { try { String line = br.readLine(); @@ -36,27 +39,19 @@ public static TaskList load() { } else if (taskContent[0].equals("E")) { tasklist.newEvent(taskContent[0].charAt(0), isDone, taskContent[2], taskContent[3]); - } else {} + } } } catch (IOException e) { - System.out.println("Oops! Unable to create save file due to " + e + "!"); + System.out.println("Oops! Unable to read save file due to " + e + "!"); break; } } - - } catch (FileNotFoundException e) { - System.out.println("No save file found. Creating new file at " + savedData.toString() + " ..."); - - try { - savedData.createNewFile(); - System.out.println("Created file at " + savedData.toString()); - load(); - } catch (Exception ex) { - System.out.println("Oops! Unable to create save file due to " + ex + "!"); - } + } catch (Exception e) { + System.out.println("Oops! Unable to create or load save file due to " + e + "!"); } + return tasklist; } @@ -78,8 +73,6 @@ public static void save(TaskList tasklist) { System.out.println("Oops! Unable to write to file due to " + e + "!"); } - } - } diff --git a/src/main/java/Task.class b/src/main/java/Task.class index 19857b981c4000ab93cb7bc687cdff5a7c6fe6b5..53fe1af487f1f9ea9b5049941b5008ea161846ba 100644 GIT binary patch delta 1402 zcmZuwU2{`a6kX>gx%cLJXv2jDLQ73(3vB|Vv{VE{EGbZ=^@FO2ALzA>w1p<6xuEzJ zML|?R=~XF++8Lc;#_^#uNT-trAN0*fpPg~WH-CX|)^$#z^(&LCwa-5L?7h$0C%?w0 zSC@bIz49%9yYab$b;w1LLZ5=Y3idhZ#QrF@px@#0fb!jM|pi`Kgs_7308hZ;#IsR zQO4^6poKsks)DTRfRtZX3P%pY4DwSJN%hITkx~l7R*|$-6=i^a4?3_n3kbr)=Z@}Q(bbD zL(O0#aZ~V{wM%Rcdh8A5EO)Xn7MUbsAti)`PJTg7Epo{Ja2j-4d?i9njfFPx@BrB$ zx1_&;5$l`9ii{hbhjSfHrh+>dka6V#mMx%ej$sBi6YCHnHoz?-js#Y-1<)lD*h(YJ z0zLfQg>9-^de)K!Il>~LuW1OK#?;OxBBw=EpXO!S z7_wL27dxscg5GGnta_}*wKCaG+*3>b_dbk&_tDNEK9pMMbS=St_F>Osd6nEMt*Fw< zDmBESUm{ks7ZAT$*4^_|Lj|jV3I)Q_1=PO~9Atv`ZK4kQXe<3vYK+v4Lqb^avq<^% zDxy{v?qzGc|7tMDStz06EKH$HH!+tE-$p21LHC;f*6V`BnL8{{&%xB@a zP31=B3Rl<_=4k2XkWfZ?9(s$swu0tAxA)HCf41-BwwqkKZ!;@{Lx^$=jl4uFFR=r? z$YBqTpilP_L8!60d4O-Im$3$Su9H=JGq{0k)M}9Hjm-1_eGh6ps_|Kk!y2F0IHvLV EAG|=+^M7O9F=Zc-^yPE;@4xO3@G$S%ulvj~3YHG`Jv>i*7n&-uigtl*0v#S2uswpevBRU;DZZU9x;%7amq&Mxi(VIfqP{QifxvEoJpy|@ z?8APa^$+?`IPBtx4+|elu}^%2aJ*R5gby42KEmjCG3el=gHLbYeQKX_Fl2^RkNV6! zRzqsoR9H=^T70gt3KbfaSglcoH5wyWuQ7@mjW`-Ls!^kmGZ62KPw}&=t7~M$!I;K4 zPHUXOghJ@AUrc~MYa}tL@rA&b0%rxLFzMi&##i`SA#dB*SaKqHCNbVOm^9OtlmCs2 zZ#7al@8W{Ui{@XearGrpFKcYTMi*DaxT?`2#x*gnySQQcLcgg>^QT>T|CU{?>O9=U zcM4XcQYacp3=ejUjrJ#!2ZoZTs7)jjqe-$YsO>iAvkLA%4>zl<@1@qX$#?41jA?Zq zDr5d}de=pHJ#dYd?1q{p>j@+`6i9A`GQvC5qK+6d<8GU(H-ES_skMy6Va@YV*g;e& z2Mzp!GCI$@yyCRzba-7Q+h(H}A6HUZlwQ3bnS(cn>{(h0^~5Ynpa4xooBBKat;2ev zyey|oNkTaG0HNQhy!@(!7WcW3D{mwlLP!*{`9Gr<4dw&n)EcBoFry-pB}HMJq2O@-xEEi`-pw z`EyutFCfn}KaDqmH1~pK{_=+aUZ;d@%E11eG-Q|xInIXQ9{56VSbrlP6OE=v`&mYpUw z%u=)Rw*QI}QDTn}geX_0QMwr3@xS3RhW+y8fun3K|9v9ddMSsf;t(y^f(~rOA+!f% v!U&Z{qn#wRg}D|ZKT?t(Zs9h5AfpdySMw$x(RU!gLjfKQ@K}H+0vvb&QLD9y diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 4d576b9147..a025fd42ab 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -18,6 +18,9 @@ public Task(char taskType, boolean isDone, String taskName, String taskTime) { } public LocalDateTime parseDate(String taskTime) throws DateTimeParseException { + if (taskType == 'D' && !taskTime.contains(" ")) { + taskTime = taskTime + " 2359"; + } return LocalDateTime.parse(taskTime, DateTimeFormatter.ofPattern("d/M/yyyy HHmm")); } diff --git a/src/main/java/Ui.class b/src/main/java/Ui.class index cd8843576eee0db1f0f49a5323aaec6659b27f64..3a4c7e732654da6067bdfd3de21dfd47f904acb9 100644 GIT binary patch delta 53 zcmX@gdy;p9Dt=UG6INbT1`Y-_1_1_j22lo$$sKHZ{5n7pT?R%54F(1V HCI(FaLa+$c delta 49 zcmX@fdz5#BDSk|76INbz1`Y-d1_1_522lp>$vtd({Q5u<0|rK*C<6l%gC+p; CD+faW From ea2f59cbee6423c7a9417a039dfcbe9411692252 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 28 Jan 2020 22:53:26 +0800 Subject: [PATCH 22/36] (A-JavaDoc) Added JavaDoc comments to classes relating to Task and TaskList. --- src/main/java/Deadline.class | Bin 225 -> 225 bytes src/main/java/Deadline.java | 7 ++++ src/main/java/Duke.class | Bin 1284 -> 1288 bytes src/main/java/Event.class | Bin 219 -> 219 bytes src/main/java/Event.java | 7 ++++ src/main/java/Parser.class | Bin 4281 -> 3817 bytes src/main/java/Storage.class | Bin 3512 -> 3488 bytes src/main/java/Storage.java | 2 +- src/main/java/Task.class | Bin 2921 -> 2926 bytes src/main/java/Task.java | 57 ++++++++++++++++++++++++--- src/main/java/TaskList.class | Bin 2444 -> 2569 bytes src/main/java/TaskList.java | 74 +++++++++++++++++++++++++++++++---- src/main/java/Todo.class | Bin 249 -> 249 bytes src/main/java/Todo.java | 10 +++++ src/main/java/Ui.class | Bin 1733 -> 1737 bytes 15 files changed, 143 insertions(+), 14 deletions(-) diff --git a/src/main/java/Deadline.class b/src/main/java/Deadline.class index 7cda6a5ac98500ce65c3003d71fa1aa839928906..e5114bf4277371b643db40b40e82d7744c5a69fe 100644 GIT binary patch delta 22 dcmaFJ_>ghJC4MdjP6loUMg|TB1_mYuP5?jt184vM delta 22 dcmaFJ_>ghJC4OcGP6ieRMg|TB1_mYuP5?hh16lw8 diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 22da0bd3c3..4ca5189dcf 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,4 +1,11 @@ public class Deadline extends Task { + /** + * Constructor for a new Deadline object. + * @param taskType the type of Task. + * @param isDone whether the Task is marked as done. + * @param taskName the name of the Task. + * @param taskTime the end time of the Task. + */ public Deadline(char taskType, boolean isDone, String taskName, String taskTime) { super(taskType, isDone, taskName, taskTime); } diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 7cc113f484c4a32461adca12f1fea2463fcaaadd..b35b1a77fce14643a66261e03581f681400d86f0 100644 GIT binary patch delta 29 kcmZqS>fqWihnbDPI3vH@b@M!CeMVLVh8hON$(LA+0EO@fYybcN delta 25 gcmeC+YT?>2hna~xb@L)-eMVMAh8hN?$=6tn09`=_%>V!Z diff --git a/src/main/java/Event.class b/src/main/java/Event.class index 573d07cee2a2e004bedcbe4f5d938d1f7ff5ace5..ab1007666e2bcfbf138f185a949fb3ce5601eceb 100644 GIT binary patch delta 22 dcmcc3c$;y;8GbGXP6loUMg|TB1_mYuP5?ff16BY4 delta 22 dcmcc3c$;y;8GdF4P6ieRMg|TB1_mYuP5?dT14sY> diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 533c073b59..4ba54da435 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -1,4 +1,11 @@ public class Event extends Task { + /** + * Constructor for a new Event object. + * @param taskType the type of Task. + * @param isDone whether the Task is marked as done. + * @param taskName the name of the Task. + * @param taskTime the end time of the Task. + */ public Event(char taskType, boolean isDone, String taskName, String taskTime) { super(taskType, isDone, taskName, taskTime); } diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class index 626a2b1c180d95edfebec45f98fc31b564374a97..d69d4381c599980cdff38908d461e0c187e6d37d 100644 GIT binary patch delta 1662 zcmY*ZT~t(66#h1IXYQGqD-1{R4?zq`n7KL#L23#HVx(d!kTOCT<=J%AnPRtY`I>eZ1@WT#TQl&3GPbW-t@QoAMhvM+%BcttH7&~Z??UsZ%d zU&HH)_AB*F#Lahed?Ztbz6-B$0mXltr3-n-4fM>s?9 zM6Hz4TlNujwhyqSmRby)#m5Hb;TcuooPqNgAZV#XEMedioU?a%W)>x_Jss@q*c(sj zxM1K@Tr{u{^#(q}p#8vOHa95ptWuw2(7+cMFtA9`Ce(9R4T(f5nd-B4wsfSr60u~S z50?Zk8~74ebX+xX4c85Pg&TIYR^HI45;M4=weK@C3mP1+7tEDo;w(}v-*9f z!tWv9h-&0(yDCsY5A2PB+uApTGJ8R=*scyn(sTHj0Rad#B@pH_%fSNX+!5PCjlxA9 zfQvj07kMKt@+4g3VYtX`xyajM)VL;pMb=B06)_T{H+%tLsv#I>=qej6Id$d`#$4r0 zjIfAI=OIN-B3jzd*pKK)G2?YqWd;~isCjshaR9Yliy4=AzwJBAxVBjPF};?JPE+O% zA@2<0p1MnjnKI+j&oV5U{-9(0+$tp zRA`Hh~thERM~!Copg)ut~#03DEbqdb>77o_sI=bhCHo0CVTz=LBPLU$8@i&bkFbb@TFSy z=t>+zkjnrq_Yhtub7e^8ODV_7aWWzc^F~Hut7{xtI!XD;=`O7SO{|4x8 BLbLz? delta 2050 zcmZuyYgANK6#mZ49qyf(D-4&Hh=2s>zziZNL}-X8DF&E;5<G10y4-k>;bccWDoMuhpM^)oQJNCu zcrRQ(HVz;MKbbHewGtdA2&faWietS5r-TLxjhr=c;WDBC%_d}{h0|6EZ5-PrbVyh& zVU2`N32q4<30)GpO|aqtp3}p%UJ(y+@(>qmP4HT=j@uvR+{?uy3bnJrgpGKdJDw1+ ziJPC~WV48;IMy0TJZ-`jJYz-;p5@{>5nD}|jy@isa^LejZ<`6*@dDR&aM3Sfz>F91 z5xu?_B-YDZB4l(G{9Ud<0dKpC0*OJCvl`;;)Cu0E$d4(Yv z!|*c*o{sts8AmXr=IhfE8eHx5WOO^aodnJvmq*430x}k(NXAi&s+;xpMa7)l&BYi- zWgLTFMk%LDP(+;-baZ&!o=(T=5~ruBquw17gyRxU$ao9mBHos95~pOmgVXADy|uE0 zC!WD+2C2f~ZYg%TY0ot{E8?7tck!N#^SB`6eSAP2@dz0o@`HSYk7azqUH70!#HTX4 z@R^LIyxbxbsrf?q1QDOhxQI(K%J7B1NyumFK|^7fqTOAW$JLr%6#o-6ud~z9%Nv``5cWT2YTb3S4nw3hQkoJ5NnNvZ740(_=0>N7AGg%eMzhd6>S-{Oti{}1asf)sQBvA>Fx#blrpk)uiW1vO?Wyii}uBwjg4Ff%aUEO3icL)XJ8r z+2%y=z2q@Mr(8w6h$>Q7pqhsO`sI`;Qg^mtm{awc0m%KjI8sV zHgd89>51zJHzR#4j_?f9{}?0OhfLp2!nMdcwT^HE*-iY|WrlN|-T_i-k`Gypp}z4 zF6>3H%~GLH73hK{`i2p$Zk5BllYF_tFedv_#|^t64kMO(INOUTn`HqHPc=|R-2cYe z0*D{rX;UaI!FCL{0X|9@MPjyKix2`x((mbM_UnJk~pLkz2CP0WQDFY9Bw*lr}VK{mnyNTxT=U*aLyNG3u?5}Sx=EDlzd zf>f4<>1-xuP>BpSADL_+vRDbS*;3@NWthXNkw<0cvKHjC4ivC1%xAqQWb5cxZUYvx zO(d+9x>JoMF+Ii-<88Z-L2JDk9mSiE9Y; zim-~Pv0Z^K_zFy-{!i%XMcsGfi%B)Nz)TV-IgacqC0Ma2p^Bn}Dd9?l5~)Ou;`XD+ z@x!d#;YXH|>qoRQ+mBdfjvteiJN=ldXC~iI aREL%Lme53w%lIDOAR3Pnmx!;Y_1NFJ0lGi{ diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index 42384d2b565a570d58b9772ad9c10b51bf5a46e4..239692b7c6512265be92614af1b69f6886c5e246 100644 GIT binary patch delta 1722 zcmZXUS!@(_7{Gu3-PxVl=>TPDfu&GNX^Zrbwpxz1pg=ja2Un$5MOf*A9S3yu^dt_)_* z1Jn7@W(LhBEj9s-TO-13voTm?ve?FCNra^=v#F!q6_bZ;I(bA39<_MPW-co%9@luK z#VU9-usqrwj_|I-d%Q1HlfwrbmB&1X4>{`X3XBdX9p2=acQ{ZS`N-j8j$3@< zT?vd=pL)Lss+TnKnZxItFgfYa&nbt~9CtWFN@29ede%FnIqPtaw_!2--0`W7rErEGPbLHZ@-bJmY@37*b}fLYvaAk zdSktPJzlq&4u7rvT=vSW$?6Ahv316{qA2xhB8A?hNKHZ-NIea*K!!|N+9z<9P~!wk zE`-X{sFU(g+$S*XGb2Q}pV{&j)qo}3uqfmW5a>)3Y#zYq>?f2a+%kaKS&_zS?I$9v z6n2IjNa0kb7}8dixJ)?7p(=N1iedFeaB3)O7`1M0is1(c8=4H(x~@+~%QX>9F(O~s zq1qIA9Z6bzjeK8Y+-(|BBP?1YMXSu$8s%$^xkW3X9bH!&-I2_0Zj(H#GK}$4OcG2o zyXBVD$NGG~kZ~Qi@C$wZS;kAKTwQBrh6z5e{Dd^Nim6;ADi?j;#}-%lnF6kpr>5T}+f!E=5X} zAe9nkGMD7+exgExHAuJ`ei2XClq3OX=skrohMDL zmdxuU_xUW~0T$9Fa2*e_k!H5ANK9L$)os%1rGBUOVGT0Yq}ZgyWIC@9&(*8On)W z{d4#NFqf+~_p#Dsl|{Xcj|N+mjV7yYf?B`E#$v6>12#5IDKxWA!`6qy`$3zB*r*Mg zEFQL5!Xp-sYTjnCS@U)s=8s!!(R`~(tRsYCyGdtAf=L`7T_ODXG?yJFPik|I z$xfRhoxRs)I=fQDdAH3|>`7%AeVXhwdD^C&XEfPov0w9;#j~0}7sB9q?Rrp?7eWMd z(8DI`MK@QKP3Y+A=vAZ_m(*`-+uc^t(Ot2$qcd9L)~aITh{;Rt4izpus<4~7clESK zwNc?T^>+8PZHdm*J`NFT+;#o}E5geT3s~qT)KvEum8&A|O*MOiC||`@`1AMYJG{p0 z3RUIs2FK;l?C>Th9Nyw>k!l^@;axe@IlQM2nYXK2vAS+gdvr%{M|YRSNrzX6yGMM5 zCGR_YK)=O@4vV<|wnJxI*OrPg2aW#7{n1ysHp0gapYW;4fWs+HJDj24;VkDAMswTF z?G6bB9fs(aA}Sru>%wsu#gcB`!t^{uEHM?!Ao~W@xCmH zVhSL0h`_25f~|v?vHB6LR>_spFoNAWW02Iw(>SFG(uTPU>B_kB1nChYY+NB2=Xlr% zWh4ki0{%I{aKNYzWhS`$7(qje{_0ScCx*+k;7>3M6?xWDw=@1ivO%hH=T`4%hgJJgzIH45r9a)w4K2zR(Q8hh#&t#9z9U+feCd)I;r-=gAOPbB{p!et(NioMMrJpilm#C6dGr3F!KTs(N7fH%F z{LH;vm%aE+LfvAXQY@4b=Boe;RECUnv6Qf!)TCrJOnfFm6U&tE5jROQS#pbPlUh|! z^gD%%O>%FLAuKN`dHuKXd8nAllt1JaDb%rabWhY#`BuoDa9H+4)}yGkY>;WP9@F)D z6gQThr6fVAUWxORDUQipYYHQlVChqdCnPQ07gE8p-#Z19?Q5-Z8%7y++!(!e5<>81oEDKnC8%KtxF zQ~In_QYyKV#iyj>Niy$f^lPJMH~w$ms^|ANKrlBLmy}m3d3AQgFvXEqzFcnWV+G#` ix21-!xFSmvrbXmwg5MyzR*!D;=o238_UHkR9{LM4GChL; diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index e032bdcb26..139a96877d 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -67,7 +67,7 @@ public static void save(TaskList tasklist) { for (Task thisTask : tasklist.list) { String taskStr = thisTask.getTaskType() + " ~ " - + (thisTask.checkIsDone() ? "1" : "0") + " ~ " + + (thisTask.getStatus() ? "1" : "0") + " ~ " + thisTask.getTaskName() + " ~ " + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskTime()) + "\n"; bw.write(taskStr); diff --git a/src/main/java/Task.class b/src/main/java/Task.class index 19857b981c4000ab93cb7bc687cdff5a7c6fe6b5..d88d81d68f7eb1aacb320201c6620d641ec6adc9 100644 GIT binary patch delta 186 zcmaDU_D*cW8b%Gy^wg5zlEjkIVnzmL4b3P<1_8K8XkKP=eo87MgNTOa#DgN6A2UX? z$%-?uFi0?PGDtG;F-S28Ge|SY0HG3tEQ2v?0O||`>Ih 9 ? this.taskTime.getMinute() : "0" + this.taskTime.getMinute()); } + /** + * Marks this Task as done, if it has not already been marked as done. + * @return a String message indicating if the Task has been marked done. + */ public String markDone() { if (this.isDone) { return "Oops! This task was already marked as done!"; @@ -51,16 +94,20 @@ public String markDone() { return "Marked this task as done:\n " + this; } + /** + * An overriden toString() function to display a custom format when this Task is called as a String. + * @return a String representing this Task. + */ @Override public String toString() { if (this.taskType == 'T') { - return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName; + return "[" + taskType + "] " + "[" + getStatusUnicode() + "] " + this.taskName; } else if (this.taskType == 'D') { - return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName + " (by: " + this.getTaskTime() + ")"; + return "[" + taskType + "] " + "[" + getStatusUnicode() + "] " + this.taskName + " (by: " + this.getTaskTime() + ")"; } else if (this.taskType == 'E') { - return "[" + taskType + "] " + "[" + getStatus() + "] " + this.taskName + " (at: " + this.getTaskTime() + ")"; + return "[" + taskType + "] " + "[" + getStatusUnicode() + "] " + this.taskName + " (at: " + this.getTaskTime() + ")"; } else { return ""; } diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class index d3d78667069a9a7069c0c4581905256ccfb12fad..1c2e5049b60eb2ead6679a28bdbe15d464b45d93 100644 GIT binary patch delta 597 zcmW-e%TH556vn@4@4Yjf+)}(gN-?GZA+|&%Acfi@Pz8BdE40ODd0gog`>@qgNnEjT zW#Wd6D;FkiT$`vH7ybbz{t3jLOLlIJXYS^k?|k!{lbJJbPrf;I@blmI9{|$mNc1Dk zaaAIKbOD+uM2$F>*gt8h$fQxy1Va=zU3Uw^Et8E)`Y}h!DAqI0{-)nVsvdJLkJ-6Dd zwLBYJ*w(bW*RXLBDFIh^cx+<_+X7WxcnlDDqV2Bw9ViB$qV{DXc*Lx_&RQyJCfRe9 zGrt)x7>3oRIjrK=G?S`gr9xpC=%Il`)O)KCjv|CUs$)o?PyMw#a|kw_+2R>6%eX{3Koftb21Oxy1}6D6^rDEfDAD`M$YNc+7M08fkz*LAA#45| zRdjinBVS>BCc`jDYWbl@+aT}?RTD_5KVtbroqnZ3jhn2p(fMyn*c Yfi@8_%u?M?&zqwx=WE{AJH8hG0}wS}=Kufz delta 508 zcmW-e$!-%t5Qe{=@l5v&69N+iB0++Xg+weOCJrGcY;l0F7_zX(fUyT+V(ddA4qS3X zNE|?Y;s_E?fVgnr0V3rQkaFNDkU&)X@>kX0UstKC-|czdv$6T_$4_9Ac1$k?%|whx zA!0wLT{h|DjA6=9Oa(lzxeya`F&5&IW+tYKl4drho05YsYp%qkTuo72bI$ct@;qa=!*bUSA`*7Wvqwm5QD?z!sZ;w^ zPX&9$-)DbI)+gBkJ76Zd56K!%a9p%s_V>ZAm~u}l9bu4N4AI9hMUL1lv#gH_HAddn zqPfaRS=N{kc@9e)VO&^blJ}QDGpzoI?{i8#PtIOSjOF$UO&anwXQl3yDbwPe>*!oZ IZ*=t5f14>x0{{R3 diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java index 8baa8fcbe6..ce44e9281e 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/TaskList.java @@ -1,53 +1,111 @@ +/** + * The TaskList class is a class that encapsulates a list containing various tasks, and handles operations relating + * to creating and deleting tasks. + */ import java.util.ArrayList; public class TaskList { protected ArrayList list; + /** + * The constructor for a new TaskList object. + */ public TaskList() { this.list = new ArrayList(); } + /** + * Adds a new Task to this TaskList. + * @param task the new Task to be added into this list. + * @return a String message indicating if the adding is successful. + */ public String add(Task task) { this.list.add(task); return "New task has been added:\n " + task - + "\nNow you have "+ list.size() + (list.size() == 1 ? " task" : " tasks") + " in the list."; + + "\nNow you have "+ this.list.size() + (this.list.size() == 1 ? " task" : " tasks") + " in the list."; } + /** + * Adds a new Task of type Todo to this TaskList. + * @param taskType the type of this Task. + * @param isDone if this Task is done. + * @param taskName the name of this Task. + * @return a function call to the add() function. + */ public String newTodo(char taskType, boolean isDone, String taskName) { Task task = new Todo(taskType, isDone, taskName); return add(task); } + /** + * Adds a new Task of type Event to this TaskList. + * @param taskType the type of this Task. + * @param isDone if this Task is done. + * @param taskName the name of this Task. + * @param taskTime the end time of this Task. + * @return a function call to the add() function. + */ public String newEvent(char taskType, boolean isDone, String taskName, String taskTime) { Task task = new Event(taskType, isDone, taskName, taskTime); return add(task); } + /** + * Adds a new Task of type Deadline to this TaskList. + * @param taskType the type of this Task. + * @param isDone if this Task is done. + * @param taskName the name of this Task. + * @param taskTime the end time of this Task. + * @return a function call to the add() function. + */ public String newDeadline(char taskType, boolean isDone, String taskName, String taskTime) { Task task = new Deadline(taskType, isDone, taskName, taskTime); return add(task); } + /** + * Marks a Task in this list as done. + * @param taskID the position (starting from 1) of the task in the list. + * @return a function call to markDone() in the Task class. + */ public String markDone(int taskID) { - return list.get(taskID - 1).markDone(); + return this.list.get(taskID - 1).markDone(); } + /** + * Deletes a Task from this list. + * @param taskID the position (starting from 1) of the task in the list. + * @return a String message indicating if the deletion is successful. + */ public String deleteTask(int taskID) { - String output = "Removed this task:\n " + list.get(taskID - 1); - list.remove(taskID - 1); - output = output + "\nNow you have "+ list.size() + (list.size() == 1 ? " task" : " tasks") + " in the list."; + String output = "Removed this task:\n " + this.list.get(taskID - 1); + this.list.remove(taskID - 1); + output = output + "\nNow you have "+ this.list.size() + + (this.list.size() == 1 ? " task" : " tasks") + " in the list."; return output; } + /** + * Returns the size of this list. + * @return the size of the list. + */ public int getSize() { - return list.size(); + return this.list.size(); + } + + /** + * Returns this list. + * @return the list. + */ + public ArrayList getList() { + return this.list; } @Override public String toString() { String output = ""; - for (int i = 0; i < list.size(); i++) { - output = output + (i + 1) + ". " + list.get(i) + "\n"; + for (int i = 0; i < this.list.size(); i++) { + output = output + (i + 1) + ". " + this.list.get(i) + "\n"; } return output; } diff --git a/src/main/java/Todo.class b/src/main/java/Todo.class index d1a9b40867fed85c7807d5912419c00278daf444..8f6f9c1d426dee0d391d6ecbc9857fac5f1f5637 100644 GIT binary patch delta 22 ccmey#_>*zMD}G)EP6j>(Mj*++z{J1>07cvbxBvhE delta 22 ccmey#_>*zMD}H7MP6ieRMj*++z{J1>07TdWqyPW_ diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index 6889f10f38..6722bdf739 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,4 +1,14 @@ +/** + * + */ + public class Todo extends Task { + /** + * Constructor for a new Todo object. + * @param taskType the type of Task. + * @param isDone whether the Task is marked as done. + * @param taskName the name of the Task. + */ public Todo(char taskType, boolean isDone, String taskName) { super(taskType, isDone, taskName, ""); } diff --git a/src/main/java/Ui.class b/src/main/java/Ui.class index cd8843576eee0db1f0f49a5323aaec6659b27f64..3a4c7e732654da6067bdfd3de21dfd47f904acb9 100644 GIT binary patch delta 53 zcmX@gdy;p9Dt=UG6INbT1`Y-_1_1_j22lo$$sKHZ{5n7pT?R%54F(1V HCI(FaLa+$c delta 49 zcmX@fdz5#BDSk|76INbz1`Y-d1_1_522lp>$vtd({Q5u<0|rK*C<6l%gC+p; CD+faW From 9a6c7d684010c6c4f74bf656f6ed70b1afa0dec9 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 28 Jan 2020 22:57:52 +0800 Subject: [PATCH 23/36] (A-CodingStandard) --- src/main/java/Parser.java | 112 +++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java index 80f602ba9f..aaed2feaea 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/Parser.java @@ -35,71 +35,71 @@ public static String processCommand(String[] command, TaskList tasklist) { if (commandList.contains(command[0])) { switch (command[0]) { - case "todo": - if (command.length > 1) { - return tasklist.newTodo('T', false, command[1]); - } else { - return taskNeedsName; - } - - case "event": - if (command.length > 2) { - try { - return tasklist.newEvent('E', false, command[1], command[2]); - } catch (DateTimeParseException e) { - return wrongDateTimeFormat; - } + case "todo": + if (command.length > 1) { + return tasklist.newTodo('T', false, command[1]); + } else { + return taskNeedsName; + } - } else if (command.length == 2) { - return taskNeedsDateTime; - } else { - return taskNeedsName; - } - - case "deadline": - if (command.length > 2) { - try { - return tasklist.newDeadline('D', false, command[1], command[2]); - } catch (DateTimeParseException e) { - return wrongDateTimeFormat; - } - } else if (command.length == 2) { - return taskNeedsDateTime; - } else { - return taskNeedsName; + case "event": + if (command.length > 2) { + try { + return tasklist.newEvent('E', false, command[1], command[2]); + } catch (DateTimeParseException e) { + return wrongDateTimeFormat; } - case "list": - if (tasklist.getSize() == 0) { - return noTaskInList; - } else { - return displayTaskList + "\n" + tasklist; - } + } else if (command.length == 2) { + return taskNeedsDateTime; + } else { + return taskNeedsName; + } - case "done": + case "deadline": + if (command.length > 2) { try { - int taskID = Integer.parseInt(command[1]); - return tasklist.markDone(taskID); - } catch (IndexOutOfBoundsException e) { - return noTaskFound; + return tasklist.newDeadline('D', false, command[1], command[2]); + } catch (DateTimeParseException e) { + return wrongDateTimeFormat; } + } else if (command.length == 2) { + return taskNeedsDateTime; + } else { + return taskNeedsName; + } - case "delete": - try { - int taskID = Integer.parseInt(command[1]); - return tasklist.deleteTask(taskID); - } catch (IndexOutOfBoundsException e) { - return noTaskFound; - } + case "list": + if (tasklist.getSize() == 0) { + return noTaskInList; + } else { + return displayTaskList + "\n" + tasklist; + } + + case "done": + try { + int taskID = Integer.parseInt(command[1]); + return tasklist.markDone(taskID); + } catch (IndexOutOfBoundsException e) { + return noTaskFound; + } + + case "delete": + try { + int taskID = Integer.parseInt(command[1]); + return tasklist.deleteTask(taskID); + } catch (IndexOutOfBoundsException e) { + return noTaskFound; + } - case "save": - Storage.save(tasklist); - return changesSaved; + case "save": + Storage.save(tasklist); + return changesSaved; - case "exit": - return command[0]; - default: - return commandNotFound; + case "exit": + return command[0]; + default: + return commandNotFound; } } else { return commandNotFound; From ef0552a8151d87b2efe24f6ed2e4d4ba01bf30dc Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 28 Jan 2020 23:08:11 +0800 Subject: [PATCH 24/36] no message --- src/main/java/Parser.class | Bin 0 -> 4932 bytes src/main/java/Storage.class | Bin 0 -> 3407 bytes src/main/java/Task.class | Bin 0 -> 3095 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/java/Parser.class create mode 100644 src/main/java/Storage.class create mode 100644 src/main/java/Task.class diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class new file mode 100644 index 0000000000000000000000000000000000000000..603835222dfb772904af9ab18333ebb732876503 GIT binary patch literal 4932 zcmd5=d3+po75`4Mo0)7TM<-1WpkdPnnq%qGaFwPFrD;QgNs3LRq@Xa_on*J!%!J)Z zn;^&~atMeANUI`h1qF}LK-z*7P((#U5l_7D`xX@h_4|IiNwy?_{%1a)-+RCJJKp_! zZ#Iwr>;6Lk*5JhuI*~Sz2_XPq$Ee_)26h=3GcYdHMFQSfjMw1e5KhA-LcYnsrGhUr zaJhji3|wj8%?7SA@D>AC8@MLK)k31J^5Wp=NQ`${l{{bK9^0|yPqnJ38toQ_*%iljw2$W(~zX$wAllN7Igm zm2*$5%PysCcQD%Hr<3kra|>^k=QwwJew#Py#x+=T4{9j&?aWZO zzSEnOwaQ&-&mEkm+r0F!O=U}5ua|do%*`y-;btu@?!E1?lPopCzc zkx?qMvTm+%_2+S}?Oxl48VXsOq{`;~w|&E|Xt0d`6oQv}`XkinN;d2@)R3_#nm5I;e3k*tB zVqX~TAJ?FBelcgVb%BY;@kJ9|=oSu7nD`Q&Wc0)yNUUSz zvu2SNdx*peB4;e=n{W^}F(6=2Kmth+iLc-(6FoBfDxPL~C~JIX zb96wZZ*)4Fl?yhH#hej8>A5CeCwF=Ud<{>V_&T06u}#Qxu$5lf=y`s|PunA1j-T-2 znerlh!@xI9d<);!@r;S@;JYTihwp1xG3&t&H|~sW8TGdeY?P;%$&+`s@cx0EH>UH; z#FhA=jvtx$F@9p=r}&wPpW_#Fgq$$(OY!rs1pFGmG4Wg3@55FdzcX<)es5yCsJcLj z&o3o9{$S#d_>+YC&l;9&@kTN=;arx4UC$2>h;}s^mSwkk6Uj{2r_8V`1tM&RUDgQh zFMqlHIBP~!+{{BQ(}$e!%yN#A?}huF@TN`CuC8bw|HAFDTu&*Skz?ab_33jp?b9dJsu*?nnY9`s z^PTY%wjZWGv4j)Pa=dWVNsse*S!=dzg(XYHYem`TblBV3(!axrF~ck8DJZPSvoY%M zowV(HY34!9bA3DMW;7g`U)3ls-Q!TY8*`fLxAQ%*!Y0YPF8@@n19Z$^{DREgC z|0SOi^4XLttW;&t@q3aNIU)Q7e`Sf%LYjuf!}bshp&PUPZAqUtxEbGeeQJJuzO6a0 zy-E?zJ}FfbJ6zuxbR=3M*)Bv|4)b1)qd3bLw$nqKRE4Xm>zLOgp={-o_f0-o^VQQm zJ)O44rGc`eSI%b3%rdzrXEJBebX3*V>5Sq{o$>2-#;7C1$IJ=1ia0zAa`9$cpd&?- z><0n+TBo z;0=->YuH&D4TAiLZG|D$>cDOFxp0YC;hxvMIzH@RsvQ4O+-;XILQ=7fm zoaeFWw4Nh8d$D(X#F^)KeyN%+0(nexvRmy`s)xDPtm6gN;g=C{xNaJ%U-=wr_z~U7 zFZ2)$`ILZ$Eu;!?7HKwi&JAhn3bRWq%$BV%TdBfq*9x;^E6m=gFxw)rNuK=FA$&cl zWyBhBuwg&6dpObX2EwB3B8qW7F5p~_?m-ZR#OF3x1yd;812ga-0)2%IJri6BP9fOY z7-+JJ)Lw;5bu|q(P6%O4p}4C^-DoUqnnI|jFA&L1f{}n)nIQWDr9d@w&a0@vB3M|0 zBd`?56E@)}G*fGvyTvH5Uck{h`Zm-;ztpE_8{>cXqvc<_+p&&$R))0;p9Xc@z&sD={>|3 zR0p0phuDo+Wm72Mjj_U(JCTW46^hysAmv1?1&TT^NNQWevJ}-_M5-fVRVr$OPO3R# zEmTyKLF%}ORi&uf3OQOGu@)(^szT0|N36w)EUGYCmfb}iVjS{kaIEGyg=0NOD@Qv= zH%BkWc8>EK8V_K}gutZ=9x=h`k!pIBg3A=FmgS=-=(&k~2&=){+3=i3 z1_Lq*pJVWfj?V$Sgz=C&m8%7#P1y;#&(u~~RE1j%m2MAtqXGr^79q3^@7S?(-GsKi3l9+s46 zadj(KdzhZROv`Pw=p6cDyOL_4uvbTIpqQfho&Iv7H_eD%`9Fw0pQ3Gw?x*M&MLQHd zK+%agqWSA!#)Ac%i3g`pw@0k2r*#bt_oESbsRxJo>|B&!WZHuzG=o1fa=gx@BgBIi z{dNG6^^HeO;W*JhI-z8kOp8@HXIb(Hv6BpUadix37*|YLTDo+eDwf|ZufX^CSLAys z`Cdl8my_=mFX79dLOH&Bscn#2Y<~c&`}U)$tMOi(FohGlk2}Z&#co76Ia$NQIAv{M zXq7yPEJCCd{?`_t16x zAISCCh#OeZZ)63(N$FXEz>BERv0BIQs^?KqN>A{2TTbIzVu_Z~Z~*J~p+y3eEy*GE z4sNDbZ=notrh?zVaLHfS130bEDzhrA1(s!1S_`czYmv410560k2HcldJwN7HW zwP_N^TAL?vjMX-YsCC99>aF%kG*}&zSZAF%iI&+;uu8EnVj0$%Y{fJ!gnF*6;@dxg s0a(KTtVcP`tiTz3dxgv$sS+3BAH*Rl|2I63zcX3iOWGj)K91Y|14EV4CjbBd literal 0 HcmV?d00001 diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class new file mode 100644 index 0000000000000000000000000000000000000000..9197fbaa7502541446197972391a1e6790190c3b GIT binary patch literal 3407 zcma)9`*Rc575=XE*!6nBMi>$i2r|J&1}qUL(A1`BK*qsA7BqI^8rrmrw69F%=(@^M|EUL&bSHr&VO+Y$})tah_6;4Z(*Q1vw47 zrP^5y9k80ov^C^$p#=jd$f2mf(XbCCIn1fJDCbKm=H>j65d8Re20q@ zI=(9xTWgw!PM^4xHuFx_wp4sidiMPqH)mLr@j7lG(M=>v$E{2!u?bj_Y_$$LqLE{|@Q+g^Y>CTfs9b7NpHz>Uaas=~zUc ziY1~^bKV1IQ--Az&y;4&m~+XI7MWC~iWpIFrQKjopPx3<&KlB)Q^;DA4EdZ_d9IvC zWc_&1l$>lXKEyB$RsriKT`&#DOqmxw`>f2fYjw^S9dnkz*d-d4RYxuJX>pW&k^V0vE#gG~)Vs~z-(rfK2J9g_T z&8yyiN!^lUyUGCEsHF2u2!qPV#uf+^^SLZ@x37_*hDZg?3ne4RAlLZj0p2h138trv z!ZGUfM~Au-jE1QjwKKLrG@3Yji-~FBp#gfyOM+hZH9UBWs#K~vF=txzD0>}rV>mhRavIN||SOH$aoAM(3y};hpdm?Mi*)wL`yDq$jA2iauqUII+kp-W$ z?U_=Z*X599nT15oC>BkI|6+YlRdsmZr;~=2$(hBy-ogHxM!Dvo%ya|s`bMpFVx7{e ziiDBNjW8?y3jQR}xgowrz6soUb2)VI#dL%(B$k%^JagsenjdbC{oL*1%+Cx0`xhXt zxq?SI23?|xX1oXYd!phkQiJ5(SVGhI0(_^g!(Tz*3fiwD=&qGTTHyz)c?sG$DGO*x zER3?LTwdn>GS)J1j2rQZzxp3)+-45<<{35YInEc z{c_{0VB0p51HBb&A1fp2O5Em3>{=%g_6I3-JEgi@sjw@xqoLG}vGTH=qL)33*y%c0 zhOdmaBuNJrai>e#|0-XE58@2|hCBG={Hr^w_$U6wOg2HL<&Cw^g)a3)-*;A@pD? zQE2DM+xcz{^ZX8;-idQO^%zx8^L;r>$$8v`XVHnP=;HT3ir=A|HsZ8$5PzqZe;`I% zhiUB|{2TY;f5h~?v=&Fp+t{O^=?3;H&=lxzqea03HxO2EOmuYq2YZeyxZ}TQ<+MvD zuE&w6;+o}qRO0&75_Ws2MTlC5L~YOT{?~C=1$$FHZ=h4~opp+fE`i@-U!Olr_@i>@ zz5+EADkBhLW-B=0GTKI8A@yJxs@yWEF`zGSFdV2LUS7UV^bf6O_ii`4*W9YR0B0qc zePFFHtu3s>c7}S0ulB<@hC%v2#0WBcd{5&9lQ)P9c!(!YqD0PtrR#zfDW%9S_~JfO}tqe|-lwQ)rMvO?Z&S0RFlW_znKR{D*Ox`!4D~L)!b?aoimz N-ErC-KkAN8{2#j9O``w+ literal 0 HcmV?d00001 diff --git a/src/main/java/Task.class b/src/main/java/Task.class new file mode 100644 index 0000000000000000000000000000000000000000..de2b9e2c05948f6414f166b637697f607d143ce6 GIT binary patch literal 3095 zcmbVOTUQfT6#h;~m`NN3qi7MufVU9TSTAjr-ZY3%L2N;-*Lny83?wr#Gid3(_I_`* z)=O>cL)Y@954NjP7Z3db{TclswcnWuAsBRZHG#d)-e;eE-{<77e`fv!@DzTEp%s}Z zTF|M$eg(Q>*oFg9JdW-d$sWafLB~PG?v3-javJg)YysVq?!@3!!4wb~ zfm+M$bZkYODD54Rd6Mzoad}>*bJ8A74|qk(9_^StYpMOlVBaH=?sc*<*C{=7kQBvg zpSEnvdsd(=nK@Cdr<&7tR3MyjhN-u%*Rst+lldXDI4Fm5AL3x$rXqVIFrS!*=4Diqe|sgRRII- za1E@(dIKA<(ZD7o4S0Ccz$8)zwqu8ZHl$d4j^}zsS?DvpF=yDVtHrB2 zrVPA>*O|}ZbYFUkpG0?eo;~q~fj9A%fw%Dv!~gr{WglKM@GdSIcu#@%75G4b4{=e$ zM+QE|Cptb=8b8zVxx!xvwD&s&waG;nG`BP2 z6!X$c&vxu#)k)=+5LoU@T26YvELt*Wy%zK#tI0OiEO&pt;7u_}eLaU*%&cR3(z4k) zO_gn!8I#2U^W3CqXU&c_PVE(Z$H@?h?K^hu7Fd~=6K2M-v(h_ed1G9;p0qt`*;uKi zGhk0BO!ivT896LHE;;#6JzTS&um{po*20O7_|qnEtWw3i5G%&*p?XST zR9A-<7ITg|m72?E z*Y*Wn@0CZQ)c<>834W+@RkBz0_rk}cC&lT6`lsOTWTyK5spc%`#?rE$L~>|qPeQZ_ z9Q<$k{)YwWDGM5|sxkgvVEtTCEc?7OVU`}0p#8gK)^mze8h+q-^g7POByV@4$F|L4 zCMR9j%j}%)H8!RAgi>H(+^Y zhlU>oHdMv8kZ%IbkCsCVzpeZw5ayH4`<|4~Gf7Td9za0{s`eEK8A zn^S*4q?+y`lv;fkHK{Fk5l%IRrxCf1=x?aKji^s*ccK64YuifL3Y~Bztv*J*jaY(J zScWF7=C>7VXr~!zN~96GPew#Tix3*N@ejl;_i1|`GeoAwA1Ok;O$*q`dhdO+d z8bZciKU(Z5Yp669R_7{>Wk_}4X+mYJQZ)3SUk53~H?JgmspRbe`lU}}X@KGZS{9(? z0cxm^{*3z4`W{x?_JiS}h8Y$UGpr`&;!(c|fdQs*kYzoBF0NHNTU1e*MwSd=-f-eR zi{VodMQM1Jo;_FgFT={Hyse;J=B+l~cqbKBtv17^sWNvO8qOewv#5idtzL`@o-ZrB z>emrCMTMdI!CPohi_|olh{H4V6?gnCwoGH?7Dd*~uro{B`xo3^%k6k#E(^_c2pDIZ zPq4xB95I_EEg*w)I1bl$F@l<==4STUUW$gW4>yRF)7Nkl*O|aR(wnL15PAJRJmbT& OKFs=X#D|s-C;kPhZPSnd literal 0 HcmV?d00001 From 72cf6db08173cc27a8087587a80142fa29cc6263 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 28 Jan 2020 23:23:25 +0800 Subject: [PATCH 25/36] Minor code cleanup and reorganization. --- src/main/java/Deadline.class | Bin 225 -> 268 bytes src/main/java/Deadline.java | 9 ++++++--- src/main/java/Duke.class | Bin 1288 -> 1293 bytes src/main/java/Duke.java | 2 +- src/main/java/Event.class | Bin 219 -> 262 bytes src/main/java/Event.java | 9 ++++++--- src/main/java/Parser.class | Bin 4932 -> 4936 bytes src/main/java/Parser.java | 10 +++++----- src/main/java/Storage.class | Bin 3407 -> 3360 bytes src/main/java/Storage.java | 8 ++++---- src/main/java/Task.java | 2 +- src/main/java/TaskList.class | Bin 2569 -> 2558 bytes src/main/java/TaskList.java | 17 +++++++---------- src/main/java/Todo.class | Bin 249 -> 249 bytes src/main/java/Todo.java | 7 +++---- 15 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/main/java/Deadline.class b/src/main/java/Deadline.class index e5114bf4277371b643db40b40e82d7744c5a69fe..401a234bc058b99a5cbc520af50b2f5334d536f2 100644 GIT binary patch delta 114 zcmaFJ*u$iB>ff$?3=9kw418P+%nV%Y4BYGtJd6x%Hko;uC3cJq8X6Oo6NPyh88}>0 z6H{_B^HLcZSV9tuvnR^wOq?#O%L3HQr6u4Zt)si0fpH^{$H>4A5@TQjlDrI@417Ql K4j`L}ffE2uNfOBb delta 135 zcmeBSddMhu>ff$?3=9kw47^+n%nV%Y4BYGtJd6x%Hko;uC3X|1=}h#rie+VF;BZMz zOv%a2OJ!tW2}vx@W>92c0%`yOMj&KiUgAf?#mKeMdnpqydwOb#PiAomBZIhx=H?$vL5z&sCVR8&1pv^33t<2N delta 32 ocmeC>>foB-#mKqQdnpqKOHO8S2_u8(=D$oqjEq|*2e9k~0Gx;k?EnA( diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 18358ee62d..b307dccf2a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -17,7 +17,7 @@ public static void main(String[] args) { log.add(thisResult); if (thisResult.equals("exit")) { - if (log.isEmpty() || tasklist.list.isEmpty()) { + if (log.isEmpty() || tasklist.getList().isEmpty()) { hasNotExited = false; } else { hasNotExited = Ui.askBeforeQuitting(scanner, tasklist); diff --git a/src/main/java/Event.class b/src/main/java/Event.class index ab1007666e2bcfbf138f185a949fb3ce5601eceb..2ed521c98113e27d4058cd0cc802772e9f9e8a2c 100644 GIT binary patch delta 111 zcmcc3*v6!E>ff$?3=9kw418P+%nV%Y4BYGtJd6x%Hko;uC3cJq8X6Oo;{ff$?3=9kw47^+n%nV%Y4BYGtJd6x%Hko;uC3X`h=uGr97hq*%V0A4^ z%`0JKUmeS^P4D#+HIV z$D>wLbnC4sF>~xzcE;$Xf9TaNnVX7-q|4b+vB+rQKs39Qr zEoFkl7!`U<=n0`Gg`U2ry}3xOQhBo)O{u(h9(|&!FXdrKBA@e@3#yot-jRM@&cc6X C3SeRY delta 416 zcmZ|JIZFdk5C`!8%Wm9F_F;C_6~uTEF)?W@Ra6AE5D_#6j1k2%3PCLV02YGQ@>(y% zFCeRpNI*~!(^y)1-}imv#KO+v4a|S${g}<7^&;oi_evZ= zCi{Ff5z(c3MYXC)<-Quxs0O76Jc@aBm6=w|kzgrL96NXu6 1) { - return tasklist.newTodo('T', false, command[1]); + return tasklist.newTodo(false, command[1]); } else { return taskNeedsName; } @@ -79,7 +79,7 @@ public static String todoCommand(String[] command, TaskList tasklist) { public static String eventCommand(String[] command, TaskList tasklist) { if (command.length > 2) { try { - return tasklist.newEvent('E', false, command[1], command[2]); + return tasklist.newEvent(false, command[1], command[2]); } catch (DateTimeParseException e) { return wrongDateTimeFormat; } @@ -94,7 +94,7 @@ public static String eventCommand(String[] command, TaskList tasklist) { public static String deadlineCommand(String[] command, TaskList tasklist) { if (command.length > 2) { try { - return tasklist.newDeadline('D', false, command[1], command[2]); + return tasklist.newDeadline(false, command[1], command[2]); } catch (DateTimeParseException e) { return wrongDateTimeFormat; } @@ -133,12 +133,12 @@ public static String deleteCommand(String[] command, TaskList tasklist) { public static String findCommand(String[] command, TaskList tasklist) { TaskList query = new TaskList(); - for (Task thisTask : tasklist.list) { + for (Task thisTask : tasklist.getList()) { if (thisTask.getTaskName().toLowerCase().contains(command[1].toLowerCase())) { query.add(thisTask); } } - if (query.list.isEmpty()) { + if (query.getList().isEmpty()) { return noTaskFound; } else { return displayMatchingTaskList + "\n" + query; diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index 9197fbaa7502541446197972391a1e6790190c3b..de3a13a5e6201e5961e9b14b8dabcef1ed44024c 100644 GIT binary patch delta 1472 zcmZXT*>@CG5XOIZrf0gRxslL0h!Y?LFpz{m2#bbAf?aVK5FFjtG z{r2L(d7z#zU1rl{bCXMmrWmtW=2FM<7%NB^Z>1-BYg}4bYt!oDacIZgtpb>}?LWn|gOR+-Ypm;Vxr0*|d9NH)n0Oc!cS&+2&GaN^W;4XNSqU+ohBA zFcz`Xz%HBJE|cgoka4)j*gXz=jos&Aai4kheghA9L`=~G4q4OugEkM@98|=*l6z9^ zi<6n8;;O_pKdd&E9kO{?VHrkIRGDZ^c5P2|bY<4R*E2`qTp~2ralPhI zx@{iQJkArE!yHi*H>T5>uFUS_&XuXm)^vN<@F+(ep42?W(>Bj&p2b&q+md^dwH@i& zr5!s`EvaOCYPXgVJm>4s=xjaDJG`KI(G(1qA1K$nM2|w%XYe-l2-xxQj+xhk?dQ+r#}?Pi_p5&_)}jvizr`xDBdSM6;#Oovo{{Tw%#T~)8Q#@-N_rSM z#Kf(ru%m=63)pJ{*82||U!N;2Z|l~|5&j^c!brVL1rCRBY&euXAh^A)A6 z<$|$VzUoJQVvPI{^Zc{!qPlJ>@MYysP${}sNm{KW*6=k``GIMYJzMf;^0WNIzla_S z{F-5<*@i!f+bmS^vAT*id%Um8>sBT@w^-nugV;&1ERQf;c*F1$>ErD&49GZ z+(=D4l4n}3&|8zI_8&2(2V$HK=Cg~;(5FXqLw148<|xiZ#@LkEl-n#Sh#C=_(B*(F z(kNAsx336?lubi{k}H|8VFJ>+lC*|MJ4=J8Rxqn0HyRN692Q?*wF;S^d5Q+9Yx8FG zGqVrt|0@@hq$QFRVkw`Ab*0roKIc>7G|PFC)L$jB)dAiTU@E|(t%12W!2N##+FBC_ delta 1473 zcmZvc+jCS!5XOI#J-g@Z$xx)0BCz2a%!UL4fdEP(NXSLGgaj~(K|oisKpVo1w>u%LIN8}6vYb|%wdU31xv#;u*^h_5#g^kyIrbT@`EiB3%=FFPF895F=$6L(M4yh4vc&D6ZgYZ5eTUgr(XQI5%~PV*+m zC8*cD#c^*<&gi1I&7tooM)-%c$2&Hb*Y8@N*qUlfb~t2A_FeCA&Wsh6yr+4e4{Scv ze8k6^Pw3X1;H1JbSJw2>r#VHpoG?Rk+I*EXHp_m8epBdE%^4192B>lv^rC^nK&4!C ze&BrIGd}MNSxeOT(E3gB&V?zdS+cmaR$+G}b~YzllZuj(+ST4MdvYXKpgNJDy{#jm zs50;YyVCnEc+s)iMR&!>zEhz_6*_AU{mOHkQuU2j;heUR8_l2{rj_GYgsoL@Lku#l_}Mwt2BVluMff}kNmFME5#D^-toF&s-rr$ntlMIg(_ zk-?}HtjLnTDno+-Bcrm6IKsI9FrrpSSfhni?6aaitKffG1*2u>uD zAs7)IvP|_8dCk>F1uo0rn6+py9jbz5(O{PH%usJxmKoQ?nCa_t((l_gQdh73L+*m~ z0{OIkI9C{JGr^|Nrfx{o2-@WQ3)u2cpwy7;z7Eb&Hq}FnxIPmw89!-VpR}$f?KIV* z+K?G3InfxA&!PUGiIZ=ON&C!i*dP@xky-uB?!!7Mfa2OHhJ|#iU^&w1bK+gee!=W;-}|K*+W-In diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index 75b5666c85..dd1060569b 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -32,13 +32,13 @@ public static TaskList load() { } if (taskContent[0].equals("T")) { - tasklist.newTodo(taskContent[0].charAt(0), isDone, taskContent[2]); + tasklist.newTodo(isDone, taskContent[2]); } else { if (taskContent[0].equals("D")) { - tasklist.newDeadline(taskContent[0].charAt(0), isDone, taskContent[2], taskContent[3]); + tasklist.newDeadline(isDone, taskContent[2], taskContent[3]); } else if (taskContent[0].equals("E")) { - tasklist.newEvent(taskContent[0].charAt(0), isDone, taskContent[2], taskContent[3]); + tasklist.newEvent(isDone, taskContent[2], taskContent[3]); } } } catch (IOException e) { @@ -60,7 +60,7 @@ public static void save(TaskList tasklist) { FileWriter fw = new FileWriter(savedData); BufferedWriter bw = new BufferedWriter(fw); - for (Task thisTask : tasklist.list) { + for (Task thisTask : tasklist.getList()) { String taskStr = thisTask.getTaskType() + " ~ " + (thisTask.getStatus() ? "1" : "0") + " ~ " + thisTask.getTaskName() + " ~ " diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 99031c9e00..c48f98b0a1 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -98,7 +98,7 @@ public String markDone() { } /** - * An overriden toString() function to display a custom format when this Task is called as a String. + * An overridden toString() function to display a custom format when this Task is called as a String. * @return a String representing this Task. */ @Override diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class index 1c2e5049b60eb2ead6679a28bdbe15d464b45d93..7c5829a6f501315a896d56e23da07c58c57561e5 100644 GIT binary patch delta 305 zcmeAa`6s+VmytG9z*ywwbKVVaDh>If^4m(2qfY!Jk2zApq#8Kn81upvh-BVi=<)YjJ8ZCQT0I a3>QpiU}news>%dnXJ7?F1_t5X3|x`YGP>ItxF_#pm#9}^;9*c@U}Vr_&;pW*Koy1zY(U7s zAiA4@7o<{>Wjh0(6|0sc>ox|S4L}J-1|=ZL#lQqs%*S8^6w$_}ogb!M0GD<<76v{B z`^gdMh+&MKEYGRMm^#^uGh8r>ftev2 Ss455OifjfAhP=s}IDG)>$SkJ- diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java index ce44e9281e..0bbb9a0416 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/TaskList.java @@ -5,7 +5,7 @@ import java.util.ArrayList; public class TaskList { - protected ArrayList list; + private ArrayList list; /** * The constructor for a new TaskList object. @@ -27,39 +27,36 @@ public String add(Task task) { /** * Adds a new Task of type Todo to this TaskList. - * @param taskType the type of this Task. * @param isDone if this Task is done. * @param taskName the name of this Task. * @return a function call to the add() function. */ - public String newTodo(char taskType, boolean isDone, String taskName) { - Task task = new Todo(taskType, isDone, taskName); + public String newTodo(boolean isDone, String taskName) { + Task task = new Todo(isDone, taskName); return add(task); } /** * Adds a new Task of type Event to this TaskList. - * @param taskType the type of this Task. * @param isDone if this Task is done. * @param taskName the name of this Task. * @param taskTime the end time of this Task. * @return a function call to the add() function. */ - public String newEvent(char taskType, boolean isDone, String taskName, String taskTime) { - Task task = new Event(taskType, isDone, taskName, taskTime); + public String newEvent(boolean isDone, String taskName, String taskTime) { + Task task = new Event(isDone, taskName, taskTime); return add(task); } /** * Adds a new Task of type Deadline to this TaskList. - * @param taskType the type of this Task. * @param isDone if this Task is done. * @param taskName the name of this Task. * @param taskTime the end time of this Task. * @return a function call to the add() function. */ - public String newDeadline(char taskType, boolean isDone, String taskName, String taskTime) { - Task task = new Deadline(taskType, isDone, taskName, taskTime); + public String newDeadline(boolean isDone, String taskName, String taskTime) { + Task task = new Deadline(isDone, taskName, taskTime); return add(task); } diff --git a/src/main/java/Todo.class b/src/main/java/Todo.class index 8f6f9c1d426dee0d391d6ecbc9857fac5f1f5637..608f62a9b718ba7b09b920d30eb4263319d239cb 100644 GIT binary patch delta 63 zcmey#_>*yhGLx9bM72dm>I|$5%nS?++*$%5(mFzn+ZmWP0=bL~96*wbfeA?R0BK&J L2q%!u#J~jrVVDO^ delta 63 zcmey#_>*yhGPAgb^F-A}hH4C~3@i)`3|v~$GP**H+ZmWP0(p!K93U|UCLqbnz{$V| L6yXH2nHabLV$ugm diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index 6722bdf739..9a375a1dc0 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,15 +1,14 @@ /** - * + * The Todo object extends the Task object in creating a task of type todo. */ public class Todo extends Task { /** * Constructor for a new Todo object. - * @param taskType the type of Task. * @param isDone whether the Task is marked as done. * @param taskName the name of the Task. */ - public Todo(char taskType, boolean isDone, String taskName) { - super(taskType, isDone, taskName, ""); + public Todo(boolean isDone, String taskName) { + super('T', isDone, taskName, ""); } } From 7f308c1d384571cd8c8a4e501df06cb84195f258 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Thu, 30 Jan 2020 17:08:58 +0800 Subject: [PATCH 26/36] Added more JavaDoc comments. --- src/main/java/Duke.class | Bin 1293 -> 1318 bytes src/main/java/Duke.java | 4 +- src/main/java/Parser.class | Bin 4936 -> 4630 bytes src/main/java/Parser.java | 115 +++++++++++++++++++++++++++-------- src/main/java/Storage.class | Bin 3360 -> 3492 bytes src/main/java/Storage.java | 54 ++++++++++------ src/main/java/Task.class | Bin 3095 -> 3102 bytes src/main/java/Task.java | 4 +- src/main/java/TaskList.class | Bin 2558 -> 2436 bytes src/main/java/TaskList.java | 16 +++-- src/main/java/Ui.class | Bin 1737 -> 3653 bytes src/main/java/Ui.java | 46 +++++++++----- 12 files changed, 165 insertions(+), 74 deletions(-) diff --git a/src/main/java/Duke.class b/src/main/java/Duke.class index 3cdc179344e0896a5b88a9032f3abe7be1e57375..62dacc9987d778d169b2c6c2df15ac5e3cee3d3f 100644 GIT binary patch delta 406 zcmW-dOG_JJ6o#M4%*4z$pV3SbN{Y885(_3!Z5tB>7lJGAjWvz8R?1)nMM0rLp(1o) z7hQx|r8_rf=OT+qqTmnk4|G#p`ZLrouFi7~ocEmf{Ua`fxP7>~0rG5B#9+bVHE%33 zj0i?~D-^x6dByt>IYElCc9Rz*DG1CqWf%`JVO6&OPtHpgSnOa)@`0jcnU9hcN*acH zymKV^L`hO+RkFsqWP?o&B%fK7eDO}TJ8wqsbHd-<-LLz5?wosgxV7zSINrGy^LF&S zcNF*+uwAdFubf2C3983`UlS8TW9(sVIQw+b)91W~4mDcf;2dBHbcazGEq^zws#elftA%CleDND_P`?cEzg EPf(gphX4Qo delta 395 zcmWlV$w~uJ6hu!t-7$H28j~0#;ygsb2#zr-COtHH@%8uq2_)IfiRJ-8oK9zS`DvirOOK$5UT5hO zG?EY)4vW+8qm86sfI%-qBDec9TqT)gN;1ui3*F4_pGsz#k<2kKSzu9;Vo8!_xr7zT zDr+u~tfQ10*0t+59Lnq+pQp^jo#P{O!pvm0c1`PB`?fZ;TI*g*dIHXU%zAMzUKzOY zDCd_SXz6F%uju0+80l9$6E-C_-bovup3ozDp1Jl88!>3aqsAM4ja1YK$pWQ$V(~Z1 zT-;IGQ6NyDJde+v&>x97lAy!<&xE2zfw00*g~G?;ldTc4ZuQt`4Q135poMbPN{~Ln mj8LJ1M_8hgZK^n+niFa`qmHclzEE}6DeH}Riqu<0z4ad{2~C3l diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index b307dccf2a..f3e625d665 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -9,7 +9,7 @@ public static void main(String[] args) { Ui.showLogo(); TaskList tasklist = Storage.load(); - Ui.showWelcomeMessage(); + System.out.println(Ui.welcomeMessage); boolean hasNotExited = true; while (hasNotExited) { @@ -28,7 +28,7 @@ public static void main(String[] args) { System.out.println(""); } - Ui.showExitMessage(); + System.out.println(Ui.exitMessage); scanner.close(); } } \ No newline at end of file diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class index 101effc03aec8571fdc8b1d108b338a6be901548..600eb934efe4bcb29a58213760a1e4586c666dd2 100644 GIT binary patch delta 1818 zcmZuxX;f8J6#mY8=)K%`l*h%;j1*i%iUXQOw#1195gAml#5B9`F7OcFL*7N4Nwc}M zI%T6{W`hH$nS@GCm09M{JWn>*Y=gBLTKKN11^r1T@$@mg}g{QK=)yUKPWXXk?+uYu8pYojqA3k>wbb!;tU>v|10uyZ5BO+0fm!!7LI z%5a-W+V3!MC+^|}rQvR#zK5M98t&z>l;J)D_u~N{CgDMbhcqlTa4D7zX6?&4Vg*O6 zXoyXoo5-I!ybv}(IT;r-51bGsx!l3C*ssvHTkwv84g5Z+G4+s7bRZ80Szxp z9K<1s!#JWYXw$vn6;6B=M+Ed@D>5Z77;z+C!|NK}ka!bsNxY4BB;Lh)R0&5&yw62` z!0;hHlK7a{KVh1qXw~qkL_I!}_?*SWojJm+8D(~j6AV+^eZg9e3B*=e33S4BPOv&H z$BI-I*^Y)UCBDMf5~J{qiq}qfJ>!CEwdkRwez7_r{A#E^LLC?Jsj&`;DX{H8WVq$n z#lfkzfG=d%54WvAbudJpR$)6u!CAJ7^CYz~@GZVmtMo?c3x&Ck>~LKupbDdp#&!sW z^DU>WlKwC+j0~y1ofAy! zjwH{6Tu8F1H3{=+=6o6jjcro5LTq#s3JBY}lLn$uh|wIXPRi;GUg-jjuoJDE3lry| zGZN63Xf8rm3`8Qv&}uY1<{#*)VJw+NC}x7qYuc5GLClbjc7(l2NFUJ&eMJ}a7s*H$ zskls}Awyh(Az~mh#V}-vY~+Ys0Y>@J7NY8JR`lFLMusn5OJtNM@%L0Ata&3P1WHYt06fmn)2yNoz72CWBuLE z;+RbwbBSXfaWoLeeBxL@91H)$K{wLnX!NI?C3g`W;$rydy*e$|N88c8bwhvm_w3Db zO?r}mr4+i1PHZ_Wvc=y}nx9m(`&3_vS}U?)9wyQpV&Q#0&!DgB806MhZ-G)(IA z8$9hu4!tx?PWjw#9vc0r%^181Lz?n>wqO|V!@Z^v`%pBT+VE7B2dUOWG<}$8j{L1T zN24$ulmBVfp>$;YC2m7ziP_%to3W;8#+e<=bIf?NV>2$_is75#JJZLfy2FQf>b96k>Cm delta 2175 zcmZ`)33L-x6ur}y%ru#9gFsc5Nez`2Yy{a3Efv~Q3bcT2MGGiQo1qCbnUYKkMKpjY zf`I5qaY4a-XNw4e;;x7YBCe>YxC@92q9Sm7Z%VPpCFkV6|NejP{`ddC|4*}LduDXU zsV&<848$oXN)eV2aUubxhz7Qe5@tx4DWQqISqxVtViaaOaWSrD_ZkUNwsR!Rl`v1j zwG!q_xK6_L5*A3f!Aao@85S|z$gr4U3Byv#9fg}1mNDB$$TJkg*#(EhB#DARRs#Qy6L) z{0PXH%B^V(bqpcyy9DJj-ohRk72J9od#%Iqy-F@+r;_0v?3M8@cFDMm-OEuE z5eH;^fiGozg|B6NgKudW93kU7Ug7r)2XRQoVIHqSxriTREWi;N0^xgNYt$s8o{6z@~I)iRHyJsxdn9LF}GUj4@6WxS~bLH zt7>XU3+gnU@qgn!I)1N7=TAZTtwFkaru#IJX{gn@T2$nXmX&#{=%<#Hl$EJH`tLQuGZ03QB3zLt%)nu!@8=`KV;YyM>wp>Xb88)xl39j z>|S0K#gw)Q8YH0Ce+8L-%~YwN8o%yqp`6~Jhnpxoxv)jbYJ|1ywmj{QS;daN)*{F7 zb6p{QMv<=h>H;C1L|Utx6@gj06G!o@H9%Zz9Tg9xixs93)@o@ysYhw+@#kiZv*srr zbR1*F9Jd;rS;7fxm2+dlNm{Hm$JNzpboGpmq6Z9cLSn5$z!>u4FqV8$Ewv@qtZhlD zwk6rxmK0}OlB{h>wYDV**_PBpRwhomi-cE@*M+P=wq5on2YBC4rb10NH_R>(ENU}or# zB*OEk5|5CMOra~X1P^)%+3*Tp^bz`@pOA}z!cgQ2#mE;%Vu&yrh0v@4$(bVEal0O0 zvL}<-k`Yf>LKTld3cYqbe>{W~nwee#J9JHQe(v9;kEPIZD!l^j>9TjC8{UO3xSK8) zr%H&Y3+G8lqCatu|4yUsz6Olt1^sLz#MX7BwqLeX* zGUigoynkfS8)#>&OdTKfuG@gTUR%%;SVt4Z*$1CNI{8J-VQ364r62}XDU2aQDT*Oe85To# zr8ow!GCYPXr6h)IWkd{l%E%b commandList = new HashSet( List.of("todo", "event", "deadline", "list", "done", "delete", "find", "save", "exit")); - static String commandNotFound = "Oops! Command not found!"; - static String taskNeedsName = "Oops! This task needs a name!"; - static String taskNeedsDateTime = "Oops! This task needs a date/time!"; - static String wrongDateTimeFormat = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; - static String noTaskFound = "Oops! Task not found in the list!"; - static String noTaskInList = "Yay! There are no tasks in your list!"; - static String displayTaskList = "Here are your tasks in your list:"; - static String displayMatchingTaskList = "Here are your tasks that matched your query:"; - static String changesSaved = "Changes saved!"; - + /** + * Analyzes the user input and splits them into a String array: + * - Index 0 contains the action that the program should take. + * - Index 1 contains the message tagged to the program, if applicable. + * - Index 2 contains the date/time tagged to the program, if applicable. + * @param input the original user input + * @return a String array containing a segmentized version of the user input for processing. + */ public static String[] parseInput(String input) { if (!input.contains(" ")) { return new String[] {input}; @@ -31,6 +34,13 @@ public static String[] parseInput(String input) { } } + /** + * Processes the user command, and routes the command to their respective method for execution. + * @param command the String array representation of the user input. + * @param tasklist the master TaskList object. + * @return a function call to their respective method for processing the function, or an exit message if the + * command was 'exit', or a message indicating that the command is not found otherwise. + */ public static String processCommand(String[] command, TaskList tasklist) { if (commandList.contains(command[0])) { switch (command[0]) { @@ -61,76 +71,118 @@ public static String processCommand(String[] command, TaskList tasklist) { case "exit": return command[0]; default: - return commandNotFound; + return Ui.commandNotFound; } } else { - return commandNotFound; + return Ui.commandNotFound; } } + /** + * Creates a new Todo object if the input line is valid, and adds into the master TaskList object. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a function call to create a new Todo object, or an error if the input line is invalid. + */ public static String todoCommand(String[] command, TaskList tasklist) { if (command.length > 1) { return tasklist.newTodo(false, command[1]); } else { - return taskNeedsName; + return Ui.taskNeedsName; } } + /** + * Creates a new Event object if the input line is valid, and adds into the master TaskList object. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a function call to create a new Event object, or an error if the input line is invalid. + */ public static String eventCommand(String[] command, TaskList tasklist) { if (command.length > 2) { try { return tasklist.newEvent(false, command[1], command[2]); } catch (DateTimeParseException e) { - return wrongDateTimeFormat; + return Ui.wrongDateTimeFormat; } } else if (command.length == 2) { - return taskNeedsDateTime; + return Ui.taskNeedsDateTime; } else { - return taskNeedsName; + return Ui.taskNeedsName; } } + /** + * Creates a new Deadline object if the input line is valid, and adds into the master TaskList object. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a function call to create a new Deadline object, or an error if the input line is invalid. + */ public static String deadlineCommand(String[] command, TaskList tasklist) { if (command.length > 2) { try { return tasklist.newDeadline(false, command[1], command[2]); } catch (DateTimeParseException e) { - return wrongDateTimeFormat; + return Ui.wrongDateTimeFormat; } } else if (command.length == 2) { - return taskNeedsDateTime; + return Ui.taskNeedsDateTime; } else { - return taskNeedsName; + return Ui.taskNeedsName; } } + /** + * Lists the number of Tasks present in the TaskList. + * @param tasklist the target TaskList. + * @return a message displaying the number of tasks in the list. + */ public static String listCommand(TaskList tasklist) { if (tasklist.getSize() == 0) { - return noTaskInList; + return Ui.noTaskInList; } else { - return displayTaskList + "\n" + tasklist; + return Ui.displayTaskList + "\n" + tasklist; } } + /** + * Marks a Task at a specified index (relative to the list's output) as done. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a message displaying whether this command is successful. + */ public static String doneCommand(String[] command, TaskList tasklist) { try { int taskID = Integer.parseInt(command[1]); return tasklist.markDone(taskID); } catch (IndexOutOfBoundsException e) { - return noTaskFound; + return Ui.noTaskFound; } } + /** + * Deletes a Task at a specified index (relative to the list's output). + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a message displaying whether this command is successful. + */ public static String deleteCommand(String[] command, TaskList tasklist) { try { int taskID = Integer.parseInt(command[1]); return tasklist.deleteTask(taskID); } catch (IndexOutOfBoundsException e) { - return noTaskFound; + return Ui.noTaskFound; } } + /** + * Creates a new temporary TaskList containing any Task with the same name as specified in the user input. If + * no tasks in the master TaskList matches the input query, returns a message that no tasks matches the query. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return the new TaskList containing a filtered list of tasks. + */ public static String findCommand(String[] command, TaskList tasklist) { TaskList query = new TaskList(); for (Task thisTask : tasklist.getList()) { @@ -139,15 +191,24 @@ public static String findCommand(String[] command, TaskList tasklist) { } } if (query.getList().isEmpty()) { - return noTaskFound; + return Ui.noMatchingTaskInList; } else { - return displayMatchingTaskList + "\n" + query; + return Ui.displayMatchingTaskList + "\n" + query; } } + /** + * Saves the master TaskList, at its current state when the command was called, into a save file. + * @param tasklist the master TaskList object to save. + * @return a message if the changes are successfully saved. + */ public static String saveCommand(TaskList tasklist) { - Storage.save(tasklist); - return changesSaved; + try { + Storage.save(tasklist); + return Ui.changesSaved; + } catch (Exception e) { + return "Oops! Unable to write to file due to " + e + "!"; + } } } diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class index de3a13a5e6201e5961e9b14b8dabcef1ed44024c..58f27d182e854fd8d5f0cee66fa127ab87dd2348 100644 GIT binary patch delta 1817 zcmZXVS#%Ud6o$W^=}dPzorPg@fXE~PB3UL7c7&j;A|W6|AZ$8jIw1ryFf(CsVMG+% z5!;0b3Mx9dpb%t$L=i;=!R6I+I7i=n@$ll4o&&^N6Oad9?!EQ@UAJ!ix2pQ!phJU` z7q54n0VeXR#boLX7Fc+w%VrV_EynObHj7xSqI$o4x6Gn}<%(UQu$3mO3|3p@@{qy9 z7Wsrt9#Ov0Bw{fO$D~R5W|K84b&JVbIt!lFneY_}+3 zllpqI#TK^aFqcP_dCcH(i;+B`%r=vx@=uy2ufcu!++Z8RKdX=@HPwXAc3w{l2|pw0WL9&d1)gopS*LmO@LAt?#! zZ4UF11T$?u<`W5K*?g*kzBkvK>#p(G!;Yx3Kf4L93%4~_{V$8j=ZZb*?)8kStKpbU zC&vxGusK26<|MAoDNbwXN;I1;x^2ExTh>O|e5H!R<_vpHzE+9O+I*v=`Ic#Jz*{t+ zh65sad)$eIA}zAxbL=J`WT*8lVr<}^Erg|X-cCzjZ% z;nS)j;Y8TrysGh%YnmgqpWSNng#L@haCd<@+%3o+Rx(Mh5OP{g)me#5bw0%Fa=hi_ zh`q;MkUgO2Ucr1af;_UB&J4wXc8)B;;flL6yExg2l_sZyoKAdxJ56>sxeWrIB(Juc z{D$(A6wFs#AK@y}`0Faq<4dul(%&~tzsb6Hd{#i$tNs1c4Cuh8tD(2rKQJ@wQ`TRG zS=DLoSejx=h6!Yt{=H1HI-vW69whXg8G3Mr_TQM;%MMwZ>e*E%RaACyCrBkJyeSH5 z1uE|%n1RZU%8gvWGA>cb3NB>4$z^_LsK}+{*dz=L63GhbBbkax7Evy448ujc5zL`f zQj}9qg(Rw!G*vV*iY7)AqndWcv7PbkmbYx5yiZ4@2d72-3!?8O(f%h<_%~VVGWW@{ zv-v|Z{>A;wlx0U@U!~Z(m2b=$$CIfQ>ILL2d2M& ziY$MH8dfTkEGwu#C~zo+sm4`ZQYVwMDgs$)MyGl@rRCMfr21X~L*z)jSZqE0SR&sp z6-AcGP8;OGTuww3Tgyt;vx<$Z&g?sh?>a*aiVR8&=JtrxS)xKOkQBs_=Ty^rp}``H6c(m3jl~vISdz+8>Xfz2k+_u>t5|K&U}3Sw;86>kwGNs> zY#L1-x0ua3ll4k(FxjZid&1;NrNbthl-_L6yN$sVQmI_NyDw(eKr83(^Q^ngiR6@Sp+kip?oTCQ8H z)$2zLj=KA`pmxkXs}&bkF;l~A2)A#mi?+vXX7HfRb95R!Z*!a%Y+j_x{ZktqKVkBc z&C9%EaMI=!u7o#xD zrQr)52-&NA{?jyEF84fv>r&G1)Ch zDRQsr$K3V)5+}2+HQW?!*%E4&pinp#(t3~j|46Bru)K9=dtPWwOL&v`W38b*ZPA!# zc!5nFo~`8>^s73qxW~<6?W)^rUedqUD0Huzh3?7Jf>qOGY?1jhRoBGQ#g=}Gtd`X{ z(Q+gFC4FcYy}*Y=20W)pDzkX_PN>!+6B7{ZcQ@V2j}Krq_MrEXRyTm%IH`|e%X$ci zD~Zw1aDB=xXV!bVhp1%#u;E^j9Vs zwKl;l4;k$tqlS>69uV|_xWG9cJjR2a|G>euiNVf#DW|NTv0fz!d@o!!-7FQOP?M^Ps`a2WZh{gMyD=Rnf!`@s%MuUBXgDL@NeN7~ zEbWiW1*rCy2K`AUCkA_@)8+RFuJ8!H=nc^>V*m14t>!{TDouuJr2PIWm?H$tWr38x zSpHy5%oqA+il8^%;g?Up7zWbC4Wt`MEY=9|^PGuicd(r>@ uq*5iQR)SLGhTn>|q|^bv;~N>IdRZ4qg5}~{;mOB58S&&(p4{ijXa5122sOt5 diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java index dd1060569b..2109c427e4 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/Storage.java @@ -1,3 +1,9 @@ +/** + * The Storage class handles all I/O in the software with two key methods, load() and save(). The load() method + * handles loading of any existing saved data into the TaskList object, while the save() method handles saving the most + * recent version of the TaskList object when the method is called. + */ + import java.io.BufferedReader; import java.io.FileReader; import java.io.BufferedWriter; @@ -7,17 +13,30 @@ public class Storage { static File savedData = new File("data/duke.txt"); + static File thisLoc = new File(System.getProperty("user.dir") + "/data"); + /** + * This method handles loading of an existing saved data stored in the directory 'data', where the program is + * located, and populate a new TaskList object. + * If the directory is absent, a new directory is created. + * If the directory is created and the saved data is absent, a new saved file is created. + * @return a new TaskList object. + */ public static TaskList load() { TaskList tasklist = new TaskList(); try { + if (thisLoc.mkdir()) { + System.out.println("No save directory found. Creating new directory at " + thisLoc.toString() + " ..."); + } + if (savedData.createNewFile()) { - System.out.println("No save file found. Creating new file at " + savedData.toString() + " ..."); + System.out.println("No save file found. Creating new file 'duke.txt' ..."); } + FileReader fr = new FileReader(savedData); BufferedReader br = new BufferedReader(fr); - System.out.println("Loading file at " + savedData.toString()); + System.out.println("Loading file 'duke.txt'... "); while (true) { try { @@ -55,24 +74,23 @@ public static TaskList load() { return tasklist; } - public static void save(TaskList tasklist) { - try { - FileWriter fw = new FileWriter(savedData); - BufferedWriter bw = new BufferedWriter(fw); + /** + * This method saves a current TaskList object into the save file into the directory 'data', where the program + * is located, assuming that the file has already been created before or during the launch of the program. + * @param tasklist the TaskList object to parse into the save file. + */ + public static void save(TaskList tasklist) throws IOException { + FileWriter fw = new FileWriter(savedData); + BufferedWriter bw = new BufferedWriter(fw); - for (Task thisTask : tasklist.getList()) { - String taskStr = thisTask.getTaskType() + " ~ " - + (thisTask.getStatus() ? "1" : "0") + " ~ " - + thisTask.getTaskName() + " ~ " - + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskTime()) + "\n"; - bw.write(taskStr); - } - bw.close(); - - } catch (Exception e) { - System.out.println("Oops! Unable to write to file due to " + e + "!"); + for (Task thisTask : tasklist.getList()) { + String taskStr = thisTask.getTaskType() + " ~ " + + (thisTask.getStatus() ? "1" : "0") + " ~ " + + thisTask.getTaskName() + " ~ " + + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskTime()) + "\n"; + bw.write(taskStr); } - + bw.close(); } } diff --git a/src/main/java/Task.class b/src/main/java/Task.class index de2b9e2c05948f6414f166b637697f607d143ce6..8f0420666b149d97c51d7ed6bf19f6e89b9475d7 100644 GIT binary patch delta 1224 zcmZvbTXR!Y6vu!2O9hE03YIk32DK{I z8{TiQK}4~F;`ri22SjK3z>9B=AHwk?_yMeIofa=0Gs%Cgz1H6Uwf2AQoNkzDnEvI@ zxhud1zRj?b-ZU+2Q|MFJo}rWeG`F)OBg>r{8wlB@;lW6b?G72r@F2q(*)tNdC*&b@ zA69ro;ZcQAg~u}NWnYA0e}u;qX`ZB%S1d;)cv>qQi12wvy|IWSm53CTkZQo;fM<_i z_}QNbm~>-iz|`DNX51WctG&+YJkMEfVU=YyYb>|YYI&XwmKSKZbg|CTM!Uf@S*Cc= zP`{;GtxeV@iiZcwwFA}C* zx)?vRyvZ@kTce6^E4-udF2@4iv%Jp-As;H`MaC8K4a+LUiLr8N zSmFx-&lp4Ao%gRz?b2ws`^{YEhEi8jUn=o=cYV-mzHys_%l-w!D%Tw5+znxSSBty> zWCWh7DW0c-##S_qt>`E=EmO>Mn_!1K5^gjFcPU)6X{}@mc=Iy8WI&5C0iE(iY|Ffi z^FKjPf`L2>qw|qM9j+n0ZnPj2%j7j6LyV+kR>~=D0+VIEIKCXXLw0-e=^-MZ-8fe;vVT<*d~Ym&FIfAVcaTQ_pnhJ zmu&Tx79WsJGR?)UC!{6Um)RZnpzj>{<7648krDdD*LyareCuPy@MVZ*p1OrqQda@@ z3ftztIk$^&dd(a4?q>)tlAUeyFO#?^p*dE7w(rG)ER@_!E?}RK?x&vORc)mPJ&Q7} zt!o@=6h41WgkV-YufF#jS#{ceBuVpEJCGBpp}wRS_DN~L7{-fS`jIz$feOl3#Cm>qEK() z;{6Vz78H>eU(|=LrSQ-PUVPGT;Hw|O4?x}fv=n4HEBWvH|Ln8(xw33>S>w-}(>H*J z_#t2wy;<_?P}r%kE1-+VvuvO*5OcTsp77~c_mh#7J?*nM;2HJ>k~8SD-{*j;&ni5p z@Vvr7g%<)2aX7+oG{T|i^I}A+OG&BA5h-3#Z8##$@rVq^eNK3cdW@a_`S(=CV?3#v ze)DQ_!;G0~(&21qv{MUNO-o2C_l2yXEu_xokk=@L+|S04wG<2{4tbrEhQ-?}m3pmS zEshVA>%)~&ZBd3(J`*8t@TTFOQs+SDgnV&d->97YR><4D6Vl+c!TtMkV)0_g8P0~B zYbd^}@Sei^ob~u1C4`B*7G@%dEcXNLAYmGN3W9vnVai|fVONPMzbi;E|!jUSUzJ|-j;M{{>n@$#dk^0TWh{gdcA9@D~8r&$ZJjVe#^$ZyaQw#jt*8d zM`vrLjMqvTsmQEsvYmB;9my$wi&>vs_t$Lglt?GejF6-~^2T^{$q$kF8QJWAoQ^m> zc^XDnB?omRP1#Ld>xE(=u3#IH>@O$BD6Nahu}PGa6g(jR2ia^-Z)BG)(V~o42$9jT z*~m}XxN$quV`)5`aGPz3?%6acS|RCLoG$!EYDyHt?YdsEdU!;z~V+jI6@;}h(#1{jWH00$L1L)?Lgs>Fgl9|ud+my z!gZQ-7}L@$Q#Q2YD!DsDlCol&=3C*N{~KN@;cOJoHJ1FiVD$mLbsD#+xmk9)&33$< lZ$)Zf7rD$O8Pb5*>!kaq#J9)d5sO0>U$XeJ#bXvn{sl?Vyc7Tc diff --git a/src/main/java/Task.java b/src/main/java/Task.java index c48f98b0a1..2f3efd49f5 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -91,10 +91,10 @@ public String getTaskTime() { */ public String markDone() { if (this.isDone) { - return "Oops! This task was already marked as done!"; + return Ui.taskAlreadyDone; } this.isDone = true; - return "Marked this task as done:\n " + this; + return Ui.markedTaskDone + this; } /** diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class index 7c5829a6f501315a896d56e23da07c58c57561e5..d4af368d69436eb1b3ec002f7f397a155a73ba40 100644 GIT binary patch literal 2436 zcma)7TT|Oc6#mvW$S4Agxg`M-LZI;toU~~Rn9wFBG;VE3YY2g)Ey7-mu#u=FlhWt@ zh(7nFFMVh;4P;=Z)93z*{*KP{a#j-9iPeiev)VoTeP_@4&XM-lKTm!JFpV!|3}HsX ztc(C=I&c{oF`Mha9n6c_dos=5j}mx6!hIPs7G*+xAmM?GPUIwfD5D!Wf&EBAUPcrJ z!Cs1j;h`{pEM}jCQH;`JRl*|)YYd^9X4wq=`CauuP1kL$mcDD6>S3PD8HSFcR?$_v zZgPeZKg?WyMYXD#dBV2OX}V_5GX!JtN8~wcl!?`y*L1#A-`nEmin>)JOHeJB87{|M zX595!Q}s%^Xq%c|Ay<;lpRE{WgW*POqZQ!G2@~i30oN&;89&nhbaR2+EO514qp%sm zd#YJoFvPS!mh(MVF7q0Gt#dGdjNXal5^VlsKU-jQnz%8sajC?9gQVCW{`_U-7N7%O=#XJ!V`f^i8?D7#WjXrpPDNe#)yJ(tV`HX z@B~j4e2TP!&yZq>+%pW@vQ2fr!0jEQY<0Ke^Ds6QsMw;Ci<$}NCE;O$q0K3Xuu#Rr zXR<2b*cNDtNkI~~6;$vvj2+=dQ?QF|F(Wws{pRjb;HCbgT^tk+(eLOKqPStmN-RV{TRU)2>s}AuhZB?2++M0qFFcn zsRo$v*fX>jpxu$gPY5NC(6;s*?MbmXg7gyM6LbJSoVyZN7cfZ1i{#)9-0<9_$a#o% zBBzkohf>G5u#}iQg7P|ZjDo*ToEYLBGmSR-1HGr{Br)x}BhO$q6h`|hvblEQDm31Pq~7bgw25uvMMjGi%Qc$*Lk0)L=Q!aMADvIp_5!DiUBTh*$$lczZ+aI9b#9n;&a zN`ZkepNaf}Su5uz>DxYGJGM6|5KW~&VdN>-BC0cQJ92JweMMFm%#{i)QPZ*ndQ){| zx*oM+I>oVqSGAoYLv<89bG1BcZuk%l45vAAd%?9_fy=3-R!nFZotQgY(jmd?VW8Ix zbDUwOrD;{jL_l9RtL14|ExS`Qq30TwtVmBPWtezTdIkHbBA!am)b~nVfwQRq-6H#i z@Fz`T>z-RzOW<_F`DG1_g1cE=m3M8Wd56kHojR)O9LEJD1x|(3JdQr}$MGf>G8OpafeWHz&7!X33ISORh-iB-x(Qx?v>w6ULmoo!oIZ`E*Mrg-F^? z(kscNdTT~m!F97Nr(9>%^cHQe#8u5R9gixF1noW3ltR$np)GSJtUuLjlnQ$g5|pk{ zc3MkQ2D}B%J(BD0mb93^UGpgi90i8Lglav5uXxpuA#ncxl)2sO6k>0 z+nPjkkVZ{gy)>+;u5kn|9<_??Y`J9_d}ZoYyKAm`Zgoe)2Fc}Jx4g+ke8zEPb*f_4 zYLcb=t~rY!M!og#n~qhHwTpFNt~HG&%S*t8oede{{-nu2gj*0|%B)lhwkLBMz81LD z!Y?d0R_wq1Fvy#vmsgA6Ex}I!=K<~_IL~WFsP6^GL0Ycx_TX!YuFM`p<^Yk$dx-vm z*iSz84UQ-10p3S3t~&V_>N^mipVAuP({$!%#D;g#wm7U-yJ!!l*!R#A+B38z^nDxy zex!2*Dr|yK;4F>j7`O*1&X;JpjL0D~i)iT4=)^f84tZR|5LE^ZLo{6`sLmqGU@BbK z0gT6e**zSe%Z%(Iu8tG_aq7whGdKL))5rwKF|_dyoH{@Ukt2IJaU+)LA%zz37~+&m zU^ooiSqFFh8#qVs1i@L11ShAdtIFx5lBzFe?c(HbNbKU&QPS;n1@3SheF6KHL{&j< z9>Ml;8kl{t?_SIX>Ic(HML0v(>`@uc`0VG2O3<}e>GTe+ zaa0g1kRX#dn~&b?503c(eZ&2+Wwq<4miz1{unVQ1owIst%5YI(tG>^DFLU^Swp;#~_s4mEeDn{$2S23% diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java index 0bbb9a0416..02f61f5423 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/TaskList.java @@ -1,5 +1,5 @@ /** - * The TaskList class is a class that encapsulates a list containing various tasks, and handles operations relating + * The TaskList class is a class that encapsulates a list containing various tasks, and handles methods relating * to creating and deleting tasks. */ import java.util.ArrayList; @@ -21,8 +21,7 @@ public TaskList() { */ public String add(Task task) { this.list.add(task); - return "New task has been added:\n " + task - + "\nNow you have "+ this.list.size() + (this.list.size() == 1 ? " task" : " tasks") + " in the list."; + return Ui.newTaskMessage + task + Ui.taskCountMessage(this.list.size()); } /** @@ -33,7 +32,7 @@ public String add(Task task) { */ public String newTodo(boolean isDone, String taskName) { Task task = new Todo(isDone, taskName); - return add(task); + return this.add(task); } /** @@ -45,7 +44,7 @@ public String newTodo(boolean isDone, String taskName) { */ public String newEvent(boolean isDone, String taskName, String taskTime) { Task task = new Event(isDone, taskName, taskTime); - return add(task); + return this.add(task); } /** @@ -57,7 +56,7 @@ public String newEvent(boolean isDone, String taskName, String taskTime) { */ public String newDeadline(boolean isDone, String taskName, String taskTime) { Task task = new Deadline(isDone, taskName, taskTime); - return add(task); + return this.add(task); } /** @@ -75,10 +74,9 @@ public String markDone(int taskID) { * @return a String message indicating if the deletion is successful. */ public String deleteTask(int taskID) { - String output = "Removed this task:\n " + this.list.get(taskID - 1); + String output = Ui.deleteTaskMessage + this.list.get(taskID - 1); this.list.remove(taskID - 1); - output = output + "\nNow you have "+ this.list.size() - + (this.list.size() == 1 ? " task" : " tasks") + " in the list."; + output = output + Ui.taskCountMessage(this.list.size()); return output; } diff --git a/src/main/java/Ui.class b/src/main/java/Ui.class index 3a4c7e732654da6067bdfd3de21dfd47f904acb9..b32861298ba02dedd4de13ad73eb6e8f955c5b56 100644 GIT binary patch literal 3653 zcma)8`F|6~75^@WwX7H0EVv{jz?hI=gF%6iqnJX#j%yc795zrAT6ZlC)?#T_?5;3s z-KJ;K`#zHNO4_9KNZWu~LTQ_}zxHqHr|tLcO122(6C~{HxZbqipdqh zg%%>j@~WA*YGToWfx3y0irvRdEQ$QMiBE`p-oz(Ge#*qBMSjM_XGMO_#0w%{H1T>(L!G9Vw86)+Q5e8{+Ju<8BcT@7sJ4x zZ}rE6u;RuBy8U2=woT`D+MD#JyoiInMK7wB-MS!B&E}>i=f;H+=Uy4vqQyQ=_qpNC7GfwYi7}|>si!g zmPRjwy7e_LUhZ`r_IxisVqo>)&^ZHZMuVcvHRbs_U#raNaK@c0Q)5P@U~wv#4>$|m zAJ>u_XB0+DKr3_Z)rPseUyA?H>Tj~RTQInL`i zudl_U>Cze4|3BPxTG2kK%P5z8C8_?w$)QeA^KhZuOxKzYYGFZ-dy-t{thZ10ij5E8 zgn>xS@=?uaxnV6SHLEW2Pr0O)64b1s`mSGAWd$bc1eLy(I!vqCthFS*v+CmP?C>my zF3z$wyJThX0~+cSX3?5 zsgN5&xqe**aY=`2LDy9rs8QE1=rZ+1bwq z*KGV2uV?UF@B=5pB! zeAL85E~f?$94v)Hj7eyLUfw5O2AW=&(n`e2^A#6Bm3agRJR-n{FSzvqHN$1m%H`h= z()bK7p4NOV&>~T8%4ZBy z$WArwIMXv?vNf+4(={$}WKL^exy7O`w)~C@X!99e2^h%A^sV9d%kYW4|IcHcPg!z6 zotLVSz|t0V^ge4s&Mdd0SCH*gAFymp zipi?89#756Svom)Sr>S3w5if7>TXp%igktD9Mp*IPbtj{vZr{N#l&m3!YeI3qIavw zX;lH0c?$cRq}qNF3fFH)!f9u0(!5VP7Vo@KexHhEtzpwyPL9kF`CG1JLtVhdk6loUqrS=jueWWBm!JDJ3qn)YY$i0!Z zY3?$dsaJIeczeBC`{!O4qi(r8&8;z#!Cy(A_vF_pHd4}m$6RH_=VZb@b)g*?R}; z0rpqFIqdW#27SX$Z_>yRL_KHOj$veBa~=tPHzNQPE4+ioJ30CY9>OkSb`v#-M=`{! zc$oL&KAa|U1G@f!?HQaonSpH^{ZAVVe;PB*@Q*gbe?Y?TyM+xB{w+AU;oI1l-^-{s zy+to+;hZGX$2j*vuJz;S#}jmR7U!DIj}_D5lWpKpXMY0+oW~kC=se!Q6DuowoFQ<3@Ylt< zX3)z3HZiCB+1rM0R@P=s*JCewaDbyv5`UOAJq8Ek*vL>fG3O5^$z8yoC@ltk2k+pI R^l_Q}9;UrOT{(GQ`!^WvsTBYK delta 864 zcmYLGO;Zy=5Ph>rnAy#ckc9*g)I|v(Y*5e$f)WJ+q9%Nc5kD%z3b7)oB7k_}>V3-XB?k3V0&0vNx(508&BMCbE6j`hrW zUfOi5+3mvCR$*f;#SqR7SygCkJ-@N$lo`zIkTqT?ujDsZt&?Dv`^(ooGb1sJIR=)K zn8yNLUUMu;+{Y3_$V;}$)M>Siz%0ER4BCh#@c`2jIm~f9lvu_iiN|>2F7n>bZ@6Tx zuD^|;4bAii)Kded<|BLB{TPfz&v-Gw2OVcUhWsG~8UE8l5D24=j!r_(sn(QnKy+1nS<$#h7oOKE*sInvD9~L&Fk_pt zg4*|xwi%+!J4AYp5LVneO7ZR6X5=4kR`Gyu-@i}wwW^YSNV?aPk_OTdMH6B)N+aU5 zm;qYNFfC<_MoW{nC1T{TXW=|ig7E*w07rXmgpvL@Iz0U;s_dtP7Nw!Sf(9kCf@sD* zLM)pgb&UrEA1}hJrpBp#2et1c0bNwA^JJHCZ Date: Thu, 6 Feb 2020 10:05:45 +0800 Subject: [PATCH 27/36] Added support for Gradle --- build.gradle | 31 +++++++++++++++++++++++++- src/main/java/{ => duke}/Deadline.java | 2 ++ src/main/java/{ => duke}/Duke.java | 2 ++ src/main/java/{ => duke}/Event.java | 2 ++ src/main/java/{ => duke}/Parser.java | 4 +++- src/main/java/{ => duke}/Storage.java | 8 +++++-- src/main/java/{ => duke}/Task.java | 4 +++- src/main/java/{ => duke}/TaskList.java | 3 +++ src/main/java/{ => duke}/Todo.java | 2 ++ src/main/java/{ => duke}/Ui.java | 2 ++ tutorials/gradleTutorial.md | 2 +- 11 files changed, 56 insertions(+), 6 deletions(-) rename src/main/java/{ => duke}/Deadline.java (96%) rename src/main/java/{ => duke}/Duke.java (98%) rename src/main/java/{ => duke}/Event.java (96%) rename src/main/java/{ => duke}/Parser.java (98%) rename src/main/java/{ => duke}/Storage.java (92%) rename src/main/java/{ => duke}/Task.java (99%) rename src/main/java/{ => duke}/TaskList.java (99%) rename src/main/java/{ => duke}/Todo.java (96%) rename src/main/java/{ => duke}/Ui.java (99%) diff --git a/build.gradle b/build.gradle index ce97c7ba2e..1d50351463 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'java' id 'application' + id 'com.github.johnrengelman.shadow' version '5.1.0' } group 'seedu.duke' @@ -12,9 +13,37 @@ repositories { application { // Change this to your main class. - mainClassName = "seedu.duke.Duke" + mainClassName = "duke.Duke" } run { standardInput = System.in +} + +shadowJar { + archiveBaseName = "duke" + archiveVersion = "0.1.3" + archiveClassifier = null + archiveAppendix = null +} + +repositories { + mavenCentral() +} + +dependencies { + String javaFxVersion = '11' + + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' } \ No newline at end of file diff --git a/src/main/java/Deadline.java b/src/main/java/duke/Deadline.java similarity index 96% rename from src/main/java/Deadline.java rename to src/main/java/duke/Deadline.java index d9f7d02005..2b92113c60 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -2,6 +2,8 @@ * The Deadline object extends the Task object in creating a task of type deadline. */ +package duke; + public class Deadline extends Task { /** * Constructor for a new Deadline object. diff --git a/src/main/java/Duke.java b/src/main/java/duke/Duke.java similarity index 98% rename from src/main/java/Duke.java rename to src/main/java/duke/Duke.java index f3e625d665..96bb0a1fc8 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,3 +1,5 @@ +package duke; + import java.util.Scanner; import java.util.List; import java.util.ArrayList; diff --git a/src/main/java/Event.java b/src/main/java/duke/Event.java similarity index 96% rename from src/main/java/Event.java rename to src/main/java/duke/Event.java index 7b8188651a..10c1afa0f6 100644 --- a/src/main/java/Event.java +++ b/src/main/java/duke/Event.java @@ -2,6 +2,8 @@ * The Event object extends the Task object in creating a task of type event. */ +package duke; + public class Event extends Task { /** * Constructor for a new Event object. diff --git a/src/main/java/Parser.java b/src/main/java/duke/Parser.java similarity index 98% rename from src/main/java/Parser.java rename to src/main/java/duke/Parser.java index 3787de5189..7a2ca2cb39 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/duke/Parser.java @@ -3,6 +3,8 @@ * contains a set of available commands available for the user to use. */ +package duke; + import java.time.format.DateTimeParseException; import java.util.List; import java.util.HashSet; @@ -186,7 +188,7 @@ public static String deleteCommand(String[] command, TaskList tasklist) { public static String findCommand(String[] command, TaskList tasklist) { TaskList query = new TaskList(); for (Task thisTask : tasklist.getList()) { - if (thisTask.getTaskName().toLowerCase().contains(command[1].toLowerCase())) { + if (command.length > 1 && thisTask.getTaskName().toLowerCase().contains(command[1].toLowerCase())) { query.add(thisTask); } } diff --git a/src/main/java/Storage.java b/src/main/java/duke/Storage.java similarity index 92% rename from src/main/java/Storage.java rename to src/main/java/duke/Storage.java index 2109c427e4..ac479d737e 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/duke/Storage.java @@ -4,6 +4,8 @@ * recent version of the TaskList object when the method is called. */ +package duke; + import java.io.BufferedReader; import java.io.FileReader; import java.io.BufferedWriter; @@ -27,11 +29,13 @@ public static TaskList load() { try { if (thisLoc.mkdir()) { - System.out.println("No save directory found. Creating new directory at " + thisLoc.toString() + " ..."); + System.out.println("No save directory found.\n" + + "Creating new directory at " + thisLoc.toString() + " ..."); } if (savedData.createNewFile()) { - System.out.println("No save file found. Creating new file 'duke.txt' ..."); + System.out.println("No save file found.\n" + + "Creating new file 'duke.txt' ..."); } FileReader fr = new FileReader(savedData); diff --git a/src/main/java/Task.java b/src/main/java/duke/Task.java similarity index 99% rename from src/main/java/Task.java rename to src/main/java/duke/Task.java index 2f3efd49f5..940e4e8294 100644 --- a/src/main/java/Task.java +++ b/src/main/java/duke/Task.java @@ -3,11 +3,13 @@ * is done. This object also handles any editing to the contents of the Task. */ +package duke; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; -public class Task { +abstract class Task { private char taskType; private boolean isDone; private String taskName; diff --git a/src/main/java/TaskList.java b/src/main/java/duke/TaskList.java similarity index 99% rename from src/main/java/TaskList.java rename to src/main/java/duke/TaskList.java index 02f61f5423..a4f8cbe5dc 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -2,6 +2,9 @@ * The TaskList class is a class that encapsulates a list containing various tasks, and handles methods relating * to creating and deleting tasks. */ + +package duke; + import java.util.ArrayList; public class TaskList { diff --git a/src/main/java/Todo.java b/src/main/java/duke/Todo.java similarity index 96% rename from src/main/java/Todo.java rename to src/main/java/duke/Todo.java index 9a375a1dc0..c36d17f3c4 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/duke/Todo.java @@ -2,6 +2,8 @@ * The Todo object extends the Task object in creating a task of type todo. */ +package duke; + public class Todo extends Task { /** * Constructor for a new Todo object. diff --git a/src/main/java/Ui.java b/src/main/java/duke/Ui.java similarity index 99% rename from src/main/java/Ui.java rename to src/main/java/duke/Ui.java index 53899817a5..bbf0371641 100644 --- a/src/main/java/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,3 +1,5 @@ +package duke; + import java.util.Scanner; public class Ui { diff --git a/tutorials/gradleTutorial.md b/tutorials/gradleTutorial.md index 08292b118d..b54a06b012 100644 --- a/tutorials/gradleTutorial.md +++ b/tutorials/gradleTutorial.md @@ -5,7 +5,7 @@ Gradle is a _build automation tool_ used to automate build processes. There are * [Introduction](#introduction) * [Adding Gradle Support to Your Project](#adding-gradle-support-to-your-project) * [Adding Plugins](#adding-plugins) - * [CheckStyle](#checkstyle) + * [CheckStyle](#checkstyle) * [Shadow](#shadow) * [Adding Dependencies](#adding-dependencies) * [JUnit](#junit) From 7b9b1c4a24103f1a50e20fbe4ae3e72ac858a888 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Thu, 6 Feb 2020 23:49:48 +0800 Subject: [PATCH 28/36] (Level-10) Added initial GUI support --- build.gradle | 14 ++- src/main/java/duke/DialogBox.java | 52 +++++++++++ src/main/java/duke/Duke.java | 150 +++++++++++++++++++++++++++++- src/main/java/duke/Launcher.java | 12 +++ 4 files changed, 215 insertions(+), 13 deletions(-) create mode 100644 src/main/java/duke/DialogBox.java create mode 100644 src/main/java/duke/Launcher.java diff --git a/build.gradle b/build.gradle index 1d50351463..74e20e7b23 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ plugins { id 'java' id 'application' id 'com.github.johnrengelman.shadow' version '5.1.0' + id 'org.openjfx.javafxplugin' version '0.0.7' } group 'seedu.duke' @@ -34,16 +35,13 @@ repositories { dependencies { String javaFxVersion = '11' - implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' - implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' - implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' - implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' +} + +javafx { + version = "11.0.2" + modules = [ 'javafx.controls', 'javafx.fxml' ] } \ No newline at end of file diff --git a/src/main/java/duke/DialogBox.java b/src/main/java/duke/DialogBox.java new file mode 100644 index 0000000000..7c3336998e --- /dev/null +++ b/src/main/java/duke/DialogBox.java @@ -0,0 +1,52 @@ +package duke; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + + + +public class DialogBox extends HBox { + + private Label text; + private ImageView displayPicture; + + public DialogBox(Label l, ImageView iv) { + text = l; + displayPicture = iv; + + text.setWrapText(true); + displayPicture.setFitWidth(100.0); + displayPicture.setFitHeight(100.0); + + this.setAlignment(Pos.TOP_RIGHT); + this.getChildren().addAll(text, displayPicture); + } + + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + this.setAlignment(Pos.TOP_LEFT); + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + FXCollections.reverse(tmp); + this.getChildren().setAll(tmp); + } + + public static DialogBox getUserDialog(Label l, ImageView iv) { + return new DialogBox(l, iv); + } + + public static DialogBox getDukeDialog(Label l, ImageView iv) { + var db = new DialogBox(l, iv); + db.flip(); + return db; + } + + +} + diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 96bb0a1fc8..d21ccc53f0 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -4,8 +4,38 @@ import java.util.List; import java.util.ArrayList; -public class Duke { +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; +import javafx.scene.layout.Region; +import javafx.scene.control.Label; + +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; + +public class Duke extends Application { + + private ScrollPane scrollPane; + private VBox dialogContainer; + private TextField userInput; + private Button sendButton; + private Scene scene; + + private Image user = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); + private Image duke = new Image(this.getClass().getResourceAsStream("/images/DaDuke.png")); + + public Duke() {} + public static void main(String[] args) { + run(); + } + + public static void run() { Scanner scanner = new Scanner(System.in); List log = new ArrayList(); @@ -13,16 +43,16 @@ public static void main(String[] args) { TaskList tasklist = Storage.load(); System.out.println(Ui.welcomeMessage); - boolean hasNotExited = true; - while (hasNotExited) { + boolean didNotExit = true; + while (didNotExit) { String thisResult = Ui.getNextCommand(scanner, tasklist); log.add(thisResult); if (thisResult.equals("exit")) { if (log.isEmpty() || tasklist.getList().isEmpty()) { - hasNotExited = false; + didNotExit = false; } else { - hasNotExited = Ui.askBeforeQuitting(scanner, tasklist); + didNotExit = Ui.askBeforeQuitting(scanner, tasklist); } } else { System.out.println(thisResult); @@ -33,4 +63,114 @@ public static void main(String[] args) { System.out.println(Ui.exitMessage); scanner.close(); } + + @Override + public void start(Stage stage) { + //Step 1. Setting up required components + + //The container for the content of the chat to scroll. + scrollPane = new ScrollPane(); + dialogContainer = new VBox(); + scrollPane.setContent(dialogContainer); + + userInput = new TextField(); + sendButton = new Button("Send"); + + AnchorPane mainLayout = new AnchorPane(); + mainLayout.getChildren().addAll(scrollPane, userInput, sendButton); + + scene = new Scene(mainLayout); + + stage.setScene(scene); + stage.show(); + + //Step 2. Formatting the window to look as expected + stage.setTitle("Duke"); + stage.setResizable(false); + stage.setMinHeight(600.0); + stage.setMinWidth(400.0); + + mainLayout.setPrefSize(400.0, 600.0); + + scrollPane.setPrefSize(385, 535); + scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); + scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS); + + scrollPane.setVvalue(1.0); + scrollPane.setFitToWidth(true); + + // You will need to import `javafx.scene.layout.Region` for this. + dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE); + + userInput.setPrefWidth(325.0); + + sendButton.setPrefWidth(55.0); + + AnchorPane.setTopAnchor(scrollPane, 1.0); + + AnchorPane.setBottomAnchor(sendButton, 1.0); + AnchorPane.setRightAnchor(sendButton, 1.0); + + AnchorPane.setLeftAnchor(userInput , 1.0); + AnchorPane.setBottomAnchor(userInput, 1.0); + + //Step 3. Add functionality to handle user input. + sendButton.setOnMouseClicked((event) -> { + handleUserInput(); + }); + + userInput.setOnAction((event) -> { + handleUserInput(); + }); + + //Scroll down to the end every time dialogContainer's height changes. + dialogContainer.heightProperty().addListener((observable) -> scrollPane.setVvalue(1.0)); + + + + + } + + + /** + * Iteration 1: + * Creates a label with the specified text and adds it to the dialog container. + * @param text String containing text to add + * @return a label with the specified text that has word wrap enabled. + */ + private Label getDialogLabel(String text) { + // You will need to import `javafx.scene.control.Label`. + Label textToAdd = new Label(text); + textToAdd.setWrapText(true); + + return textToAdd; + } + + /** + * Iteration 2: + * Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to + * the dialog container. Clears the user input after processing. + */ + private void handleUserInput() { + Label userText = new Label(userInput.getText()); + Label dukeText = new Label(getResponse(userInput.getText())); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(userText, new ImageView(user)), + DialogBox.getDukeDialog(dukeText, new ImageView(duke)) + ); + userInput.clear(); + } + + /** + * You should have your own function to generate a response to user input. + * Replace this stub with your completed method. + */ + private String getResponse(String input) { + return "Duke heard: " + input; + } + + + + + } \ No newline at end of file diff --git a/src/main/java/duke/Launcher.java b/src/main/java/duke/Launcher.java new file mode 100644 index 0000000000..fa23e6d95c --- /dev/null +++ b/src/main/java/duke/Launcher.java @@ -0,0 +1,12 @@ +package duke; + +import javafx.application.Application; + +/** + * A launcher class to workaround classpath issues. + */ +public class Launcher { + public static void main(String[] args) { + Application.launch(duke.Duke.class, args); + } +} From 86d4e5c7ef19599f5150d4c0274ee5dace3e2c86 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Thu, 6 Feb 2020 23:50:14 +0800 Subject: [PATCH 29/36] (Level-10) Added images --- src/main/resources/images/DaDuke.png | Bin 0 -> 32657 bytes src/main/resources/images/DaUser.png | Bin 0 -> 37794 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/images/DaDuke.png create mode 100644 src/main/resources/images/DaUser.png diff --git a/src/main/resources/images/DaDuke.png b/src/main/resources/images/DaDuke.png new file mode 100644 index 0000000000000000000000000000000000000000..d893658717e29b50b4ceedada235d9f75835a118 GIT binary patch literal 32657 zcmV)5K*_&}P)Zf>Tg`t%N;{PE9Y2%-o7`CdniQG#9szpJX+ zcrVK`zK7pG^!n{1T{qo3os(XNkTqW0IXIfGihv^wpO4cHg6YjrzS7VYZJZVWev% z!fK9RcD(ntf zCxMCmC7oRZecuOe6J~p&f5@?I;U2zE;O2T?Vy_8UZ1S4i=b>l%q0jeYAI+i(>K zsIun-!&|SPodfa+5u7Z5yhtd`XRjxuF+Ww~1H4xg)(?GXYLo{q2VPiixh(3*`0iyFHj`V{p-_+Q4jWKC=o6ohr zW)q;Nb7IxtY}qD4RyBpAMv`rR!YytU)sgEIa8F)wX(O<=RwjYY+sLdy0`5o0>=a zd(GePvuhIc}2|`2Y7OgN%4u~XV>q*3e$65qJ;}bK0Li-Wh%~iQn_FhV_*O6|& z$E%S!>BN;~l+|jbw5B2<783HDuPYE-T1Z)&EZTFhZGIj)nseO*|7}7`Vz4%vMl&l& z!c*D(>n3|ulhD`D1FzG)Tik79GgrpJ#HE0O)y{gM#c%L1=xtu`A<9oj(;}Q6cpHb= zIjOSNTO3vD|G|N_tH+^nj?I`D4+@;j;9`s4!*lY>X2_|khHWO LGkWs%c&z?S( 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 z z$~Fy&@3nBTb(>mup6iT8r4^7oYZjeuy=Tb`MlEJ0J28V!`yW$N#jo-DmsvUcBi?3F z$b9q#Ounu+bsux2uhlM{ipYA9GZ_#LI-I+AHtFHRHQMOI)SdDdo{UbJ#SR0q0q!-! z#&_2?2%Gb=2BIs~#Gz%J?Pl6U32aVUF z{#uX6F6=PCk7CDD8)^)@jQ#x#h6JH3LMWZ(2&le6=1C+fIkcbI| zRxKr>R8zy#=+((ysvaQKF4{V;eQWxDb)MEtylHgCzPxgVW%3+SlbGdZ3N77KHz}uq zmNhTq_$5)<~E@ z1>XT#cbGejI~z|f+0?O6f%-6L9GEUp`JfTPGc|U}W(I57Y~69?4>)%=MoK$OiYaLFSJ(GMf)h=7DYoL*s2C~)Q+VcuE{#nV*4wPBFRIQP`{cl>2 zFOl`<$paDW#rEV|U1b&E1hgBi%^eQge-lTYS%)RCxwNah3+ znHvMaYhk)QDm=@Q&0v)k>i<~NnZhCIrlp%|CW}-syuE+@{4}bpj5Z*(X1?~v(m>NW zbA6VDW>u(Czv((Nd7WV4&`#)rH?YXyq;J#yBXCnWY6a&xpQB2#qK%CPFUH}|hfLDH zG1%nF0zP#v4W9GpG}H@8Vp?VtBW(hIs~4ihZokbNk5Z6|n_{It2m~O#UReCaW$?KK zaYs}%4-uzm1sQa-9->fqwuix2`={T2N59^GOpkVkF)HGdtJKWJ?ieeh$s)Fu3K4>j zs0=hJjCK2U_^9t+hvUv!M5&bw-agAJYlX8^h~UJ}bBQa&!sP{fqLjyz&6G~>Qq3Dd z(mHZjaoj1IcxOJ7_i8rfu{`-5hmDV1W^87tBdM4w`KeG}in|IMU}jZmq$|X3vRL zY1fjgzN$o%R6NlXk!8UtAZR}pDBTdQ5}+&YlHM5fXckQ1(a8z@+wZ=o)4Qkis|UNZ zw$_)3k93T$jZNdrVG)JExY@B-YywRS=*T#GUS?OL7r((ah9Z_E8pR?q$_%jeT3S=c zBn|j&gaEY=49$zF;%HB0CQF3DDrU1cwCd8(lgdP3Yk5 z0dES>WGQ(8Q(c=}5B|fH7LA~df`0_R3c`d_gL4k}f~zd4(v6Z3A4Py=@I_i3;rGN$ zWemW~^R|o}Nm~A=^D%WhXpim$A8txNynM+MNdNNLGx@%ANz&#@>6mGHg<%wK&5|}K zsW4cuhD$^5G?l}5XD-D0E1fVuhAg*KD~a2r^CxIZO75#@o`C`APD2& z%%fSN*O$?@76FOZ?1E-&G3JH)%c8@8DttGX!|4PZP%}0?{r(!)F^z+u|JTWTI{J_A z=<$R5^vQ6@l^2L|neI^(E`9)B>2kL ztf632nc`EK{vcaeWRYZ~Qei9VUXv(PQJ9hqv{VsMt+{F$OZ=(T+mAi$`71JWQ~Ks( zkMi$+^JQ=@=k)Wt1A6`PElqe(W0x*YU-9`hN@2-EU)Cr@e%sr(sJF3Bb3h9ibz2JZ z4fZ^=zZY4PrXxp(n1dX&A-qPb0;);1C(RIK2(D-Bxo3zOxO+XL;<&G zv(RF=LhF-!Fw+eolnwsb+Iol04!EVxCKvR(@4u(FKfb01ySp^p90XHbY2&Dqjv&ql z%A!>|;#Mq=7^RrFjny5}qUK}eqX|?kSftv^!b5JBEi{tMMW~#bCl*3Ag$!5uoSPiYj=X+ZEJHjbyQq%Xf_e-OUC#JQpNuc){lRh2a0{A_ z=U_|>n_p5Vm?)I+HbVd~+}Y+z$Z-&^(~~pSPD0QY7GQSC`-9~5Xfh3gjJmHTJMI!W zHhB?2NnL7zAK-|JhiQg|3O?P@`B`}FgwF2XrF+A>JX0CtPh?nuP&)dBk5Lv+tKi76 zQmZ5gz0a&{*z-8L+968CN&!tTw~UG9b#*B_;YF^E3}TjZE&r*ae^i?#J66qH=4&C4 zs*IW&b}5ZyK9>1$S^d7(MSiJ(rN7&Au5-#i_9&{^{M(l=FM`=axeKZqLuB}{)R z8f>l6qepv;TlIRK;M>S7Wf|cYOdL@4qr)IjS3%Rw==Au6+uu30(v$_boWktj)Jw*+ zkjj}eJRu|0fTlxZAOOH3VP+sIBW6M1=0RW;AQIe3TfiDzY1!bNwklRBR|Zdkw2+>M z&w{trLP9)zA8?qm@I=<&+9mc%iiW?P8a1!N615mperGjQkcR2%?4vxWRADJtLk5$K zQf=mVSK*gdoan@h`J-h)N=+dt9HRANsZemGtJT~FVwY`Wktp*s?@0X?F;@P)gO_*fB4-`eQZ=0&_9r2oaIzf^n`(Fp@Kcc8g~%XF<3&sUI{XSo;8~VjtEw zdK^JcrdKS?1Wu?KqSH3#BJukSshw~h?GUkIAktNc7AtO$C|IaoAN)-7Z~@#NY>^L- z3-Bz+cdktr8PzPz@0L=NK3ULW zTG7SmG-#lo!X~ea`o$HAND#nZv&mFLjSvB1Vkj?K-qFRC4Z!q-t=nDpLdIjv-V=l$ z4lbaI*%i!PB@tiv!QghDj!AzcA1d|LCI^mQMPEz4W&Tbq-P^-MuBq>#wTvsBvl!k(0JyLvlSHtXGnv&Rvy`O_+E8n+-nI#3Otpyj zqoam%?YhzV6&w*3RHt2*HJxcYJEF<+H69le&#sOD`Bt?UKiAsh4Ey?pBh`9o+UWmA z;N(Ipzxtbpv=&U<`=eue`^M4u;*vEKoLfYEZ65w}tQ(OB?a&H8MG$~q&~P1E12H>r zFH|`MlZX@#mx&M<`7mQ<&Wqi^7!WLSCC)Ui<5nrHTbE!M4nlb9PMB2&1Rsd(W>;4% zyj5_{#~~PKwY$6*SHawJF(D7AtZ3n<+zJI|Ka}pagZ~E%4eyJtor7SmcY@aH1b;1a zQtjaM|C}!Z$zhts%aR2WP}Ff$ssmcIaYNZ%cvDg-3; zM9XAstD7r%MiGx#Pk)q%eI!XDzVC_WdHOql9`sU{Z8{gA+-T3amwmW^_eI`X9O<$A=SopZpLEJ=ffIco@nZshRF{z${o&yw328!>6 z{2g=Xr_z!E2n6r*+KSnn$zpSknr?(3ma!_%`QzM>v4 z`MBX2Ai-<_WI0TJy;Q`c2LM4Nxm;Fyy}pcxW9j$W5{?6@R;yB}lw}Ob6ov*A=`?OW z?cqBkNku&gheH_-2NK|%L5dO)LlaQi#nNu?Nx$EfLb0qMEacJvQ(A^N-`xcrz^WS zMjnzZo5@KA(lC<(=mGEmXr$y16EkgLVu0oA<(vQbcj5$;N_gK&F$1odJD1tX*RSB3 zsfsZvkci1d&V9&{z2mswGXDGL<4#AnpGnOE;;`R8?#F%+I}!a*f2jZ<$E;Ar#Jpyx zsv^`g?vVYtr7{mR#0X^)rT=+VsQqG%LmlzNBfx0g;SsW zC*Jqo?Z2No?1LXSux7zDOTcBHL7+mD{EF}4-m;Jsi;X(Sx5(!1uBxhI$B#=Kjil4w zg(M5WfkL@{{hF-ZT$4s)P8I>MUT;W3DYw)EUN_?TFCj=(zg zq1KP;*dU zxg0>5g_`ogk+PC5S3%%MvbWpBnTPtGs-#>-QX_y9lFNrAi@>`$x_JQFlYwN@KHlpq z@KShxuiXTQJiHE??q>k_EM5b*(;G<)AXM5Ki&gJS7fdkun-*k3pz)`Yf8VNp&rvaB zd749-ar>C&4%L&(Z(o<4on5HJqKt;2 zZ0~GKy#_;spo-5Jep)S+r3cW5kcLqd z8nqZY67Q*M=YN40*u~@-E7FpCj)D3?j2WQs#k%kuC!0~3AA!!eB{7$hq3ELd>=ph`*jGFgDM(~`k2I=T5Rc5N-aZ59XdcIh}B0m0>|3f-B!s`E!SWXMlu9}?|{f>K;9Do zaukj9xFPryL6&&rO}>J205wT|l+Wc27-(5Sy{7TqAnz$5FF=JRr5MIVMk?jHazGEj z^l>a+6Mbp}5VRpAFVEw{(kuY*Y4Ei;fdLUwq8rtyPS=T5`SD1s{RUjJ?|gTAj6;Dn zJy2pr;Z(ottM}>0y5&2Gv5$2h?BEu-7f<~RMB}lbgAOWOO zCY@Cvbvj)cb;dddL15JXIE1wd^*tI7WDnrW=P5NSxYn#0d-asrsDe6ReWeK>mk;qU zu64KHy9yL3_V`EXSi1v5)|i2mvi13_h(h4tS+pk=1KgAqo1jytp8H;8RTy z=J9x}k|+ylk;~*&0u_spP*9=il&_N=LpsG{syKiKk}be@LP(iB&QrkTRq_BtH^lF_ z7I3#zDv#e2fMXBp)Kf<(`BemPX-Fp-sWX(CS`C4I8|Q>-1z7!fBpDBqanP3`BrDZi zo<>BPo_}AZ6a8c~BzjQabmkTcIhB5cVHek!=soxzjtiCCh3ag^d*FO^so+VAmXQN> z6pJ^tpg-i;-|hSy^!wd>?=FFLkd>I+Kd`KShcb$mQbtYmMAZ&o1lSTtE}wi0>a`C}RskPN z=R(P5QtB^*q68=biNFBOi$K`vCUX!#QlUJUWlH_qrz!zZO)a!*jg_e!=w-8cw z3^iN;sgK4`aaKCfS}Xw2UIB1}SW}SJ>L$!I0Pt~rsxI;Qo#qbirwx@@1h5L=^O34z zT8%tj?9YtPwc+unV6av8uV9Nv05xC?;C)t5i~KRZWi1q z4avnt6M_d0{j^c@%ER#!T#7&&0YCxHSA#SPAdTAKb-e+OHNZju`6qW=IeJX?+Fg}) z;t%!napYO|gs0$gUWq9&`Dh;ZtqKqO()4w2#^k)OYqbtR4oGZbeq66KoiVThCWGE= za+VAv5iP~-jdj`E-4TX*O9hhj1@&FgddlH5yv7uOlcxHFYU#C_kT{S6089c&RiQfo zR6hrhP_odsl_#+VAo&_ecNlT9Vg(k#p-+68_d5ot`FUES3M_Ci3>aPyt+fgHgN0DQ zX9fT<4Fjr1f{#A3(IAvIfX~<@LqG)d03hiCl&M@+3Z=XrcVm5BKTisf%~CIiYE*PO zeaYmD02LR>K+@3JFkp2~eCG_e9(+FR`V{B6_-Q^Sv_>YL_rv0WAM}hL6qLMYRj5nM zhKn@sVJeBD2Y$-*$jZ`Lp656 zU9yF&f+3$vW5QFK@fHix3I)v{+72f&pJLzB>`kJP|B#sy)CZP@&5=K-7^fh_l zS9Clwc-)c8Z@(q!EL{#cCABfs#IQHe)f$7BcwO)t`i^kKTD>NQp<{RUK+ynsLo zG(5xKQ?MlY4E(@^Trg3Yls^e2X#m-}DGZ-6lSPRYY5dMt%PdJ{Cifjf0uprUlY-t23ikW)IdQt-Wlv04WCP44y_nrFrknE=kevRg*S2)}^;D z%i6}4oH>0~YK?hF(O4Hiq+{tRS54HTAE-ibZcXK4lbE;pMY*7c$y@^E;XrXeXXkfT zf;`d+Y!>832#>q#hQZ_dS3l z#@)~;!F85O73FblNGhuQ`T3$`0W>;mTYGzQ<;pv961=WfpVP&`6r#j4nX8En2gxK$ z!hmjeT5e4yyt5QKNMha2Av^o}hX&R?iAgcJNwIH6G{K6CnI7!Z*F>Mqwo>^ZRg%rk zby-`zp}ri3MY8FvCgU-;st+)An?0$5ALTJYi!jq0_zcN4ou!$q360R(PK;1$1+)YM zT7($|4*f=yQn4ky1fOpgh)Psie9B*-paW-ane-L?Y+@4nq9oFA6V>UMi-U>E8Bc-0 zV=%NtQs0L)OHXd?5p0Nx)4eG*r!eFRu-3JxmJdB%2+T3>ZMnZ_(pq?A_W2Teaa242>^RD*RBSHH6IA3 z#2N1PI{8ZM#WtZOvQ9~y4-?{_n-Jq;JKqnl_{`fl4k|!LZt=^icZNs ztfie+8{{;UG6s;6foa4yZd_M#pQUFV6F65a$;qWfS*nAdq6+T#4mP0+Tx@qjnQkP)l-!oUE;_$u79msS_t;$e=8f@aV0kr3Lj+$@+4B1yZVP zR7@_FQW8t2C#983`Zs>4luD?;lJ3NMs+q?g_-+-tA_1=K#DXc&bGrA9N?|5wY^^V6 ze1s+o!!wx}^gji9pHPT?%1R8A^x~{XCJb^M=z}c>raCC#Yr`?X2=I83?CotSAus1@ z68C92CXy}`B?I+31R!^}Hf4KlLl55B-IM~Y|0SNjwR6|<^ot~x?GZlt2&x{6o+S5$^g``?& zEXk?45>y|^tYF1c3Mi;jN}!D|&a5s{b6?+|C8(BL5qQ3nLSn!rMzWaFvcTp$C5FKB zx|uDil*NI|H$J%7a%F~mbS0a7de1t24T4SCRh+oWB2T#$=}k44m!P3aRXVV2H+QzB z*X~HER+DiL#tS644>g~~-=%6zA}$;(p!xYFCHg)3`oOz3R#)-e9gN8%QYaQRHmclE zOy$zl^iY=s>bdXSavzuq21z3Ors(%gOni9BGuXs&R9Xr@pBmZ88Q36f?sH06Jueky08<ZFUP4`t1=z% z2{L|{=`oPnjXI2rOjnxiJxxZ8$3y8dZ3mL7jPV%jeZ^Y9kuWw2@H3k=L-2#U@os1o zT)Fz5JoL~bwqV1o;7Mtp=O}{c{q3LQgXa8pA)UMV-Um3={RWnA_s~j~Fjnh_DI#60 z%2GZpC4h?6T+9mXf#B-kwl?L&LS2q8)umoYOArqf5NTL z9sI2uU@RH8zO2dPDRus_Tq@zW9@(McHjHhfpsg< z<13*O-NB%*l1jX^v_RTh7&yk%SoARNcV)R4$V12Hq{N^u<|>2lQ9`K!L_mo@aa_9U zmt; z1hw>wl8aK-GmGdz zd~fw@9qdBz{i*B0Jq~h3eBgWcjhyM}Zv88n6{D{7-4ICTqw~Z}RoTLT@clAYA8)$b z*_DM#MjkqM9Q-N*NvFSyH_o_UMh8)|4SY+cRgL+oh6p5I%i)=h5=z2gF>QJ98+A!o zKn5lY&+x9qfyU;c;~42&#+dDq@xCXfpvEvU&&*6>YaJ6WwyrK?EhZM^8fdq`_01I; zBOwv{B-=7YB1K58n1!<b^q^o_i*O8{mYwuUBsyhuGTb6 zXg|qI*kg^qr*(pzZeKdhU8!aRaH^_Qpdzyv=wd2SK9PXP^QqFx_Z^usp$svq%G1wS zYfnAgp*6it(w?uXF);q7cskI=TV<^}g%6IFN+~~M>W!*K->5x}7X;?qzVaVmExdSA zfNGy!Yz1m!-cJ&nbzq2fkQkLnu+afbsYh#f=#6EZgA_|Qqys59#K-b(=@WI0NV8sdzn{gjx%q+Ovhb=K-V^Ly+u!5ZN-dk&qC(6_I;z+>a?DFiM(QY3cLm2slCcy@ zPNU;L;+T?3tlwPK0DGlelndw2%5HN{wxI=bxuWt=I$=G} zYWk1JAampFoX)pO!H6 zg{&0u{Tu+LzM+IXiB{a$=yZ^GWiU#ZDZLVPri#l2PaJ=;6UuBZT`VS^HgSH^^!H;s z;G$|t@0}csE1aMaYnmr%YYmD@u1Nrw9{1RAK3bBolR`-{Q-~Uybf9EvJm`U9V^GjS zPVripwGj^0=wPwyIASS(2E4Nm4wlmMGFP6eFPF<{D)R`7lzgn!Zb@-4kbI$}mSz~T zbwFFwnsq*$5hAwK?tpo{8+XJ0d7dTr```b7Ds+F|b5`h#1;R%h8cB}tscFqnW@B4jKcl-Fr-3{(SV(TpA!&oDU z{#1(&E4($-n-B^ZtfZ*9?0&8|G0{KpG#6%$n;4&z?*hp)?m%Z= zJFl!~;@`%C6x-#+eu9~u1PuXdz-KdC2?%T9sIW38H{{)Op()RjS!*d-WU^#S4GsN9 zWGZSX0qHPR&K_H<%DN^zF~G8tWvtQ;Rx(p>ShB`S?tBFxiZ!b?3u}<)Hl<@D9fMk} z4h@h7&)UFYGuo#jU(D#(xQN33MlXkX(D!5DFf1G-=~QCP_Q#qM?fY>x7!#EeOJh+i zP{7SbFn`~F|GEZ>Ibbx;>-7cM+1ixF8Y~-Td}3S~s&TB^rQEvt)H!9anV}x-41<-5 za~MyM7>8(Jh%yuUI8m{!PmCwh*hmw-Z@MA~5V|Hj6DUToeV#RQ4(P zkCRCpRGhRUAYwz>brKo18I0|9sQxpDvMvBEK&2Z(4GfcpGa5lHlV1`zFlq)2#(Nz} z6^EL(!*kKWOch9eRR@9JT;G)I?_ZUAV;-b_DC2mf={0Nz!0tJo8a}h*>3u*d9R{pB zNwb5n@{ze4X34tDN-sx>l@EWXl+8a@+%N9q1rWB~&8&C6-Q> zRYfNA)SFm3o&}?^3S*`w4YaE7Mn_|*n0Z?>EyU`8UKV&@uilmlhT^i+8ZgDPnIuZ0xZ4JLqvcRe0F<{Mj$wyFX+4G(04kSXEQ~ zU?d2aE~ERrY35GRVi{{X2!MpaPa-}?8o_t0NIW+P=HdgT;-;-pd#HX(dL^z^fiRbr>%JQuG(yVfS3M{dpS69c(iZzp$ zsH9;wX{ZY&wBQumipdxntmskatxJp6Su$LURnmID%zE|x3AkzeH1~F;2dl6Q-ZeKj zr%8pKc3VotqAV^f!bs{Xxu?I2Kx05Zu>3Qzn&7VHa|Ra&Nvu2JB{loS`}MRtwUAhe zVvea-pjIJ^O!F9kbX<_`-W~*1Uu*WL*8CJEF=rf(aXeDu9cv55NUKkn!eS=T@*~X% zHK2|4*F;RPc{)jxm8Nb1<3*z1X>zskG^16$3RFpfZ`Gs?y;wbLjyqjMVnaO6An-hE zUh+G>@lUz9WJ+urv6voT+SJY_8&1Z^Eg&uq`mC588i|5rfbn5=gK4cA%ca*}mxZMz z^;c;p9sr*uaCKPKZ(n{#E$s?`x7%#1 z#`9Wswl}q~mtUtRo~;17kYtr|Rl&##@hJ8*NivS&so^7bQCh=h>JqvYARm^0xz|5- zRhZb8J;sQi&B zTmgYh&*Q>6mTS4fQcWRtd}}g+BBtq?XH}bTB$<7(S*@y7n_^=M6s&(gnPzBCibOpF zKF^<>09%eFrf4S8kdpJO8SZ5|GRM=`?fpzZCI+CR;aI_=mMgpMumcXpVrAv16krvy z7JxCujg6bC5w>@?HP3D3$PpQEYy+dJ-Pk)Y{WMgezyBZ~_L10soP3$e85<DY z$V264=J@1HED56o<9U{sm$kd0E9ls3HckB@_$qsXEz}yCjkq{G zsoQ~PzyE9YX@*6U0S@sO-S5-&72w6h#{0}FXI9`02VLoQ_SBnBX~m9ssZ3y{LSnN) z<(A_)@44m^F_F!;lPFeoMUi!knu_2!Fs1OypJFFLr;b~498W_vCP;0bp*HxSs`kMB zeAWZS_hU?CG-uLHGb*Y)#^ZPL_6MxDp;z^2v0lmy} zuw-)a)*X>(?2vh0o=iRKMp9aLLhN{-b*EVS(VK7=zU$A7tMic=bsVUV4d5Ar3h@0P zQclDKL!UK^RuWQ`(sxDRQr*R{0LkB2n4$Iyi(6UIgX6LP!^+BWX?Oc_?fO+YcJeGZ zS6O?b4o5>xadxWL6Q`Qp%pFGFKlt9=@Gt*83o!9N(xu)x?(j8I@`Ihi@dbI&N7Ap_>}SHnn-0 z!_RIsp-m;$HcFB4;A>4GzRNh_PcyQpqhKT8^}qwf9wGMW@Z6 zV_ulLNN`WI{LGFTBW)$lg~M`u0*xe}eZ+YE@4fdPKFcmPHQ89Zsr3OP0FG9;TB$QU z&?HCBEE3l>@T0-OopkKoJ$<|4IpitNR`){mlG9v$|B4dG76>LAeuQf6#9BnkFb3~2 zqalZkmNAioxYd(Ro6roMj&x+QOq~rt{4klMqWD&|@L05-s46EdlI%5^rDZcrZ4#ds zyQgQKjvJXyC6>?|m8SHX3n4Z@3|x|+Ot6JGbhkQ!g2nc<2WA*eq zZe{2Le+GJL?(M^lHf$@vZqEdq_F%=6*|uF%n)Ur99#T! z`yIXcaB@=Gj0y_hUYpoLQCE?}vjn!+sDgWvKhMFL zIku)nPeIE6LJa}M+8c~HX9EDp^j|H2uvcUR(2+awyv^pG)(>dOKUZEIT zJL*DEm8Id1P*)ZSDVvQo_gdNjW6WZU$gFa$$+N^)J;pTSX;sBWovN=ZZ6=R=#CITy zO&EtophhCalhBSg;enBj5*U)7xR8ynE?DczuqK^z6?jvJ>tqicn>Lf&;$(@ngN@2M zKd^3+sY}5C-nkvjo31N3P zZ3Gt8o5>!CVi(q#I!48kY!@f=Z4gMgmgQk$jR4&uwJ1Yd*<)3wTD6wgn?+z$uomklhQt#bV^yJvj5Tj9lE(a^48}v{t64~> zg0}r0>vi+V9V}YD$HmQ#fYfxGn;UZS%vt}j=4+GH(+k(Ps*Ja(DH`0V>gc#2vz^T6c)4ua6r(ahDD4O{!bvc>qsdeRLyO(*(@c z_O>QL?zLJfskyTmRj0OHW$wHm={3+|%xYWjv~oM{UbeNhEk{qBQf|wg%S`xm8aKQZ zII{ry;Nu_{!|dOa4AT4cyc_i(R&JV(E}VQ8qE>4)?Fq#PRbs|ADfLxp09VHg-*qAHR_4_dzOTj^z86M89@VB691oX>j(OtITlOM|@rr0;_9 zJHEQagbmC773aU9Jvg&eG!@tguOqvfu{B;m;<(*fp+zBZ%*!^H?| zFRj_OL$##G09d77S3jHfWG&>iNga6?-4-PHeT+9v1@o{BuQcu09ExQGY!~0N*lA6S1uz7W|e*;x=9EK=6rES zS60({nVh6@1^k_5zAS_ur7(VH!(RJj5l9lyqnH-_bN}cpMwjPN_7GA_Z&~ z9JJn;lcPtEYli6#3sKm^0pQUcIq*AkwD{SK4Op8T24DFWfmSG#v^^z1Zzj$8`+Ti@ zvNaJnEuYU}VAI-~ zCl}?TYJG{X1$5rfx5O><^?ND$zdtm;V_H4<6QqG`a1p{82>k_6Tr z5y)g)w=hxZsai7?7|!RJ?^5kjDvSqx)4hh15}7{k>OZqmS1gaxMrn*2$HuCo%2pq| zwladXM&nfX#DU7vl{jQ?LgQVRsk4{X^Efh&<7gCWe=N4}rnN{SUc^23hkcb$w6Lk- zsPec`RI}Mszg4kRR?bDqsj1;upo4x-T_7Cm9@MHcSe&Gv$;Gvz;=>D@LmRK%>tiCZ z#Cmlno@tXtLZ=_wQ19+GwGB2cpTILsZA-d~R$6^F?DNxyev7CwGM-j8_i+$5C=1w} zma7;mZiLBZTkR5nkjti3wPeB9G=E);T8dm8Q42n8dASZ>WO~bcCi{R6O$K{exIo~t z*#-@d{%Bxw_i+t0^Yb9XW9^fgsHGO9VsU|SQ}1Z{%&X&(E(2CCC#FIsNMqr!sybl~ zRj7Ty=#$f+G##tH88b>LTEV&Gzl2@{$YNeu968n($ zn{64ChxmR?eLXB3$i&7mNh!m@)%~3rH)OU$7>bKA(!)=c7|`zn1A)B{cK7zA*B?j+ z78LzP>0C~4h(NBDtJ0{~bUPLD6+X2v#4aFuzf0`I$F9!+27wcex+Wy$naw$=l6`Cb zvt@TGG3<&4it;rYF}y}@SWWi>=1HnwR)?YEUxi8Xv~*Sq0E1IzO5Lx5$8w{Nm0 zIZ5?u11r9$9Z@thG>Nsia%p}}B~~_AFHo0C_I&Jpq9La90rz(_9E-2P_VBusb z&cSWM9=9JcUGF%cAqG61?rGJqb79bA*Bo-KVh|$*7zOC^xFa3>!FZs%wX(vPAnT9% z>Nm=jD%$X$)8FllWEd>}EIct=&lK3An8q(vq$)!e$l zc~;eYCT;i>d%bIJeKfXxQ%zUr$QILbkHbv9qEejuF}9lC!~^cxoGN~w`&8HJb?HLN z4z-WGm_R?RTPzxak$l!~H&m4cz+9PX!54pR3BzD&%0=ZU>;PDVN=t!JXuvvPCPAoW4BF?#P8RdR=*plkhf;gyxcAN*%jkE(ZH?pkH&DpBul&QMW)nv$gI+fMZcv_82SIOhp zg?w2z-((ZD9Il&2%sf<634ra5yZDL8&YQ6%9C|}YP4-_+k99)D%z_|d`#}0|)S=?_(1JD33X+jQ*STjytzXi{mL@4f7Vom4Y zwHo-KXa26NLU$lj@f%N*=n`A>>5$9cG&RJATx>+jx6F{Dn*00l<{O2SG%_W89?~IQ zlD!UiSDaF7u|!`@Hr8+jP3Z02O-Zs4;q{{ILBBS4n$l$l*_2CfUDf_n8WhK( zE)>(?R24Z^W?P}E%+;!r$)(gKLatZ<*Q?Z^-b;DqPT^pv;g^k@H)Ugc2f%E~8*jZQ zKYrzH+3mp~C|4v^YRDJA{7Z5KymIy3OVYo2S$_4)pOH^Icv{;QwE+fQtlXv!222Lv z9S(ZB04j|I=>hx$NcJN~jz|-WkiNSbu5kwvn_hM;ufu{YRtmZgBPA8p=ElYbp6hb9 zzJReR+Z-=-#)-4DTvWjM^}GWx;53v8IJn;jiG1sOFUr6EcmG*__|_G*YF~Qw6?u+T%-gGyk9u0i3MmOluXjku;O4rRhvN7~L|@Q((!ABRH85_`?+E9XXbJpOVU0 z0r8|mv3uWu%AUf;&ImH@H<&9G)l47sJ6KT#sJ2+H+*s3%0*0E|*isc2X}wdTRajb~ z>@=G?@vpu1n*9BbUzPv&yD!UYSFg*Hr;o^&zVt~sxwx#E5DbYl8Wrt-&~5K(#rD>$#-6mZvcSDj~$T)q4T`b{Si;;TmLMXa0xak<-e<}U1N(eW+h<1MG$SLiy}>3P z2BT~IeUd0irt@u7pxq7Q5T&`Vcf&!zn&na=v%7^&C6;eudcH~6C;v!5bhozGW$oGx zdGG!A<)s&2lsDga1E%wy)NzyLEc=&Ju0ex#w&S^djG0Y>w? zZSb)6j%?u=o8V$Bs^A{cMX1UOq~I9pH9NN_8E!uZQ5JT_m^dGn*A%z&%-AU6V9;QRGLm4xaVa8*d7`2(GSg$l5lJMc%+| z=&-PkE-%W-V~cY7*pfVQ@q!#bKEi$HEhjYlJTpGn9ycZ2Ys>lLEAs3oo{&HJ>+j1a zo_Jc;x3}bbKU%{=Gwm#M<(h6q{LZyidFTCA$>O!8g+-aG*W{rG&&vY<*!eT3v6wKn z;FdY=v&b=LnlkP?4;4+o4cKlI=cihvx}=+f{z9gOXL5P92tymrnIsp=^rs^>vqHmt z*7d;9hH}1VHPWG|5$`Yl@~`g7L#oxgzAyW&M0ZlI1}=t;o9puWYp=`e5czLix+K@H z-%!u+^2$+p^pQv9!ubm_4}!UO^9Cf=Hq7ckP8?m5W5<@kW9l*w@n25mG%<}9PY1g3 z`s(}OEn5)xk*drAuB8ce^ZgfJlNT@D(DO2+SOdRW0 zy>?A1GM4}O*S{ja`IXPe4nVWJ*O41d5McK8#DUgsuE~uXtE#sAASX95Dc865&V{+OIP zc}nuQFS>!**xBc%=tW2{)LAgm6InQHv0j2p=}6f zvuzWX@ezw_^W^5-&A;K*rsLu5ZO7#9J?{s(9SA7hX4YdTnQQXRzx^Be;rG8U*C3(T zXOy3Qh5>ErUy`BSnuUsK~Dr`w$XprfA5 zSMpNM`*P#vDh7Qd$11)&eDSRE$g9^^LGXtF79F`64a^4_?s(<_ECbmBsQ>1h&&g}A zzb%hE`ha}ylb@2)3(K0HA3{ZTaj`zGpCBlK|LyE-ON$O=wvGynHM`T?GZJW~W8cj2D9c98CuSp2D8TrmOAzx=EJPyWN#zpm-A3}>*U>2uFM zBftGyzYSh;MqLUFeR8ju&E0LNm{ly%u2gcq?7`B5bqzJw!{EIxS3ppATOHZh6Y1bP z_2s&pJ$DWqa>&B-1 z+kf->vOHIl6U%dQ`qUYT7bAJ``5()r_pZs+tMALzEAPtZ0r$QM5OtUPkzf~gLVP5R4_`z8X+eRfywjWimes?VnT7+{z#(qhZpeAA`Z zR5)47FrMVDO;fw4k}J6_X}4#&`ylkJn_)`mZIgQZ&%T#@odIRm5S~48Tz>T*{38J3 zJj6a$3j@Sf$HxPVL?0%4Zy*DR`aOvD)vN2^VtB#=is%%~vfn26hmPeuR_Ooq&;C1@ z|8p4Ng1r29e=Vz*UXlg;oy`~I#ih%#*}frt5cMp;{`hiHKK0NAsezBYd;O;T@Xaf- z<$<4IKuOH~bf6w~i8E3y&r3QPOa16^@U*zIWGmMxnaham1<3%y+{?F z)4=rHLPL(PEX$`aoDvV$w-}7&%GIiDZmrAJ8|(5H-~6^b^Y}w@^2n03cG}Wd=0@V6 z3jn?!wdD(+c~rjqg{LtN1FY<#JoV^BdF;`L<@4`cm2dp@cjWJW^b_6p5LSq2qiFCN zZj+b6^~I2cZ{i$Rw*O2%vvwWlc?=S%0%@4hx!76XG#RjwNonSuh|Jh!P?{DedDck1 z{w6gkuxUlwLfn%Hao3DAO;~ioB)$b;w}0G6NJpdafvt|==G`>8MKo84@{?R(538}o z6j_+Vox#AB_NmnuG6<%b04aP1;vQ0KquGMW!{B2AD+OP>0^i*1%3Dy2|M`#pKpuJc zN%`#Oz9gUe;^*X>Ti4|JyYI@8l@s##`SbGf{WyAaNU%Ub_GXi$veO@}9i$#_O;^-;^3aU!AY(W|%%V zVoFlF)$hfVN2Cu4N!JATeeUD=ELA0G->P8HHT*KKgK*@?ASEmt%+wg?XJgCG0|1AIw-?bm)yI{|Y$ zTju>Ryu+k3ExSyaz;hQ?WPfa8Tn&J#T7)z#f#eS%wID&>f9n-UsFLjNT$C(0%*Cgl zkTO=~-py^@V6wntfk*xFv!9ipd*YL7QI5caP99&9fBFx9Mc#ksiv02Sek?b)Atn2s zl*&b2wd99+SeET!Pm@^Yp;}u|Im2#8N|2gC?8*71Bd``>Hk1G=fF)Bd=>&0cFweaV z9#n$iusC0pGshR@)RDTp{pP#!{`$6@1hFnK@4r8i5uQthjFccTH#fFS1Yj^$C+2X# z!jtQghuZwolMhP;i2a)%ydoRjz9bA&1-dteQUT_Iaop%}coouk7hG_CyCt7|@<}Y> zsw86?0oxj8^1;7Y&hKX`_zv!wdt-A&k7EUDxcESPj>S?hjaNNCc(Yr?S%;O+>l zdq$N^b+7SlnH=+D$Bydj+q*lOthWr4{FPVM<(uF9Cb+@2{N``}rYt};(AsHrTN2t8 zGsfy+8Va|$%|P@o%+=)xNPggrgssq?I9Jyg+r{%I<-t>@q=88q;&>%kp(jqBkQOYy zOMBbO-%eI4^2rClJ6L$o9ZI%b&{W=HHZA|n&wWO|{p#y-4a9z{I|iB0V1;9dalGzc zOA2-aOU5NxP0Zaei3W=T09rt$zW@Lr07*naRN@g<{xFmbBreHx0O^{AG%2L96c{vz zY6|?EHjOJ6)6#E20;VH%f8+tcH^BWUxpr{AW>NxxI&!=Ys&I2tqV}GKtGLhx{V_ns zy$r{if5lmyD_7;&#~zlK-g-xN0XiS5j%msjPz|Oa!Q4@Gp2PingRZ>z-S5Z{-1XB> zJRx(?9>c)oeKi2c7F{3QkB7U?vS^m7&@+Ma&@<`Xer)3<-UrcQBiol=dRexcJMw$~mrUb~b;uzm!l`=yyXU?9KppcVy zU%xD!y`F5~JTzQRt}H3=x1n}T>&OIBE0!K46Jwi0ddf#8!_mDOuE^upM?o%;zk8gudvc+$WBgFlep_>Et~;71%n$w3lvlO}FxxdMQ!99xv- zMgjaMs|_q7dY!-}n39`@y6yE^u-^6z=fH{_LgWu*EIU~JWOxssJpyUM(sN3`qNbLp zPX?1$E0*P}pZTnO`^9%a(BGEbPdq4%BXhb5Csl$L%VITVlCneqSOCf47%QA% znn9c4ni$u@B*Q&S6!)nvNVb>*9q={ht5mN^2Ar)w9BGbJ1+T3)2lD(&SHT~Puxw9) zF4QC&rcHo2^i0MBCU*=l53ndk+#`Dcsnj28Mr{@H zBd}Dz`lV;(^N&9zr*W@w$c@hXkc?YWgoHZ_PPjeZg@v2LqAqHsx)&I~lxYYzO-OM? zF`gyyu8hri>!I(1e;R2F^3pDvd%)o5!Hs$o`)A9?y@C)+$zyJHH^3I(- zD=)nKg7#D>f$%>6!yf^UV_5-sVwm3{eovyZa;{^T+O!*SX%=p3*8VhmL)7R(-2#tkp(VZW*GR~8dxH6 zmC)>872$gfj3+S^R-*#0SCT7No|C!860FG;HDb8;4U2lyY3{n}>CR`&6wS8wv~G}6 znGJ5WRGsRdJsJRpr6Y@wq$4Q|@&GW#1?u`3D8RE%KP5l=vtN+$_Lf|J`Bg~7o3gff z9kgKwi#IRjg#}5ioR#n-uCunRAt+{L1UBPDT;pF`)UiKaIL%s4ZtrQZAO29PaH@Na zKZ7Kg70E33`W!5_um3+^m$i*GdG?uSWbS+4(i|tcOBnB?M9Yp=B!j``p!A@|jvbws zbLUP-wNeBTPt-}+<@R#m9O(=#nMey4)B+_?pkkR*#r>qWHg;rveOE3XU6Mw%rd2Ds zN=;HYS7;ll@fLen{dMq`-}$94$v8!TSHkCuB;Rd7~%dmiW52|d`Z>fiTarwOb)ertgS~qUU7ry#M zISmWaXPl6njXQtg{wVPa#gyiQHM(V~fE(_?fFQwVs`}RX^?j*+ z^{cYDvMfJ&?I)7qs)wkrSC7bittu5*cBOm@pRdcq51x@S%y1^gg)qNkkl94DKYgfz zg4ySW>dG@cN((vTQ=w04YvYErdLk>}VAWi~#==Cs&ao>iW7UrjjsueW#A6rbbI&{} zfBDKKdE@*US!~qhJXCN2A8Bh|6SD>K5(QbPE|U^tdb69#nNT~tMB3cMbh8nY#;lp3 z%pS$W71^Q*Y8)!-+t0lsfBcQVki}9;KKtYaNUe(Q(hWQ@I4*wer~*niDE1sRa_$C~20Vimhm+*s%II5xbstut z0!q9|r+7+8CeJnI8uIxseqR3Q-~FMwA^!2#eibVN<}S?J1-w_pDm^k+g>{sZ<@tsz zEjFMgGulZnYJ(hO<#ThU*lxF*v%hPb4VF=9UU;BoOdGHcUw`>UFfma-lP9L7qUMeC*1p-#`YW2{S`;+N7VVY`52g>ED#M-@75t{pcn6^FRL!Ez|$+|H(g)Pd#-} z8~+z8B}l%kx>o3KN&x`cDJK}IAFl+7Qp|P%x-?WEPMCo)lm!5@43a}CcAAnZ=K!kX z7|XIWn;Y`>JD25!SD%yed_j&ZtjI!TUW&PrWW9_g1SGwxgdpxd7Ok`g8q)G|fpXQv zcHt4RJy)IIDwzrr_w$Y#&W3>QvzWpr-dn_L79*tAQ=fQR{_4N}xxD@M+w!&F`3+gd zq%+x%`9v>#_q#IMxC(Ke2cUAABTiGdT&T(zD`?p3X=XrRop&^geRmFWmN9eX@jgEP z7vKJ_T)NhgQvm4-EJtq3#v%v$*7$wxG_37_?@$%|{*CW9VsPQ?{B-<$7yO zs@vSueV!>be+BCAbI*Q4o_P3-s{TT;rYS6mHd>2pzv95;#*YnOqYuu@=ahdkFdai; zjbMljnSltf^uXSW;F0xGRd#Xi9axwBxbN-ViciFJ=g;RhbpU{E#13kt`PoH}tv9(&>m zdH#hLX_cmRZSq>fWIW!>#>o1)4bcd{yJo_Gc%wg|p4&UMWOmMPPjhV2vC zI+50qkQ0E|vf$$HfAqZkr$2vAOYNV2{9#!D_h2HM%k$QHXAMV$Smm+l>X*tAs<0Y8 z`MJ-3MOcgRZ~pK<%D;O4d8sbW%VMnoGGCHhKodTrk$$awiA`%EmZf(!FUkaW2fe;2 zXaM)g0}KTK;25miXC8i7P8?s6lgF23WqDq`_&bp1X*yS7m~i_g)=-kG`B_sBplyhl z9LT(WRvJm9Wo@+FVt|N#zhR%vJ<^hggj~Wx>H)l4>)UED)GG~Ho|{+Wpi!U4u>$D_ zL-o)buRX>$hj9kbnph|S!G`%7=`Lrs)1j3%rqBIU8@Z&u!-Umr{MdmpbvItr!ym3v z!?YkwEJ|s;eCaD+mVfcj|5y1x{^h@v-}!Iwo;0vbWclpa1k@a^cKLsg=uS z`!(jGi)~3Hwnd5VMQEF~4NVgf*o^XzAWfEGF#N%v{1>@#b3=j~Fy|{(Nip4c2=xQ7 zaM!IgR8awHyGispc-_34@ROM!MN%DCV?+Xz}<7Id<|G zv;fAAenD8vK`@q_KQe*iY}s&BdeYV16WewMf#He%6gY>4a3(qN2S}`0&pdyKd5uH$)i0|r1@zV_9hkqgHcRfIDay#%wHsVW(& z5#4xGOixidV(E1rn`W{g7?`Y3D`h_W$OAI(|DwF|;}^8lYUSurIeO-_EUX-rJS?YT zy&)O4z2@fT{)b?~KOY%I@8U44ElXU@vv=~JvylyGMU z3#hODFGe*q5i_099clwe?+kd?D2^t|&+Vh_Xq6`Q&8A#Uy5r0=4iP7kJe&FAO;VOW zw7X$?Xt61(F2pm{zg>v_-~7$rl1=cAKmD^mm!G`+g5*FjpfF{Tqh5 z14BwHY*({PH15&0@DT9|= zTg2`U%{X7ovU)b*k8JlB*7rrG@kgi|Y=*LYY#FazlxtV6X&%{?%a>*A<|d?NP8ODq znAS=3wQ|2`wxXn}CHD(W8*kVBU3agyyFjpFhk&H?%NNTU5RW_q67K&zWXsEm3Smga zv|ps*z_cIw>%zcn`%8Dmkj1xg2yV*VWk=HQj5HUH1ZiRUsMPCAki_(f^V~vxV3NUYGMvcecaV@uN#l%t+BiYAzi&<1STa#(4WZ z+kBrxpUZGDI4qmSl^Q?Q@gD1j2u$sa$FS&Zvs}+MkV|RrRl`YGgyGpXjgigVOq^qu z_hb8-QizmspQ0_G#@e1>*c-^=oF^sro!}nOfqh;>s==`W z*Hk}G(~oD<_dHAJXI`29bbQMCQk@!|Lg6-PGqX<6TgcfVAe>a?xNhf+=nwkZgB*)Y zj?_zX?({KCW+JsbEE;fwMx`cY@RuA{=@6^5KhSsIiVPe$`~vN@^hIwiw!}n9BHCTo}9kS~4t zE0Ui-q2C{IGl4Lg?ASpS#Y!ah%?gsV=~AfqaVb+!JL!3UkW0ZxrCS7vg@Nx)RibAX zfy2pdIo2$&rhgy)&|z|Ij9{*F7tjWz7I#n>cJ^e@!sM0MV52NvuOsbtOFE-SI-A>) z0=T#f7`X>s1?+xIKT)naCnruElQSh#bQH_{-4I8jbceFi zCZ(GUn1yGyC@~wNNByouUDJnM3y|#QOq_|xW*C^&FVi@jeQH}wD@n|z8pcXvsEFz< z3$>qTHyHr-`qfowuDv5U-0(wBJS(+@MX2kP=5!5h!#Y=l%5Ib)Rt971UN*1%Gtka) zF0ecW%|Q}tRzn@sAIqEhJ9XGzn0A{yi`MCiygjf?Qob>7K`y~<@};6y|9U;{T91hx z2eN*Bo2Dbw+E_{P0)0oAv|5?nlyjyBX$cbu^SB5?&W5cV)UAyT>9$RACL4)xE43jV zeZI*Jt5ypxxURjgsEX**8fuf+Lp!pff+%1&e@Ke&0n)#Npg^;9h@iXMc^{q zP~mMU!@5c{Xv@8Sz+1SvfFHY#$Yu{9I&Guz(DX?l+0U99M}42J7`tg@Xl0yw^JBwv z*rI&gXRC4&pg=#z*O}!(i9Iwxy5$J(_GIeuhKsY8&e z;xpia1uSSb6am<|6$-N$+E9nwPdknAX2mrf(z?k3(_!qc9n;j~DX{jZ(%f3XV-~C9 z`&MEd4wNZs@8ywLu^4L#Yz{YCZ7j(98|zS6iSA2S!0QcwWBKSYRb^Ffg_dO*S5DKH zC2b}tNPB8w_So-7>c%G|<=ZlN2qT@o`g zy{s8@u0(bxWP@2sqbQmX`N_6-mM?Mi$#G%}G(HF(?S~bc9-^`KTyPU*=R(6rX2ml# zr#@c+op?|ldh`KVfB!x3tv0~dgVtx-V@7K)6DA6bjTO#{oDsg4#(4LFoJJXRGX~o! z+GWN#wS3F0?&H)4_#!No{^v-jz3XL-8SQ zZlRo$<+(B>RbBJ2SsI=JZy=dYQta0mYx#Wu;u}FNu^~u@Erz-s@kpY%!4aL7QDh~L z$!OsDGfcqKN%6E*HaFXhxGiwZ@AT|G&8EjzY-UvYSk)Y0a&5*lQ?Q`umf%iW8K~fF zsVdDIt8%k@MS^}P^&^WCKpip7MKnO3(tcYWIi8qskG8hts4;!pwq!C5IwI3QEH+so z+H#ykU3agD)Dg@3B0#;wr45^8JStCGmh3LWO6Pn&tsJ&kS&%vmn453BApL#^W6ux} z-piDQ#hXk+P9WLID0kUjsZap0X`PxZ-q>X`cn(3c+Gz@x!xYx!vq>`f&;jm-WQros z5wjUf;6M<%Bp&PbOFXU4Vz=I$W+z%6Av`I zu(1CVyUs9Ufg2Dt0jyyQr((t@rPh$`A_wYEB5(q~gh3kX;4|aJV`>hK0PwkhW$&Y& zRuFYz^{wx=w0L!GZAYS3Qx>ZwIljCgiwg}YLnRLZtbDmB)ofAbVTF<}t-W*Ar1awQ z@&J1lDx3q5j#A>vJ=x=m7U@`r#rSu$HKpyxrCiH5z|wY=aWW}|XGW;WD)nq}scC7c zt>9_G(^Zk=v^4>XQ;JZDbg@u+9eLn_HN%muGnscLeH;hw{27(`-~D;Y@@0DL<4p=OzGls86jWH++Bx1^@FJA0T;?9wH!=t7{pF|fj`zJV!GK71|&^i5+q2< z@(hDYyJ-;ygN^ao!-~ZKT?|&U-I1$n>#~D^WWR?p_}kKaT|Bm#gm^#U8A~vg?z4}e zq}eEgttX)#TFo6ur%n0Zb3c&3|Mp9=)e&jrMIOFzR2J(CQp;zwkaTBvPqS5*Po6TJ z@K|ubu+#j4oPLTmhGW@=6&tWsHq?E24pbb{lSK+lX;DQLMH-HA`!8$bGwmkmdQ#bP zs(8i{oOv>-(HnavMMtcU%rmu}Y`j}!BU^IE9J6X8H5|sw48ejRZ;dx@O3adbsOgZ7 zR(x5j$2sP>C;G_Pvo+E>3Qwh(YO!19ca{L%!Du@m`{7_!)y*qbG^p%ePm8f zLMr9*74%#PXozUb@RaOPN@8)RVWl&@CzqIh_6!v&xKtJ-`$WerF4NnB>i~&$ zE3VvQ>Tb9dkq19)Nw$|vsyv+8$=A8DPz~VPY~Ix5JbJ^)CxS2q^FG!_8lkY}BL%{Cxj)-)F0h3EOE@oIJQk%^6X9(x4Ine1ghC4Y#)?Z;><|zU`}=T;f?y72t31? zbe9&-pp;$adc8a*Jg>!+so3~voC&VZytJo{UzwCwWX1x>ew%ymFjRr#m5NzdmXLVl zX>>pWfZ*ry=9OI;jh>eW&+W(p0Kx`u>{D7Q=9H5RhM}B4dlAoba^~CxsAn8oS8A-m zV^#(GW?NHja_eVUi5zH&J0(sUlb&L`a9EuUT+Jz3(q`%V72tH(hR8O`p!)vRZGyfrD%GLc0kG=%j5;(&n5;3>N!IRNlW0DBWcJ|!N6@Wi zg)I;V(q@U5&sbtsyRoFQd2Jokft2ckUko6(F@plfDp#s< z{`^@v4PcR&lSgUDg>f}HOw~JXQdzW@uxE`3b)y@rjP8U!`5%5?IC@+j{nXR);&ac* zjkOy(x!C~Ml*&#PncJq$ZWA!sDMNRjbsK(@%a2VbWsP4#N+;H0GUFajcA_W0VsEUf zSJikSvq{tCthR!TwssYiW95~BRwixUSd|@c(x42(hJH6@eGEh6tkqujmipL@r`&?r z|Jd(pa`QQfG2W7@ei(V5`cK96K$_hg@$iTF{A9y=vttr|+TFXv6f}@@6C~V}F{|7* zF^PG0_j+1K6w~ZAz)5BCXd9LxsYf?Sk=@u5 z6X*|RapiDFZ{O|{|xxS%5FU1ud_)s%f6T2t6aYDNO>ROy3$+W?XU08gN&RJcc zlt2NQA1kg$lQGhiYn5KHc69DS3uIXm#tI)$gfXOV0tvqU{+ispzOLP8f?P>m51|;{ z=T8bJj9KQ{9nS15I=tTksQokVP3HN7MXf5aW>ZdY#pgl5IviB)a|ZZ{Nei|sli>}~ zt|$?BODMaLFlpTxEG6kdPh-Vt4S)D*S!L3uQ!qCw8fhR`v|5ENj|iyP?-QjOIx-Ex zJf;h1&^w)sw5=_3x#sFsId%SwJbeBEId1BPh{|+ac7Mz_#E$d?Hi%OM@ z-D1UV5MWJ{w5BX48iHXx;>j}?Wefx2%~xNRR;MLJs#q!M<_EkN0w56EJe#g1I!-OpA2JJnLj2S zjQL&|Yr4(Kl#!B&JVJm44Dry1d0}H z=z*3k*nmh4NpLvq>F(*ZmaN?KE{<~|zMD6*YnvhLBx|~=GAoyRVSv6uRc!??z2Ou%EnpktN zmOgg}h8oSNPk?dvR<9{t&8t9-27z#YupAnYLIJ7?R^_UX_| z#kTO$Ty{=F$4O6Q$-e=G`R;p<#IYbc-ao$J{~*7l9{a ziY^ujy~SuUm0mlN`@8#Cltm9!<|%t-QMzPqHeJj(?20ROfe9J((lC;aX%(&7GGa?j z4xCb}q0!)i?jwkbKs{KiH?(JPBzD19$Djlzc$o8u;b-uvQH>w(-lah~@PvRT8^xs) zh)WM4tQHNM0=CxMKa_X1FgU>uY>LNbmdknN7X%h@0x1Itc1L2KlX)V&xoKe8$&D)t z4UQi!0x(?g?uQzJJD?^*vZ%2j{h0=@#}|eMEDQ3N&(GdS|J&cO0o=0Qwh>wT(9pXJ zlR4|`%Fd%z%28;+_@D6n7ME>UwTC&56%49wePzv{qD!CPYQvJMs~?^R;vn!ur~*su zxzVd@*w^q=t_TLMR;UnTx_$1z!2~eZk*rAa1IB~KGITe=8couiU>}5FArjkbv}8{c z{tgW5=t#Qiu^^a_?O-hB^>qimt~61ZWwt*s_tmwz1k~9>1(IoQNHJoUd7N-{77k0; z@?T!LoCZpyd$3QDvx2?LjQp|K0;j#ESY?;H*DMVSwM7IdVzS(&vMm%_qHp(MF+sjE zv6BdmPz`&N(^CrGCVPFdNoV7UHQu#yd^(y+|D&%-s$P3UMW2Xc9HncF)=;%zXpn#o$z;=U2MS(MfD;<*M0Nnn{OMTunbEFA{h*K*;t+X)-F_}}pI1w(AhE%HzRapsaYUVCs02qGIR_;MnhQNms(17N_F54KSO-ueM$u3}i)+qO zKLsfe_z#kD3>Tn%g2Xko4X@n$!^%sDr2)bK?ucqNi%dk3u!=8`G&lh{SxVY+YiB5( z;khKh#aLq|Mo&g4%^glDR`kl@`S#Bt#V*57wVeAl1FY#< zgF!Y7i9bc_3TFND&9~sOLRx}r70ucNIEoqz$^K|GAe5;W!O0xYMj8fE=3*FMpD!T8 zJ?1RkYQ7>P0l)8cS{&Vir;-)+rIZv60cn1MO<{|IJ9D6C3N9FOuoXj-{th#T`n z)1lxM4JDT*=(IzK^Ji?Mym|G4B)*^sXv3ejJ;9cYBO#CIwNB1PGM+5-K44;CEzHep z6}H)Z)R@VzH{?E@3+&{P)`))f4#{ z)RDjYO)2+|D8(6hrOD?i#0PnAX;@JW%erNLT^Uvsnw(L{vD`a3+Dj7)-9)egc7&AZd@8JG@R`%b?R`GQYn&q#gvI3wQ|5`KbZKn$M{j%S?@QtoaE-F;H(X zE@IaDWbovF zMc#_XS6G%;9fg;+z*~U7$fCol?ZvatnV|O6(;zwRU>mz&Ln`(wgF~f81MPAR85h$t zE^=y?ZJCeI@>y`*+?|61c}Kr`=v&96frdMz&9SOq?{yconwK3p4WAj5G0z1fCd^ zN>sjv6lU&wsYR@HgDD&-B$SxYZ0CE>pI3$PwQ^2?7lb#m(vCm4XwS}0N1Qw&0kxfI}Vrzamhd{@5x@rUy8?p?WibV!krLp||0;cZZF^>Uv~ zX7mzGtr!RWooZDbyai<%eUJeI8Ph5Hm=kjA-@JSwuU^0Anw4j-PUUC6`n7t1zmvNU z?`iJxk-Yo$uSu?zX{WFSNl3HMuY;rqC$3ZL2{uZDApxSI0LY6ap%D)FuWX-9<|}yt z#c;nOH$_A?!5v#03CqXNMrShDBz#9N%BQbh%0vzBml*hnMi>K^LOtvt>B@tHN3zoz zP|uWus)a2^=X3hRQYBY(?TK{DDlH9IqX%wuQB-yRF3qv(9?R~xQSbF4rV#&cpTOI5 zu@1-O%9DqQXDn=dO1{;CobAfycBer-0qp1#P**fu_L?nubPt}W zLxI=d``|-)R}b)`yN9ydZE<%YHngH6+0y)_-ELATud7vB6x;MN5GQMA7=e!KawD58 z>8hdb6uVZ6V^OB&VrQdsmhPZMKY#v=sQSs-8~NG)`aAviwS4gLM^rE_r+w+{?&-&D z6W|4d6#S>732ivfBsDOg-E{FOeSO1#X5Dwtn^C5pdMqiku2@9p;G zbTpAUF5tF#_?BKg2Ybiz;LdyMF}vKkhsjSF8RJPtnKG1 zs|Wg!VhCwo>fbm57Q!a;Ec*Ze648>t7+A@iXHGGTH|M8vem;@A$M?7yEN&DO2|GM~ zM^Efnk^+;vk?d)H2CS&j>~p^jHd=wqw^*DB#sP{#tGHE1i$og};|6#cbEorQFtA=2 zFOY(GPY&!1nq7{WG2ih64k#q&l(G`*NzOf#q=~rkkqU+&{b{#}6NJ6GpOHau}5oB(b|6NA_=n9BrOQk;~e9 zw}Kmj$EtvbV69&TZU`PLvKA)sA^mw@E18uZ^vQh1Dc-pzm#5=7B?||7VjxO8pD(4; z?CHU3X%fDtS7L|S@u=qTcy#km7Z*~3He5EjusdZ1iu|lAQ#GuKdYkcVp{4kcq`*dL zB|QuW04c<3$x`r{Kel>&>W80~eZhj>Wr}$}jB#mXYV|wvPrmp2^6vZZX^!|zpioa4 z>rzx1k4=6L$iCKh7AKk?!QK zE3Q@SEKvJook-e zB8|AE$uW3Z@FegScr$yeA>YsPe8iKTp%1242H-!1soE~F_1p@FQc|;F`{nB&IAF)*x?XAVqLi1!+ zlCiKrA5cI0c%IAY`Am(f%>|;JR$mSVx%4&EPa9gLqFtk}Gt{L0&O7(jOJh84NrNgp zwSn=MNpKU1tlKs>oyRCBXUWDoLAQla>Rpb!JMdN44hWUqI{E&xw?NJp?~+99jbSYO z_}+ba{N$H%(A2lAC-TJ^!lC9$*x=BGxSHi=YzO(=-AYds@*--dsb{#riNJp7HgK?& zdME5j9&vyb!e`hr3PVEU75w{cFbt(~#Ad6(gZ`zsUM&Z`;zTKoSqmktMIFn(ks_ z*83mG&;Q$B$`}K!da$q*^8EC^#P{wRvw>9;bVN}#HM#2$6%KL?3;|$s#2oTQAP$i9 zmdbd1Vf&Bu>*Mcyo6rMJM5?bn*1sQW1&3*$GtKERdJY|R(2-j(0@U(%kBk$B26db= zcd>Bpq8yQh6=MJxyZ|i9dYUPl#9$%7*ppU4&@*4=#NN zw~-h5{&OoN;#)Wh>k@IkH7Iv z`J017d3}B&&0bgDyco&LlXH3X=A3-1T`20Mw(l5t5*8UvwR*(C=6oKw^3c)(`#`-C zcF_#A+C)e}S0ALfgM%X))wx!2dRn+#09zuOSznF#L|UNTKuH-ryQZ-=G3|nzEuBhC zN(fsUykTpN;EZHC@e>E)9R9UMmX;skb5gG~%YB1<#tQ)~2Xu4To>|N}j62rPXQ6OT zm;pR8^h~jQ04V!dy&Aax-FC_;Z5Vdqs3|Jpc2hmJzW=@BW4ZhAT{ZBuDzb1Z%9=xn zjry{d2-!N9rL4zF{qF1Xs6bRKx9$r+-$KUds~gsO{Txmf!o^Ha`o5OxAInew`Y&xw zh+ef{ygHNPy;mBNx}5G6ON045peT1Ppk#N!$Fe<9U~Ij~$rfnK!{FMTo*Wz=v3jKL zKSa_r@$dGDb+B3+uja&rhIp)2ngCG28bDIrW&0+`H~Q#)5e9HgV@%B{>G-OW^=UK13g5qV&iz-Rh`hQ&!@YTfi)W^Z0Hy2a=<;tJQtHNo?O)`J?^;OLI*?e55EZid?fUrVoYsMj1E9x|k% z%|pEeF#(P;x7-RjA`S_(QUPA_=(zR)1yFL!C1E(!VaToDhpnez7%;TrPt*&})c}#W zqxYDTR@7hx2SOt*EYM+Q8Xnv2o^-TYrn)ky6_oIm zJ|OGXDBm3G3S3aR41EvSTKMs+cr5?&vIFx&@=mv#j!5k(Zmu zjWWF|cQx_+r+@H$`9DAXpBfe>6wvtW*(-TxcTcOGzI4@gmWlP$(CupKmAbdv(XRpJ zuuHMF2$nQ0PEMsePy@jz{pX*`$M1av{X|)O`fEAX+~b~x*O?k%cmIfoY;`)-5ZspZ zxXT$vBrouaxf_C`Hbyd#F#c|`i`1kSJF&p%IB5;T$rkiZAnYNmQN%X0N$#a4@dcJF z>4${T!dqpeTRY(|ip&FR=)*)3F1+bz!shy*HITc*eO9?E3ZQ6(IOs6^tdr$K{i9ooT6Z3d4F$5 zAE#k&no;^2AqgH1gQ;B&V|%@U>=A%$YtGd&A$~QOW6kS2gB>|}^@{7_(BJD0x>7dO za6msULt^WrWU-;uoMxdIhb=N7B`9;XVGLFPCv$-`eA?+`Lc@a5%$5rp31~gY%fNs| zj>swz%6!We|K;>jmRXpb!$9Yx2jQ~}^`ZbN5lJIb349)$2LQ}@)R5zQ@5l~T@RbEy zW`HH~FnuF8zygc@wA(>oAlu{o4@)op#h)eM#pyC>tXV=h

&mbPTKwZnBGeQ>EXZ-VFr#BAIBJ`G{8Ga$r~#15}`KQ9Q)a>$`DR)L}4 z;qw$!Jw{R+TaSvcL*_G)fx%%^7h}5?c@R;ve2vLA`hog9$c?Zb21j_c1RW-`TugJT zm3leoPwedusTrTch@c^wn$qEp79C^o+w?*?esG^D1J|aY@$DXnU4>{p`4a#|!xlpx z^|t*~#^~oeoX_oZeqBpvEedi)WQ%IcctQ){OI3w&SzQ8EOm}lb={+6KpLgF#yFuU**O7|Spi_mei%)wA6l0_#Ly}i1KOlb5ki7^#e*sr z+FiNH0Wpj^_Z@Va!0kdc48sFk77twIa}4#Xr%VknMcYU{9jL`9Bs$n}s5vFP6(I&l zF`y&S!skgTXSvji9{J+_oqN?Vvn|}Vh*wlCx~&{5^7+UBoYq5OI9I{j`QMiw`Zv%0 z&0+Eu;KS6J@k&-1*E_@(@o+9UF3J8xtd6?To zp>>c4qp`3{$N}%KbPX?$b+{)h13M{VUWL9RLg#8>tB9#)I5+$Xg@iSjeeDQL4*6AX z5C~{A47)z72=KPo?#i&M6)NotFWB>gVS&9-_-oqxbV-0BsK>mW zyi4f*RZgR3E^cUXxi+jY1#x+fb-7)9iMhhBezUyMM$N0vI<~SxqjWTvcOJecKm6B! zDvzK1hTQn`$xNQVIhWmGU$5Ghw4yG@q&Q*@m151GKK2|En+d+9JQ| zapCI~g{>2`YBuL$4TnFFfAqcY$;A{iaZQ=#P<)wi8Ri1hy~sb%H^VY+C^2`Ml<2`! zvyGmYltr2VHxlEh2R%=g`5YZ9h(*CDf`&phSyy^~l;=*ijM(d|77(C+m|A6wejRw| zIk2LgGFZ;uQ!h0fXz{Vr=W=v} z!A`p&-FA}&N+LF@k2ecx%{Jr)$cmLpd}Q;uZ(GjoZ_(D*`uDeIx?H=NBHXrt&ued` zQCS&|%F^9y#EKv^H*s|`mNz4rp!coyHA zMXAxUL>QPD5_f1kv^9h-rZak+H{%iWpB?E*Jhw4*?3G3?gxAHER}3*|O-B8LM$sS| z4+B8u#m|ma!&;SLN+)UBm>O^@ejess8TnRhA*lhQWdqg01t~Tej~zT-?s+AET$XY~&^xGXyYB#()0i#Xwl=&3&MX?pOf!r*!$>@`bkiNY;I8eXUQm3|{M-NFk zZan@zpjy_D_h`dZw&(>R--_z(LHi*p*O1X>M<$lH?dui`1itbuc&YHcy&mzMC{$Li z`c<$r&*a08za@Y4{U6AW{?ngpQk+rR=;g_UUcGt}u#2z`7KkfU-r*2EHs%YWW$M>ERw}mY<0dL3;|Kx}A%fJ77`RtQ_kbI{j zug*uBU&K6Nhw3qg1HcH#O&j)JqKLUpMk(!t*b&fkv`g^Ln|w?`VqHd|H`8-ja)X2q zr^W^ZM;?|5ZgO)yx&AwmHSQJ6X}vLh zodg5}Lr?JTy*u*wSD$e7i`CNk1@;_q;boNWurfj=gf34dDi9tD94W`4- z*r0)9#U6-)iSwzzmcT}}q^lloIG~4R5#m}8l@QAYUKQCzY>sQRDsC(FzbkYiJbRC=;h{4A-EfJHxIC^rD0;=jQ6=F=Kuf` zIY~r8R6!U7;v+kK77pdAsFLmgpRCWGhYvp$WzgdPlA*9-J^1&x4~18}h$4Pac073nIJ|ItA7=Jbpj?c99`p%8>MB=%)yODkgwF-U%AT8X0MhY%aJr*aEVTtZ1B zF|S8vo@=zvmi9itNC5l+Ix#q3c@Y0EtQTn8C06{KrW!8Rxgb1e4DI%m7)Qg3JQy8- zU>L3)7wc0}M*vd$7wOersP04``v9uXGYg00uv=&h&1JTL#Pqws*MgUYQK6uS z!%&HS-ZlhmeG3?XPl%n+Q^8At)Ca?gA_AycVJk^GnlH{qYGvJhX%CNR=w<2>X+YWw zpIP=$NK$f*LgR`MwPDp8LScZ3qIForzlHpcIaYW;Jz2Z8$GQw|sO}R_FujgJ^EWd5 zXncN3_5g<%a-;V~s|CgTv1N5MDP;Eeg$##dHLgB+TCwMBMGC2*Sf0IlB`4=+a{ulF z>cppL;WRBTLiptg2bKkSqdB04Y1PvMmc)fiygICjymW&CQvo0-yb;NKYRD1y{iS@L zFg!H3Io_q-k|Xw>La;9h!%3`GqE4Et%pd^=$O}#uT3s-F%j1l#Y9hD^ja@SX>FnLn zH`+EC&LlFyM_)Cw+0%`J7<#ZZk@EJ2CH{O>&b|dbTz~qn;A7!-6;yxYtqj^q7MuA- z;=tvK{9xOQ6QVJ3WnRsvXQ!n0Hav_Kxw$`9L=beva!2MjOAadR>|~^v#6-nYu2#XM z&PWsV6v}$bjD~;_EW8ga-d-&G((YjGt>H`O7ZdezZ5jjsQg|0k~;oJK_1 zMm^c6@TB^DD;5RRC#CmkG3h36KC%>oLb+5mv~(be0w>CL?4U469MdCq)v~a;BxDlX zBBiY4yd`ottV51CI-i?CmCg#Sq2jUQTHz#DtByk1ev5Otp3V7+aKrx(k5&C`T~Ob{ zAipOkDc8jPg07ZJ$1_h@mxXx+Fagq%2Of`wK_H0+v!S715FFXt-IL?;SYDsNyG?i^ z7T}O;0>9fI@C268lmiQ$ZkyN97XdI8gvb4GTIaP$u3^{FncC0ama7b$1fJM2m0s(0N zrpf*JAxRLVi7IHq&wI#W%TPcSeqQ939?PGjsv*Cu$GVdB9z-)eY5!70znWncp(z;$ z@qCf6SlhOG3VHA)DxQ2rAz5IRXdhF_4t+VF$AdyPt2TH7&BHFnW3HZsRztfzrGgCl za_vS(Ch<}$$C>2QNMtx<1>fLEU_>7@_`@rJo9iA$Fv z8WcvevSL9ar-#GFdT#t$@g#=|kU14fc7UR8JhN;rE6weSbVd9OhJis>@UK8l#M%~w zy?&={x#iqM*GA)+4EBy?cyvJUlN}7dP{Ubak`7T_Dcq2RaD+vOaxLfmJKT8bxnW<1 zfre<5MpsyF6s+3I)u?tgTzRWXTiNI_tqoHMH56Vcl1hS#jjfc0V?H+D$Gv@}S-q(n z+Xy_sN?gTU=pETXMCqU9Q<+RA9&%Im@BoI6F_o;IX`&$wOaWAe3{jxF77lwjWDUH&>2{gN zst}7%w)Zrgv!VA5Va{Ag@9>^a&fyV+(QeO&VHP9Yihn<6~V2%`JMNA7` znqrfY@jU|$hn}OR%aUZiA0oC8k>#$Ni~&`NtGoz}X;RLCLHTT95<^2FQ4iBK$!RcL zW0M%CvauRWreSmkOVT^3deJH0Gmb;0)aTna`u&a!cXu4($k-?Bq)o1fF>d^lUK5v9 zu9e`?gZCH?lG4UW!~tgt2>Ve7*KFNes~J%gl6bj1~2BT#QEDbqi9P+yD^It|B z7_MSwy&rU?QE$J8`eO}NverR`s#y*Y$C39)OG^gWkamxzhwk+B6*s_>I^tI(duX5+ z^OCnsq*hH@uMt;soW)jl#}>lqzDrvjl0>0gwtS7_@ua?#yw4PA3s#hA5<3)NkVNXe zLnhvF=i>Z7i|b<9YPyo)7r7-26!Mf@5UNE5n$mpgw3wDFdKRn~p)Nv}`%r0v5>0IJsMkqS6MoCIG7Sj|E|^ZI zOS&eD78M*N*quD^C>tJVJx;uL^*6_&L&NA9~-ukJIYX7N%&=u$J z%JX`~ef8Jl>A%EKaZBso>8d9xielr5!td*V+4==NY4nf=EG8vk&2lB234a>ss#Z()tcJK#El&-gsi!?D?DOF9dA=ZgFat}X(d3XQz*KmzMq`H_2Xtlh zI{`t!6QV(m=iG^KvcI>>Aqh_N=4+Sp$z4{cfTgmY;(Xu zoG@8jkt2mXhfSW+`lQTL{rl@#D$!f#xPA+NkAL$#-?+aXQqv8Kzs4nQ8{Jz*$iCpZ z0)a6!S_#W(J0Z>~*AI&|yI>1IbT)1`G;x0-&z^ox(6FV(FmI*Y;>Em&$!N@h0X#3M z!k7xSb(IW5RdR}foCrNUOW0#yOM+0D&@##@EX1`j^Z@$MFtJ2Hy%9nbDAIe~fk`nU znMYnHwkRFgma$D6q!+iF)+QVO3 z7{V<*tKK)8o@>bLOIy9wg7SQcguON))L(t`Z0HK7an<+Nh0Xf!>S1!b5J0HL>a9MnWtc%F}mKU>IM+Lzf2xs z+pxm<58h`Z$GXA*>#tE6R^2t$@4V~@!(+m~>&MvQON2RwD=oYK%a4B|fBlo6$fv*g z4XMXtHL8qUrHlrN-(gU*t)=@n-+d@|hdoXkV}f?r8BzV*_!co-#Vf%mi&(;EnBPkb1!p4e#wadk8;q|kEv({sFbKici+aX!W5#N&gNbTL zUU!Y7-sPNM!-@&yeIO-bfqG=yQHi-NS3VePIMzTfoWuPC%Nrs1tN+q-RY{S1q@>`) z_Np0^?6}__a(zq8VOvkAqbtFoOHcG|$GGa=r|y}qd+z%0H$ve}c~C+6BbmtsQBe(3R$%B(pczyvG>hdg7axhK1WzJ|UAvA331cBM;t3-dq?l;FP;*tDMDg6R2N zKU14I*AQGXa@B3Di>Nt%&YkQB=|_adw#eDV8yV^Iy?b~^TJ0vA?@=(Q8w_jvJcj6U zQ)_P94uS^@Ioh^ST^0suSoJrt?K-bd@@k6}4TjVM-I33qd@ld_M}JNl@Zr(Ey}8o* zXY<9(5MV+=24jGjhuj6;r_1%Z2{}lpy!M8>G8&JGv~x7euN-&`gc5XB*!5pz9Ivuf z^tQdrfbfXe5;r|Kn}H%{G^p4;m|<5)uGxpgXV1%ulYg$Sk2J2MhO|4_k%QeG>2&+- zJ9fK0YwdW!f@z~w7cccb8OK&~w8&wmI7tm|&UEc=U`*(aIVAD0CJZengaA4{k?KMA0o| zJejhu#!54yC9v_Fji>aMU^k>ihCrT>#8tVzilh? znWYv|mTPzcN%zZ_U&tq){Dbc^&ghk}Dvs65-cSw?hw}Wz8JAoZxh)-P>y_9=p3#W8 zMFCz7Z3$FNK%jRp3e`+WW1&i3=9rVdC6jl|DmOi+vL8zQ(k}qMJsK_zh+#*nz0TBb zC}Zm#>f@ll0Faj8tnYyaxC!kouvwwa_4@QwcKThpd$h+e2SHw&3W_L9!oAV1XBw(9 z&|y#jU@4V&VTAm#5!vS1m;!=Vh1c(E1b8+&WBqG+q=}7$Md3I3t!{6Gcpxg)46hBFNCciprK>-R_kl5=3pw`^qY*1}395 z>@<9_q)8H$+|69|48`$&yq(TWx#{$|t&VGDXs zR>nx!H4lQ$RVY#lR(}*(r`|k^4GHs%am6YPAqw7f0of*ug%!4>69Om94e5mo&#xl6 zHp$vDp3A-uKVJtk-R3zid%ZLm%hmsedBV-4J%FL&R~X9Vr%#@+(u4QfQ2#4UZ>!Vk zt8pF6{I}0!InU&y_urM{g9EMLX3k2`uZFd93O4TjH6kIQ4?tm)N_kqfWme{+*@+M_ zkBx7R5S!#$5Ja{ZEQ26NZP!IwcfA-$X;cVr$w=)4RfxC{XZKd&Jrc`F^-23_k0`hNkopJFdxujUK@0000< KMNUMnLSTa5`eeEQ literal 0 HcmV?d00001 From c536fd1626dd2da52a6ed8217984394d4bc25809 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Mon, 10 Feb 2020 18:08:49 +0800 Subject: [PATCH 30/36] Level-10: Added GUI for Duke. --- src/main/java/duke/Duke.java | 30 +++++++++++++-------- src/main/java/duke/Parser.java | 32 +++++++++++------------ src/main/java/duke/Storage.java | 2 +- src/main/java/duke/Task.java | 14 +++++----- src/main/java/duke/TaskList.java | 4 +-- src/main/java/duke/Ui.java | 45 ++++++++++++++++++-------------- 6 files changed, 70 insertions(+), 57 deletions(-) diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index d21ccc53f0..fa592820fa 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -29,7 +29,13 @@ public class Duke extends Application { private Image user = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); private Image duke = new Image(this.getClass().getResourceAsStream("/images/DaDuke.png")); - public Duke() {} + List log; + TaskList tasklist; + + public Duke() { + this.log = new ArrayList(); + this.tasklist = Storage.load(); + } public static void main(String[] args) { run(); @@ -41,11 +47,11 @@ public static void run() { Ui.showLogo(); TaskList tasklist = Storage.load(); - System.out.println(Ui.welcomeMessage); + System.out.println(Ui.WELCOME_MESSAGE); boolean didNotExit = true; while (didNotExit) { - String thisResult = Ui.getNextCommand(scanner, tasklist); + String thisResult = Ui.processNextCommand(scanner, tasklist); log.add(thisResult); if (thisResult.equals("exit")) { @@ -60,7 +66,7 @@ public static void run() { System.out.println(""); } - System.out.println(Ui.exitMessage); + System.out.println(Ui.EXIT_MESSAGE); scanner.close(); } @@ -68,6 +74,7 @@ public static void run() { public void start(Stage stage) { //Step 1. Setting up required components + //The container for the content of the chat to scroll. scrollPane = new ScrollPane(); dialogContainer = new VBox(); @@ -127,8 +134,6 @@ public void start(Stage stage) { dialogContainer.heightProperty().addListener((observable) -> scrollPane.setVvalue(1.0)); - - } @@ -152,8 +157,11 @@ private Label getDialogLabel(String text) { * the dialog container. Clears the user input after processing. */ private void handleUserInput() { - Label userText = new Label(userInput.getText()); - Label dukeText = new Label(getResponse(userInput.getText())); + + String commandInput = userInput.getText(); + Label userText = new Label(commandInput); + Label dukeText = new Label(getResponse(commandInput)); + dialogContainer.getChildren().addAll( DialogBox.getUserDialog(userText, new ImageView(user)), DialogBox.getDukeDialog(dukeText, new ImageView(duke)) @@ -162,11 +170,11 @@ private void handleUserInput() { } /** - * You should have your own function to generate a response to user input. - * Replace this stub with your completed method. + * Processes the user input and returns a result. + * @return the result after processing the user input. */ private String getResponse(String input) { - return "Duke heard: " + input; + return Ui.processNextCommand(input, this.tasklist); } diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 7a2ca2cb39..316bbe1100 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -73,10 +73,10 @@ public static String processCommand(String[] command, TaskList tasklist) { case "exit": return command[0]; default: - return Ui.commandNotFound; + return Ui.COMMAND_NOT_FOUND; } } else { - return Ui.commandNotFound; + return Ui.COMMAND_NOT_FOUND; } } @@ -90,7 +90,7 @@ public static String todoCommand(String[] command, TaskList tasklist) { if (command.length > 1) { return tasklist.newTodo(false, command[1]); } else { - return Ui.taskNeedsName; + return Ui.TASK_NEEDS_NAME; } } @@ -105,13 +105,13 @@ public static String eventCommand(String[] command, TaskList tasklist) { try { return tasklist.newEvent(false, command[1], command[2]); } catch (DateTimeParseException e) { - return Ui.wrongDateTimeFormat; + return Ui.WRONG_DATE_TIME_FORMAT; } } else if (command.length == 2) { - return Ui.taskNeedsDateTime; + return Ui.TASK_NEEDS_DATE_TIME; } else { - return Ui.taskNeedsName; + return Ui.TASK_NEEDS_NAME; } } @@ -126,12 +126,12 @@ public static String deadlineCommand(String[] command, TaskList tasklist) { try { return tasklist.newDeadline(false, command[1], command[2]); } catch (DateTimeParseException e) { - return Ui.wrongDateTimeFormat; + return Ui.WRONG_DATE_TIME_FORMAT; } } else if (command.length == 2) { - return Ui.taskNeedsDateTime; + return Ui.TASK_NEEDS_DATE_TIME; } else { - return Ui.taskNeedsName; + return Ui.TASK_NEEDS_NAME; } } @@ -142,9 +142,9 @@ public static String deadlineCommand(String[] command, TaskList tasklist) { */ public static String listCommand(TaskList tasklist) { if (tasklist.getSize() == 0) { - return Ui.noTaskInList; + return Ui.NO_TASK_IN_LIST; } else { - return Ui.displayTaskList + "\n" + tasklist; + return Ui.DISPLAY_TASK_LIST + "\n" + tasklist; } } @@ -159,7 +159,7 @@ public static String doneCommand(String[] command, TaskList tasklist) { int taskID = Integer.parseInt(command[1]); return tasklist.markDone(taskID); } catch (IndexOutOfBoundsException e) { - return Ui.noTaskFound; + return Ui.NO_TASK_FOUND; } } @@ -174,7 +174,7 @@ public static String deleteCommand(String[] command, TaskList tasklist) { int taskID = Integer.parseInt(command[1]); return tasklist.deleteTask(taskID); } catch (IndexOutOfBoundsException e) { - return Ui.noTaskFound; + return Ui.NO_TASK_FOUND; } } @@ -193,9 +193,9 @@ public static String findCommand(String[] command, TaskList tasklist) { } } if (query.getList().isEmpty()) { - return Ui.noMatchingTaskInList; + return Ui.NO_MATCHING_TASK_IN_LIST; } else { - return Ui.displayMatchingTaskList + "\n" + query; + return Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query; } } @@ -207,7 +207,7 @@ public static String findCommand(String[] command, TaskList tasklist) { public static String saveCommand(TaskList tasklist) { try { Storage.save(tasklist); - return Ui.changesSaved; + return Ui.CHANGES_SAVED; } catch (Exception e) { return "Oops! Unable to write to file due to " + e + "!"; } diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index ac479d737e..15b2606793 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -89,7 +89,7 @@ public static void save(TaskList tasklist) throws IOException { for (Task thisTask : tasklist.getList()) { String taskStr = thisTask.getTaskType() + " ~ " - + (thisTask.getStatus() ? "1" : "0") + " ~ " + + (thisTask.getDoneStatus() ? "1" : "0") + " ~ " + thisTask.getTaskName() + " ~ " + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskTime()) + "\n"; bw.write(taskStr); diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index 940e4e8294..fe3ce45972 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -49,7 +49,7 @@ public LocalDateTime parseDate(String taskTime) throws DateTimeParseException { * Returns if this Task is done. * @return the status of the Task. */ - public boolean getStatus() { + public boolean getDoneStatus() { return isDone; } @@ -57,7 +57,7 @@ public boolean getStatus() { * Returns if this Task is done, in a unicode format. * @return the status of the Task */ - public String getStatusUnicode() { + public String getDoneStatusUnicode() { return (isDone ? "\u2713" : "\u2718"); } @@ -93,10 +93,10 @@ public String getTaskTime() { */ public String markDone() { if (this.isDone) { - return Ui.taskAlreadyDone; + return Ui.TASK_ALREADY_DONE; } this.isDone = true; - return Ui.markedTaskDone + this; + return Ui.MARKED_AS_DONE + this; } /** @@ -106,13 +106,13 @@ public String markDone() { @Override public String toString() { if (this.taskType == 'T') { - return "[" + taskType + "] " + "[" + getStatusUnicode() + "] " + this.taskName; + return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName; } else if (this.taskType == 'D') { - return "[" + taskType + "] " + "[" + getStatusUnicode() + "] " + this.taskName + " (by: " + this.getTaskTime() + ")"; + return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (by: " + this.getTaskTime() + ")"; } else if (this.taskType == 'E') { - return "[" + taskType + "] " + "[" + getStatusUnicode() + "] " + this.taskName + " (at: " + this.getTaskTime() + ")"; + return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (at: " + this.getTaskTime() + ")"; } else { return ""; } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index a4f8cbe5dc..fc0943b9ea 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -24,7 +24,7 @@ public TaskList() { */ public String add(Task task) { this.list.add(task); - return Ui.newTaskMessage + task + Ui.taskCountMessage(this.list.size()); + return Ui.ADDED_NEW_TASK + task + Ui.taskCountMessage(this.list.size()); } /** @@ -77,7 +77,7 @@ public String markDone(int taskID) { * @return a String message indicating if the deletion is successful. */ public String deleteTask(int taskID) { - String output = Ui.deleteTaskMessage + this.list.get(taskID - 1); + String output = Ui.DELETED_TASK + this.list.get(taskID - 1); this.list.remove(taskID - 1); output = output + Ui.taskCountMessage(this.list.size()); return output; diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index bbf0371641..9ea00e76b2 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -4,22 +4,22 @@ public class Ui { - static String commandNotFound = "Oops! Command not found!"; - static String taskNeedsName = "Oops! This task needs a name!"; - static String taskNeedsDateTime = "Oops! This task needs a date/time!"; - static String wrongDateTimeFormat = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; - static String noTaskFound = "Oops! Task not found in the list!"; - static String noTaskInList = "Yay! There are no tasks in your list!"; - static String displayTaskList = "Here are your tasks in your list:"; - static String displayMatchingTaskList = "Here are your tasks that matched your query:"; - static String noMatchingTaskInList = "Oops! There are no tasks that matches your query!"; - static String changesSaved = "Changes saved!"; - static String markedTaskDone = "Marked this task as done:\n "; - static String taskAlreadyDone = "Oops! This task was already marked as done!"; - static String newTaskMessage = "New task has been added:\n "; - static String deleteTaskMessage = "Removed this task:\n "; - static String welcomeMessage = "-------------------------------------\nWelcome! What can I do for you today?"; - static String exitMessage = "Thank you for using Duke.\nHave a nice day!\n"; + static final String COMMAND_NOT_FOUND = "Oops! Command not found!"; + static final String TASK_NEEDS_NAME = "Oops! This task needs a name!"; + static final String TASK_NEEDS_DATE_TIME = "Oops! This task needs a date/time!"; + static final String WRONG_DATE_TIME_FORMAT = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; + static final String NO_TASK_FOUND = "Oops! Task not found in the list!"; + static final String NO_TASK_IN_LIST = "Yay! There are no tasks in your list!"; + static final String DISPLAY_TASK_LIST = "Here are your tasks in your list:"; + static final String DISPLAY_MATCHING_TASK_LIST = "Here are your tasks that matched your query:"; + static final String NO_MATCHING_TASK_IN_LIST = "Oops! There are no tasks that matches your query!"; + static final String CHANGES_SAVED = "Changes saved!"; + static final String MARKED_AS_DONE = "Marked this task as done:\n "; + static final String TASK_ALREADY_DONE = "Oops! This task was already marked as done!"; + static final String ADDED_NEW_TASK = "New task has been added:\n "; + static final String DELETED_TASK = "Removed this task:\n "; + static final String WELCOME_MESSAGE = "-------------------------------------\nWelcome! What can I do for you today?"; + static final String EXIT_MESSAGE = "Thank you for using Duke.\nHave a nice day!\n"; public static void showLogo() { String logo = " ____ _ \n" @@ -35,27 +35,32 @@ public static boolean askBeforeQuitting(Scanner scanner, TaskList tasklist) { "Press any other key to Cancel and Return"); String choice = scanner.nextLine(); - if (choice.equals("Y") || choice.equals("y")) { + if (choice.equalsIgnoreCase("Y")) { try { Storage.save(tasklist); - System.out.println(changesSaved); + System.out.println(CHANGES_SAVED); } catch (Exception e) { System.out.println("Oops! Unable to write to file due to " + e + "!"); } return false; } else { - return !(choice.equals("N") || choice.equals("n")); + return !(choice.equalsIgnoreCase("N")); } } - public static String getNextCommand(Scanner scanner, TaskList tasklist) { + public static String processNextCommand(Scanner scanner, TaskList tasklist) { System.out.print("> "); String input = scanner.nextLine().strip(); String[] command = Parser.parseInput(input); return Parser.processCommand(command, tasklist); } + public static String processNextCommand(String input, TaskList tasklist) { + String[] command = Parser.parseInput(input.strip()); + return Parser.processCommand(command, tasklist); + } + public static String taskCountMessage(int listSize) { return "\nNow you have "+ listSize + (listSize == 1 ? " task" : " tasks") + " in the list."; } From 97cc952e770b390ec373d92eb2a22e8f7069eab7 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 11 Feb 2020 00:17:11 +0800 Subject: [PATCH 31/36] Added Update, View Schedules and Reminders extensions. --- src/main/java/duke/Deadline.java | 6 +- src/main/java/duke/Duke.java | 13 ++- src/main/java/duke/Event.java | 6 +- src/main/java/duke/Parser.java | 160 +++++++++++++++++++++++++++++-- src/main/java/duke/Storage.java | 10 +- src/main/java/duke/Task.java | 99 +++++++++++++------ src/main/java/duke/TaskList.java | 108 +++++++++++++++++---- src/main/java/duke/Ui.java | 63 +++++++++++- 8 files changed, 392 insertions(+), 73 deletions(-) diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index 2b92113c60..944e3e4fc4 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -9,9 +9,9 @@ public class Deadline extends Task { * Constructor for a new Deadline object. * @param isDone whether the Task is marked as done. * @param taskName the name of the Task. - * @param taskTime the end time of the Task. + * @param taskDateTime the end time of the Task. */ - public Deadline(boolean isDone, String taskName, String taskTime) { - super('D', isDone, taskName, taskTime); + public Deadline(boolean isDone, String taskName, String taskDateTime) { + super('D', isDone, taskName, taskDateTime); } } diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index fa592820fa..26f733d378 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -47,11 +47,12 @@ public static void run() { Ui.showLogo(); TaskList tasklist = Storage.load(); + System.out.println(""); System.out.println(Ui.WELCOME_MESSAGE); boolean didNotExit = true; while (didNotExit) { - String thisResult = Ui.processNextCommand(scanner, tasklist); + String thisResult = Ui.readNextCommand(scanner, tasklist); log.add(thisResult); if (thisResult.equals("exit")) { @@ -121,6 +122,14 @@ public void start(Stage stage) { AnchorPane.setLeftAnchor(userInput , 1.0); AnchorPane.setBottomAnchor(userInput, 1.0); + + Label welcomeMessage = new Label(Ui.WELCOME_MESSAGE); + Label startupUpcomingWeekView = new Label(Parser.upcomingCommand(new String[] {"upcoming", "7"}, this.tasklist)); + dialogContainer.getChildren().addAll( + DialogBox.getDukeDialog(welcomeMessage, new ImageView(duke)), + DialogBox.getDukeDialog(startupUpcomingWeekView, new ImageView(duke)) + ); + //Step 3. Add functionality to handle user input. sendButton.setOnMouseClicked((event) -> { handleUserInput(); @@ -174,7 +183,7 @@ private void handleUserInput() { * @return the result after processing the user input. */ private String getResponse(String input) { - return Ui.processNextCommand(input, this.tasklist); + return Ui.readNextCommand(input, this.tasklist); } diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index 10c1afa0f6..5e42d58fbc 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -9,9 +9,9 @@ public class Event extends Task { * Constructor for a new Event object. * @param isDone whether the Task is marked as done. * @param taskName the name of the Task. - * @param taskTime the end time of the Task. + * @param taskDateTime the end time of the Task. */ - public Event(boolean isDone, String taskName, String taskTime) { - super('E', isDone, taskName, taskTime); + public Event(boolean isDone, String taskName, String taskDateTime) { + super('E', isDone, taskName, taskDateTime); } } diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 316bbe1100..30b47bd838 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -5,13 +5,18 @@ package duke; +import java.io.IOException; +import java.time.LocalDate; import java.time.format.DateTimeParseException; import java.util.List; import java.util.HashSet; public class Parser { static HashSet commandList = new HashSet( - List.of("todo", "event", "deadline", "list", "done", "delete", "find", "save", "exit")); + List.of("todo", "event", "deadline", + "list", "done", "delete", + "find", "update", "upcoming", + "view", "save", "exit")); /** @@ -56,7 +61,7 @@ public static String processCommand(String[] command, TaskList tasklist) { return deadlineCommand(command, tasklist); case "list": - return listCommand(tasklist); + return listCommand(command, tasklist); case "done": return doneCommand(command, tasklist); @@ -67,6 +72,15 @@ public static String processCommand(String[] command, TaskList tasklist) { case "find": return findCommand(command, tasklist); + case "update": + return updateCommand(command, tasklist); + + case "upcoming": + return upcomingCommand(command, tasklist); + + case "view": + return viewCommand(command, tasklist); + case "save": return saveCommand(tasklist); @@ -88,7 +102,11 @@ public static String processCommand(String[] command, TaskList tasklist) { */ public static String todoCommand(String[] command, TaskList tasklist) { if (command.length > 1) { - return tasklist.newTodo(false, command[1]); + try { + return tasklist.newTodo(false, command[1]); + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; + } } else { return Ui.TASK_NEEDS_NAME; } @@ -106,6 +124,8 @@ public static String eventCommand(String[] command, TaskList tasklist) { return tasklist.newEvent(false, command[1], command[2]); } catch (DateTimeParseException e) { return Ui.WRONG_DATE_TIME_FORMAT; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; } } else if (command.length == 2) { @@ -127,6 +147,8 @@ public static String deadlineCommand(String[] command, TaskList tasklist) { return tasklist.newDeadline(false, command[1], command[2]); } catch (DateTimeParseException e) { return Ui.WRONG_DATE_TIME_FORMAT; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; } } else if (command.length == 2) { return Ui.TASK_NEEDS_DATE_TIME; @@ -140,12 +162,31 @@ public static String deadlineCommand(String[] command, TaskList tasklist) { * @param tasklist the target TaskList. * @return a message displaying the number of tasks in the list. */ - public static String listCommand(TaskList tasklist) { - if (tasklist.getSize() == 0) { + public static String listCommand(String[] command, TaskList tasklist) { + if (command.length > 1 && !command[1].equals("all")) { + TaskList query = new TaskList(); + for (Task t : tasklist.getList()) { + if (command[1].equals("todo") && t instanceof Todo) { + query.tempAdd(t); + } else if (command[1].equals("deadline") && t instanceof Deadline) { + query.tempAdd(t); + } else if (command[1].equals("event") && t instanceof Event) { + query.tempAdd(t); + } + } + if (query.isEmpty()) { + return Ui.NO_MATCHING_TASK_IN_LIST; + } else { + return Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query; + } + } + + if (tasklist.isEmpty()) { return Ui.NO_TASK_IN_LIST; } else { return Ui.DISPLAY_TASK_LIST + "\n" + tasklist; } + } /** @@ -160,6 +201,8 @@ public static String doneCommand(String[] command, TaskList tasklist) { return tasklist.markDone(taskID); } catch (IndexOutOfBoundsException e) { return Ui.NO_TASK_FOUND; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; } } @@ -175,6 +218,8 @@ public static String deleteCommand(String[] command, TaskList tasklist) { return tasklist.deleteTask(taskID); } catch (IndexOutOfBoundsException e) { return Ui.NO_TASK_FOUND; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; } } @@ -189,10 +234,10 @@ public static String findCommand(String[] command, TaskList tasklist) { TaskList query = new TaskList(); for (Task thisTask : tasklist.getList()) { if (command.length > 1 && thisTask.getTaskName().toLowerCase().contains(command[1].toLowerCase())) { - query.add(thisTask); + query.tempAdd(thisTask); } } - if (query.getList().isEmpty()) { + if (query.isEmpty()) { return Ui.NO_MATCHING_TASK_IN_LIST; } else { return Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query; @@ -200,7 +245,106 @@ public static String findCommand(String[] command, TaskList tasklist) { } /** - * Saves the master TaskList, at its current state when the command was called, into a save file. + * Updates the Task in the specified index of the TaskList + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a message displaying whether this command is successful. + */ + public static String updateCommand(String[] command, TaskList tasklist) { + if (command.length > 1) { + try { + String[] s = command[1].split(" ", 2); + if (s.length < 2) { + return Ui.NO_FIELD_TO_UPDATE; + } + int taskID = Integer.parseInt(s[0]); + return tasklist.updateTask(taskID, s[1]); + } catch (IndexOutOfBoundsException e) { + return Ui.NO_TASK_FOUND; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; + } + } else { + return Ui.NO_FIELD_TO_UPDATE; + } + } + + /** + * Views a range of Tasks, sorted by time, over a specified number of days. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a list of Event and Deadline objects occurring the specified number of days. + */ + public static String upcomingCommand(String[] command, TaskList tasklist) { + if (command[1].equals("today")) { + command[1] = "1"; + } else if (command[1].equals("tomorrow")) { + command[1] = "2"; + } + + try { + LocalDate TODAY = LocalDate.now(); + TaskList upcomingEvents = new TaskList(); + TaskList upcomingDeadlines = new TaskList(); + int dayRangeUntil = Integer.parseInt(command[1]); + for (Task t : tasklist.getList()) { + if (!t.getTaskDate().isBefore(TODAY) && t.getTaskDate().compareTo(TODAY) <= dayRangeUntil) { + if (t instanceof Event) { + upcomingEvents.tempAdd(t); + } else if (t instanceof Deadline && !t.getDoneStatus()) { + upcomingDeadlines.tempAdd(t); + } + } + } + + return Ui.displayUpcomingRange(dayRangeUntil, upcomingDeadlines, upcomingEvents); + + } catch (NumberFormatException e) { + return Ui.COMMAND_NOT_FOUND; + } + } + + /** + * Views the schedule of a particular date. + * @param command the String array representing the parsed input. + * @param tasklist the master TaskList object. + * @return a list of Event and Deadline objects occurring on the specified day. + */ + public static String viewCommand(String[] command, TaskList tasklist) { + try { + LocalDate targetDate; + + if (command[1].equals("today")) { + targetDate = LocalDate.now(); + } else if (command[1].equals("tomorrow")) { + targetDate = LocalDate.now().plusDays(1); + } else { + targetDate = LocalDate.parse(command[1], Task.DATE_FORMATTER); + } + + TaskList upcomingEvents = new TaskList(); + TaskList upcomingDeadlines = new TaskList(); + + for (Task t : tasklist.getList()) { + if (t.getTaskDate().equals(targetDate)) { + if (t instanceof Event) { + upcomingEvents.tempAdd(t); + } else if (t instanceof Deadline && !t.getDoneStatus()) { + upcomingDeadlines.tempAdd(t); + } + } + } + + return Ui.displayUpcomingDay(targetDate.format(Task.DATE_FORMATTER), upcomingDeadlines, upcomingEvents); + + } catch (DateTimeParseException e) { + return Ui.WRONG_DATE_TIME_FORMAT; + } + + } + + /** + * Saves the master TaskList, at its current state when the command was called, into the data file. * @param tasklist the master TaskList object to save. * @return a message if the changes are successfully saved. */ diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 15b2606793..9511303650 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -18,10 +18,10 @@ public class Storage { static File thisLoc = new File(System.getProperty("user.dir") + "/data"); /** - * This method handles loading of an existing saved data stored in the directory 'data', where the program is + * This method handles loading of an existing data file stored in the directory 'data', where the program is * located, and populate a new TaskList object. * If the directory is absent, a new directory is created. - * If the directory is created and the saved data is absent, a new saved file is created. + * If the directory is created and the data file is absent, a new data file is created. * @return a new TaskList object. */ public static TaskList load() { @@ -79,9 +79,9 @@ public static TaskList load() { } /** - * This method saves a current TaskList object into the save file into the directory 'data', where the program + * This method saves a current TaskList object into the data file in the directory 'data', where the program * is located, assuming that the file has already been created before or during the launch of the program. - * @param tasklist the TaskList object to parse into the save file. + * @param tasklist the TaskList object to parse into the data file. */ public static void save(TaskList tasklist) throws IOException { FileWriter fw = new FileWriter(savedData); @@ -91,7 +91,7 @@ public static void save(TaskList tasklist) throws IOException { String taskStr = thisTask.getTaskType() + " ~ " + (thisTask.getDoneStatus() ? "1" : "0") + " ~ " + thisTask.getTaskName() + " ~ " - + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskTime()) + "\n"; + + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskDateTime()) + "\n"; bw.write(taskStr); } bw.close(); diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index fe3ce45972..694e762d6b 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -5,7 +5,8 @@ package duke; -import java.time.LocalDateTime; +import java.time.LocalDate; +import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -13,36 +14,36 @@ abstract class Task { private char taskType; private boolean isDone; private String taskName; - private LocalDateTime taskTime; + + private LocalDate taskDate; + private LocalTime taskTime; + + static DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("d/M/yyyy"); + static DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmm"); /** * Constructor for a new generic Task object. * @param taskType defines the type of this Task. * @param isDone whether the Task is done. * @param taskName the name of the Task. - * @param taskTime the end time of the Task. + * @param taskDateTime the given date-time of the Task. + * @throws DateTimeParseException if the date or time provided is in the wrong format. */ - public Task(char taskType, boolean isDone, String taskName, String taskTime) { + public Task(char taskType, boolean isDone, String taskName, String taskDateTime) throws DateTimeParseException { this.taskType = taskType; this.isDone = isDone; this.taskName = taskName; - this.taskTime = taskTime.isEmpty() - ? LocalDateTime.MIN - : this.parseDate(taskTime); - } - /** - * Parses the date and time in a string passed into the constructor. - * @param taskTime the end time of this Task. - * @return a LocalDateTime object containing a string representation of a time. - * If no time is present, a default time "2359" is used. - * @throws DateTimeParseException if the string is not in d/M/yyyy HHmm format. - */ - public LocalDateTime parseDate(String taskTime) throws DateTimeParseException { - if (taskType == 'D' && !taskTime.contains(" ")) { - taskTime = taskTime + " 2359"; + this.taskDate = LocalDate.EPOCH; + this.taskTime = LocalTime.MAX; + + if (!taskDateTime.isEmpty()) { + String[] dateTime = taskDateTime.split(" "); + this.taskDate = LocalDate.parse(dateTime[0], DATE_FORMATTER); + if (dateTime.length > 1) { + this.taskTime = LocalTime.parse(dateTime[1], TIME_FORMATTER); + } } - return LocalDateTime.parse(taskTime, DateTimeFormatter.ofPattern("d/M/yyyy HHmm")); } /** @@ -78,13 +79,54 @@ public char getTaskType() { } /** - * Returns the end time of this Task, in a String format. + * Returns the date and time of this Task in a string format. + * @return the Date and Time of this Task. + */ + public String getTaskDateTime() { + return this.getTaskDate().format(DATE_FORMATTER) + " " + this.getTaskTime().format(TIME_FORMATTER); + } + + /** + * Returns the end date of this Task in a String format. + * @return the end date of the Task. + */ + public LocalDate getTaskDate() { + return this.taskDate; + } + + /** + * Returns the end time of this Task in a String format. * @return the end time of the Task. */ - public String getTaskTime() { - return this.taskTime.getDayOfMonth() + "/" + this.taskTime.getMonthValue() + "/" + this.taskTime.getYear() - + " " + this.taskTime.getHour() - + (this.taskTime.getMinute() > 9 ? this.taskTime.getMinute() : "0" + this.taskTime.getMinute()); + public LocalTime getTaskTime() { + return this.taskTime; + } + + + /** + * Sets the name of this Task to a new name. + * @param taskName the name to change this Task to. + */ + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + /** + * Sets the end date of this Task to a new Date. + * @param taskDate the new Date. + * @throws DateTimeParseException if the Date is in the wrong format. + */ + public void setTaskDate(String taskDate) throws DateTimeParseException { + this.taskDate = LocalDate.parse(taskDate, DATE_FORMATTER); + } + + /** + * Sets the end time of this Task to a new Time. + * @param taskTime the new Time. + * @throws DateTimeParseException if the Time is in the wrong format + */ + public void setTaskTime(String taskTime) throws DateTimeParseException { + this.taskTime = LocalTime.parse(taskTime, TIME_FORMATTER); } /** @@ -99,20 +141,17 @@ public String markDone() { return Ui.MARKED_AS_DONE + this; } - /** - * An overridden toString() function to display a custom format when this Task is called as a String. - * @return a String representing this Task. - */ + @Override public String toString() { if (this.taskType == 'T') { return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName; } else if (this.taskType == 'D') { - return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (by: " + this.getTaskTime() + ")"; + return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (by: " + this.getTaskDateTime() + ")"; } else if (this.taskType == 'E') { - return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (at: " + this.getTaskTime() + ")"; + return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (at: " + this.getTaskDateTime() + ")"; } else { return ""; } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index fc0943b9ea..987f00c33f 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -5,6 +5,7 @@ package duke; +import java.io.IOException; import java.util.ArrayList; public class TaskList { @@ -18,71 +19,115 @@ public TaskList() { } /** - * Adds a new Task to this TaskList. + * Adds a new Task to this TaskList and saves the changes to the data file. * @param task the new Task to be added into this list. * @return a String message indicating if the adding is successful. + * @throws IOException if the changes are unable to be saved into the data file. */ - public String add(Task task) { + public String add(Task task) throws IOException { this.list.add(task); + Storage.save(this); return Ui.ADDED_NEW_TASK + task + Ui.taskCountMessage(this.list.size()); } /** - * Adds a new Task of type Todo to this TaskList. + * Adds a temporary Task to this TaskList but does not write to the data file. + * This method should only be called when the 'find' or 'list ...' command is executed. + * @param task the new Task to be added into this list. + */ + public void tempAdd(Task task) { + this.list.add(task); + } + + /** + * Adds a new Task of type Todo to this TaskList and saves the changes to the data file. * @param isDone if this Task is done. * @param taskName the name of this Task. * @return a function call to the add() function. + * @throws IOException if the changes are unable to be saved into the data file. */ - public String newTodo(boolean isDone, String taskName) { + public String newTodo(boolean isDone, String taskName) throws IOException { Task task = new Todo(isDone, taskName); return this.add(task); } /** - * Adds a new Task of type Event to this TaskList. + * Adds a new Task of type Event to this TaskList and saves the changes to the data file. * @param isDone if this Task is done. * @param taskName the name of this Task. - * @param taskTime the end time of this Task. + * @param taskDateTime the end date-time of this Task. * @return a function call to the add() function. + * @throws IOException if the changes are unable to be saved into the data file. */ - public String newEvent(boolean isDone, String taskName, String taskTime) { - Task task = new Event(isDone, taskName, taskTime); + public String newEvent(boolean isDone, String taskName, String taskDateTime) throws IOException { + Task task = new Event(isDone, taskName, taskDateTime); return this.add(task); } /** - * Adds a new Task of type Deadline to this TaskList. + * Adds a new Task of type Deadline to this TaskList and saves the changes to the data file. * @param isDone if this Task is done. * @param taskName the name of this Task. - * @param taskTime the end time of this Task. + * @param taskDateTime the end date-time of this Task. * @return a function call to the add() function. + * @throws IOException if the changes are unable to be saved into the data file. */ - public String newDeadline(boolean isDone, String taskName, String taskTime) { - Task task = new Deadline(isDone, taskName, taskTime); + public String newDeadline(boolean isDone, String taskName, String taskDateTime) throws IOException { + Task task = new Deadline(isDone, taskName, taskDateTime); return this.add(task); } /** - * Marks a Task in this list as done. + * Marks a Task in this list as done and saves the changes to the data file. * @param taskID the position (starting from 1) of the task in the list. * @return a function call to markDone() in the Task class. + * @throws IOException if the changes are unable to be saved into the data file. */ - public String markDone(int taskID) { - return this.list.get(taskID - 1).markDone(); + public String markDone(int taskID) throws IOException { + String output = this.list.get(taskID - 1).markDone(); + Storage.save(this); + return output; } /** - * Deletes a Task from this list. + * Deletes a Task from this list and saves the changes to the data file. * @param taskID the position (starting from 1) of the task in the list. * @return a String message indicating if the deletion is successful. + * @throws IndexOutOfBoundsException if the specified taskID is not within the current range of the TaskList. + * @throws IOException if the changes are unable to be saved into the data file. */ - public String deleteTask(int taskID) { + public String deleteTask(int taskID) throws IndexOutOfBoundsException, IOException { String output = Ui.DELETED_TASK + this.list.get(taskID - 1); this.list.remove(taskID - 1); output = output + Ui.taskCountMessage(this.list.size()); + Storage.save(this); return output; } + /** + * Updates a Task in this list and saves the changes to the data file + * @param taskID the position (starting from 1) of the task in the list. + * @param parameter the parameters of this command, separated with a regex ", ". + * @return a String message indicating if the update is successful. + * @throws IndexOutOfBoundsException if the specified taskID is not within the current range of the TaskList. + * @throws IOException if the changes are unable to be saved into the data file. + */ + public String updateTask(int taskID, String parameter) throws IndexOutOfBoundsException, IOException { + String[] fields = parameter.split(", "); + if (fields.length == 1) { + return Ui.NO_FIELD_TO_UPDATE; + } + if (fields[0].equalsIgnoreCase("name")) { + this.list.get(taskID - 1).setTaskName(fields[1]); + } else if (fields[0].equalsIgnoreCase("date")) { + this.list.get(taskID - 1).setTaskDate(fields[1]); + } else if (fields[0].equalsIgnoreCase("time")) { + this.list.get(taskID - 1).setTaskTime(fields[1]); + } + Storage.save(this); + return Ui.UPDATED_TASK + this.list.get(taskID - 1); + } + /** * Returns the size of this list. * @return the size of the list. @@ -91,6 +136,14 @@ public int getSize() { return this.list.size(); } + /** + * Checks if this list is empty + * @return a boolean if the list is empty. + */ + public boolean isEmpty() { + return this.list.isEmpty(); + } + /** * Returns this list. * @return the list. @@ -99,6 +152,27 @@ public ArrayList getList() { return this.list; } + /** + * Sorts this list by task name in natural order. + */ + public void sortName() { + this.list.sort((a,b) -> a.getTaskName().compareTo(b.getTaskName())); + } + + /** + * Sorts this list by task time in natural order. + */ + public void sortTime() { + this.list.sort((a,b) -> a.getTaskTime().compareTo(b.getTaskTime())); + } + + /** + * Sorts this list by task date in natural order. + */ + public void sortDate() { + this.list.sort((a,b) -> a.getTaskDate().compareTo(b.getTaskDate())); + } + @Override public String toString() { String output = ""; diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index 9ea00e76b2..df92cde9a2 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -7,10 +7,10 @@ public class Ui { static final String COMMAND_NOT_FOUND = "Oops! Command not found!"; static final String TASK_NEEDS_NAME = "Oops! This task needs a name!"; static final String TASK_NEEDS_DATE_TIME = "Oops! This task needs a date/time!"; - static final String WRONG_DATE_TIME_FORMAT = "Oops! The date/time needs to be DD/MM/YYYY HHMM (24hr) format!"; + static final String WRONG_DATE_TIME_FORMAT = "Oops! The date needs to be DD/MM/YYYY and time needs to be HHMM (24hr) format!"; static final String NO_TASK_FOUND = "Oops! Task not found in the list!"; static final String NO_TASK_IN_LIST = "Yay! There are no tasks in your list!"; - static final String DISPLAY_TASK_LIST = "Here are your tasks in your list:"; + static final String DISPLAY_TASK_LIST = "Here are all the tasks in your list:"; static final String DISPLAY_MATCHING_TASK_LIST = "Here are your tasks that matched your query:"; static final String NO_MATCHING_TASK_IN_LIST = "Oops! There are no tasks that matches your query!"; static final String CHANGES_SAVED = "Changes saved!"; @@ -18,7 +18,9 @@ public class Ui { static final String TASK_ALREADY_DONE = "Oops! This task was already marked as done!"; static final String ADDED_NEW_TASK = "New task has been added:\n "; static final String DELETED_TASK = "Removed this task:\n "; - static final String WELCOME_MESSAGE = "-------------------------------------\nWelcome! What can I do for you today?"; + static final String UPDATED_TASK = "Updated this task to:\n "; + static final String NO_FIELD_TO_UPDATE = "No field to update!"; + static final String WELCOME_MESSAGE = "Welcome to Duke! What can I do for you today?"; static final String EXIT_MESSAGE = "Thank you for using Duke.\nHave a nice day!\n"; public static void showLogo() { @@ -49,14 +51,14 @@ public static boolean askBeforeQuitting(Scanner scanner, TaskList tasklist) { } } - public static String processNextCommand(Scanner scanner, TaskList tasklist) { + public static String readNextCommand(Scanner scanner, TaskList tasklist) { System.out.print("> "); String input = scanner.nextLine().strip(); String[] command = Parser.parseInput(input); return Parser.processCommand(command, tasklist); } - public static String processNextCommand(String input, TaskList tasklist) { + public static String readNextCommand(String input, TaskList tasklist) { String[] command = Parser.parseInput(input.strip()); return Parser.processCommand(command, tasklist); } @@ -65,4 +67,55 @@ public static String taskCountMessage(int listSize) { return "\nNow you have "+ listSize + (listSize == 1 ? " task" : " tasks") + " in the list."; } + public static String displayUpcomingRange(int dayRangeUntil, TaskList upcomingDeadlines, TaskList upcomingEvents) { + if (upcomingDeadlines.isEmpty() && upcomingEvents.isEmpty()) { + return "You have no upcoming tasks for the next " + dayRangeUntil + " day(s)."; + + } else { + String output = ""; + if (upcomingDeadlines.isEmpty()) { + output = output + "You have no upcoming deadlines for the next " + dayRangeUntil + " day(s)!\n"; + } else { + upcomingDeadlines.sortTime(); + output = output + "Your upcoming deadlines in the next " + dayRangeUntil + " day(s):\n"; + output = output + upcomingDeadlines + "\n"; + } + + if (upcomingEvents.isEmpty()) { + output = output + "You have no upcoming events for the next " + dayRangeUntil + " day(s)!\n"; + } else { + upcomingEvents.sortTime(); + output = output + "Your upcoming events in the next " + dayRangeUntil + " day(s):\n"; + output = output + upcomingEvents + "\n"; + } + return output; + } + } + + public static String displayUpcomingDay(String targetDate, TaskList upcomingDeadlines, TaskList upcomingEvents) { + if (upcomingDeadlines.isEmpty() && upcomingEvents.isEmpty()) { + return "You have no upcoming tasks on " + targetDate; + + } else { + String output = ""; + if (upcomingDeadlines.isEmpty()) { + output = output + "You have no upcoming deadlines on " + targetDate + "!\n"; + } else { + upcomingDeadlines.sortTime(); + output = output + "Your upcoming deadlines on " + targetDate + ":\n"; + output = output + upcomingDeadlines + "\n"; + } + + if (upcomingEvents.isEmpty()) { + output = output + "You have no upcoming events on " + targetDate + "!\n"; + } else { + upcomingEvents.sortTime(); + output = output + "Your upcoming events on " + targetDate + ":\n"; + output = output + upcomingEvents + "\n"; + } + + return output; + } + } + } \ No newline at end of file From 0069c1e08572f43520ee88a371f4f08c57c86bea Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Fri, 21 Feb 2020 11:13:36 +0800 Subject: [PATCH 32/36] Added screenshot and minor code optimizations. --- build.gradle | 44 ++++++++++------- docs/Ui.png | Bin 0 -> 697010 bytes src/main/java/duke/Deadline.java | 6 +++ src/main/java/duke/Duke.java | 44 ++--------------- src/main/java/duke/Event.java | 6 +++ src/main/java/duke/Parser.java | 79 ++++++++++++++----------------- src/main/java/duke/Storage.java | 59 ++++++++++------------- src/main/java/duke/Task.java | 36 ++++++-------- src/main/java/duke/TaskList.java | 41 +++++++++------- src/main/java/duke/Todo.java | 6 +++ src/main/java/duke/Ui.java | 39 +-------------- 11 files changed, 149 insertions(+), 211 deletions(-) create mode 100644 docs/Ui.png diff --git a/build.gradle b/build.gradle index 74e20e7b23..5dbba1755d 100644 --- a/build.gradle +++ b/build.gradle @@ -12,9 +12,31 @@ repositories { mavenCentral() } +dependencies { + String javaFxVersion = '11' + + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' +} + +javafx { + version = "11.0.2" + modules = [ 'javafx.controls', 'javafx.fxml' ] +} + application { // Change this to your main class. - mainClassName = "duke.Duke" + mainClassName = "duke.Launcher" } run { @@ -28,20 +50,8 @@ shadowJar { archiveAppendix = null } -repositories { - mavenCentral() -} - -dependencies { - String javaFxVersion = '11' - - implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' -} - -javafx { - version = "11.0.2" - modules = [ 'javafx.controls', 'javafx.fxml' ] +jar { + manifest { + attributes 'Main-Class': 'Launcher' + } } \ No newline at end of file diff --git a/docs/Ui.png b/docs/Ui.png new file mode 100644 index 0000000000000000000000000000000000000000..e13789bffb33dd52950d08fcc03b182070107ce8 GIT binary patch literal 697010 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%0A;DA848k(bBogok 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%0DEO%$&>O+6 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⋘OV`l`n&@ovL~5#gzS9fZ)?lJ+)`%f^0 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 OPgqFQ!G`@OF8u@SGJQ_~ literal 0 HcmV?d00001 diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index 944e3e4fc4..1a09d9f4df 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -14,4 +14,10 @@ public class Deadline extends Task { public Deadline(boolean isDone, String taskName, String taskDateTime) { super('D', isDone, taskName, taskDateTime); } + + @Override + public String toString() { + return "[D] " + "[" + super.getDoneStatusUnicode() + "] " + + super.getTaskName() + " (by: " + super.getTaskDateTime() + ")"; + } } diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 26f733d378..d0b58b93f2 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,6 +1,5 @@ package duke; -import java.util.Scanner; import java.util.List; import java.util.ArrayList; @@ -30,45 +29,11 @@ public class Duke extends Application { private Image duke = new Image(this.getClass().getResourceAsStream("/images/DaDuke.png")); List log; - TaskList tasklist; + TaskList masterList; public Duke() { this.log = new ArrayList(); - this.tasklist = Storage.load(); - } - - public static void main(String[] args) { - run(); - } - - public static void run() { - Scanner scanner = new Scanner(System.in); - List log = new ArrayList(); - - Ui.showLogo(); - TaskList tasklist = Storage.load(); - System.out.println(""); - System.out.println(Ui.WELCOME_MESSAGE); - - boolean didNotExit = true; - while (didNotExit) { - String thisResult = Ui.readNextCommand(scanner, tasklist); - log.add(thisResult); - - if (thisResult.equals("exit")) { - if (log.isEmpty() || tasklist.getList().isEmpty()) { - didNotExit = false; - } else { - didNotExit = Ui.askBeforeQuitting(scanner, tasklist); - } - } else { - System.out.println(thisResult); - } - System.out.println(""); - } - - System.out.println(Ui.EXIT_MESSAGE); - scanner.close(); + this.masterList = Storage.load(); } @Override @@ -124,12 +89,13 @@ public void start(Stage stage) { Label welcomeMessage = new Label(Ui.WELCOME_MESSAGE); - Label startupUpcomingWeekView = new Label(Parser.upcomingCommand(new String[] {"upcoming", "7"}, this.tasklist)); + Label startupUpcomingWeekView = new Label(Parser.upcomingCommand(new String[] {"upcoming", "7"}, this.masterList)); dialogContainer.getChildren().addAll( DialogBox.getDukeDialog(welcomeMessage, new ImageView(duke)), DialogBox.getDukeDialog(startupUpcomingWeekView, new ImageView(duke)) ); + //Step 3. Add functionality to handle user input. sendButton.setOnMouseClicked((event) -> { handleUserInput(); @@ -183,7 +149,7 @@ private void handleUserInput() { * @return the result after processing the user input. */ private String getResponse(String input) { - return Ui.readNextCommand(input, this.tasklist); + return Ui.readNextCommand(input, this.masterList); } diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index 5e42d58fbc..95d7d80fc6 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -14,4 +14,10 @@ public class Event extends Task { public Event(boolean isDone, String taskName, String taskDateTime) { super('E', isDone, taskName, taskDateTime); } + + @Override + public String toString() { + return "[E] " + "[" + super.getDoneStatusUnicode() + "] " + + super.getTaskName() + " (at: " + this.getTaskDateTime() + ")"; + } } diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 30b47bd838..cc4c8cfead 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -12,18 +12,18 @@ import java.util.HashSet; public class Parser { - static HashSet commandList = new HashSet( + static final HashSet commandList = new HashSet( List.of("todo", "event", "deadline", "list", "done", "delete", "find", "update", "upcoming", "view", "save", "exit")); - + static final LocalDate TODAY = LocalDate.now(); /** * Analyzes the user input and splits them into a String array: * - Index 0 contains the action that the program should take. - * - Index 1 contains the message tagged to the program, if applicable. - * - Index 2 contains the date/time tagged to the program, if applicable. + * - Index 1 contains the argument tagged to the action, if applicable. + * - Index 2 contains the date/time tagged to the action, if applicable. * @param input the original user input * @return a String array containing a segmentized version of the user input for processing. */ @@ -128,10 +128,8 @@ public static String eventCommand(String[] command, TaskList tasklist) { return "Oops! Unable to write to file due to " + e + "!"; } - } else if (command.length == 2) { - return Ui.TASK_NEEDS_DATE_TIME; } else { - return Ui.TASK_NEEDS_NAME; + return (command.length == 2) ? Ui.TASK_NEEDS_DATE_TIME : Ui.TASK_NEEDS_NAME; } } @@ -150,15 +148,16 @@ public static String deadlineCommand(String[] command, TaskList tasklist) { } catch (IOException e) { return "Oops! Unable to write to file due to " + e + "!"; } - } else if (command.length == 2) { - return Ui.TASK_NEEDS_DATE_TIME; } else { - return Ui.TASK_NEEDS_NAME; + return (command.length == 2) ? Ui.TASK_NEEDS_DATE_TIME : Ui.TASK_NEEDS_NAME; } } /** - * Lists the number of Tasks present in the TaskList. + * Lists the number of Tasks present in the TaskList, with either 0 or 1 argument. + * If no argument is present or the argument is "all", displays all available Tasks. + * If the argument is either "todo", "deadline" or "event", displays only Todo, Deadline, + * or Event Tasks respectively. * @param tasklist the target TaskList. * @return a message displaying the number of tasks in the list. */ @@ -174,19 +173,10 @@ public static String listCommand(String[] command, TaskList tasklist) { query.tempAdd(t); } } - if (query.isEmpty()) { - return Ui.NO_MATCHING_TASK_IN_LIST; - } else { - return Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query; - } - } - - if (tasklist.isEmpty()) { - return Ui.NO_TASK_IN_LIST; - } else { - return Ui.DISPLAY_TASK_LIST + "\n" + tasklist; + return query.isEmpty() ? Ui.NO_MATCHING_TASK_IN_LIST : (Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query); } + return tasklist.isEmpty() ? Ui.NO_TASK_IN_LIST : (Ui.DISPLAY_TASK_LIST + "\n" + tasklist); } /** @@ -237,11 +227,7 @@ public static String findCommand(String[] command, TaskList tasklist) { query.tempAdd(thisTask); } } - if (query.isEmpty()) { - return Ui.NO_MATCHING_TASK_IN_LIST; - } else { - return Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query; - } + return query.isEmpty() ? Ui.NO_MATCHING_TASK_IN_LIST : (Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query); } /** @@ -283,17 +269,13 @@ public static String upcomingCommand(String[] command, TaskList tasklist) { } try { - LocalDate TODAY = LocalDate.now(); TaskList upcomingEvents = new TaskList(); TaskList upcomingDeadlines = new TaskList(); int dayRangeUntil = Integer.parseInt(command[1]); - for (Task t : tasklist.getList()) { - if (!t.getTaskDate().isBefore(TODAY) && t.getTaskDate().compareTo(TODAY) <= dayRangeUntil) { - if (t instanceof Event) { - upcomingEvents.tempAdd(t); - } else if (t instanceof Deadline && !t.getDoneStatus()) { - upcomingDeadlines.tempAdd(t); - } + + for (Task task : tasklist.getList()) { + if (taskDateIsInRange(task, dayRangeUntil) && !(task instanceof Todo)) { + populate(task, upcomingEvents, upcomingDeadlines); } } @@ -315,9 +297,9 @@ public static String viewCommand(String[] command, TaskList tasklist) { LocalDate targetDate; if (command[1].equals("today")) { - targetDate = LocalDate.now(); + targetDate = TODAY; } else if (command[1].equals("tomorrow")) { - targetDate = LocalDate.now().plusDays(1); + targetDate = TODAY.plusDays(1); } else { targetDate = LocalDate.parse(command[1], Task.DATE_FORMATTER); } @@ -325,13 +307,9 @@ public static String viewCommand(String[] command, TaskList tasklist) { TaskList upcomingEvents = new TaskList(); TaskList upcomingDeadlines = new TaskList(); - for (Task t : tasklist.getList()) { - if (t.getTaskDate().equals(targetDate)) { - if (t instanceof Event) { - upcomingEvents.tempAdd(t); - } else if (t instanceof Deadline && !t.getDoneStatus()) { - upcomingDeadlines.tempAdd(t); - } + for (Task task : tasklist.getList()) { + if (task.getTaskDate().equals(targetDate) && !(task instanceof Todo)) { + populate(task, upcomingEvents, upcomingDeadlines); } } @@ -357,4 +335,17 @@ public static String saveCommand(TaskList tasklist) { } } + + public static boolean taskDateIsInRange(Task t, int dayRangeUntil) { + return !t.getTaskDate().isBefore(TODAY) && t.getTaskDate().compareTo(TODAY) <= dayRangeUntil; + } + + public static void populate(Task task, TaskList upcomingEvents, TaskList upcomingDeadlines) { + if (task instanceof Event) { + upcomingEvents.tempAdd(task); + } else if (task instanceof Deadline && !task.isDone()) { + upcomingDeadlines.tempAdd(task); + } + } + } diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 9511303650..6d3c0fc44a 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -14,8 +14,9 @@ import java.io.File; public class Storage { - static File savedData = new File("data/duke.txt"); - static File thisLoc = new File(System.getProperty("user.dir") + "/data"); + static final File savedData = new File("data/duke.txt"); + static final File thisLoc = new File(System.getProperty("user.dir") + "/data"); + static final String delimiter = " ~ "; /** * This method handles loading of an existing data file stored in the directory 'data', where the program is @@ -28,48 +29,40 @@ public static TaskList load() { TaskList tasklist = new TaskList(); try { - if (thisLoc.mkdir()) { - System.out.println("No save directory found.\n" + - "Creating new directory at " + thisLoc.toString() + " ..."); - } + // Checks if the directory exists, and creates it if it does not exist. + thisLoc.mkdir(); - if (savedData.createNewFile()) { - System.out.println("No save file found.\n" + - "Creating new file 'duke.txt' ..."); - } + // Checks if the file exists, and creates it if it does not exist. + savedData.createNewFile(); - FileReader fr = new FileReader(savedData); - BufferedReader br = new BufferedReader(fr); + BufferedReader reader = new BufferedReader(new FileReader(savedData)); System.out.println("Loading file 'duke.txt'... "); while (true) { try { - String line = br.readLine(); + String line = reader.readLine(); if (line == null) { break; } - String[] taskContent = line.split(" ~ "); - boolean isDone = false; - if (taskContent[1].equals("1")) { - isDone = true; - } + + String[] taskContent = line.split(delimiter); + boolean isDone = taskContent[1].equals("1"); if (taskContent[0].equals("T")) { tasklist.newTodo(isDone, taskContent[2]); - } else { - if (taskContent[0].equals("D")) { - tasklist.newDeadline(isDone, taskContent[2], taskContent[3]); - - } else if (taskContent[0].equals("E")) { - tasklist.newEvent(isDone, taskContent[2], taskContent[3]); - } + } else if (taskContent[0].equals("D")) { + tasklist.newDeadline(isDone, taskContent[2], taskContent[3]); + } else if (taskContent[0].equals("E")) { + tasklist.newEvent(isDone, taskContent[2], taskContent[3]); } + } catch (IOException e) { System.out.println("Oops! Unable to read save file due to " + e + "!"); break; } } + reader.close(); } catch (Exception e) { System.out.println("Oops! Unable to create or load save file due to " + e + "!"); @@ -84,17 +77,17 @@ public static TaskList load() { * @param tasklist the TaskList object to parse into the data file. */ public static void save(TaskList tasklist) throws IOException { - FileWriter fw = new FileWriter(savedData); - BufferedWriter bw = new BufferedWriter(fw); + BufferedWriter writer = new BufferedWriter(new FileWriter(savedData)); + String delimiter = " ~ "; for (Task thisTask : tasklist.getList()) { - String taskStr = thisTask.getTaskType() + " ~ " - + (thisTask.getDoneStatus() ? "1" : "0") + " ~ " - + thisTask.getTaskName() + " ~ " - + (thisTask.getTaskType() == 'T' ? "" : thisTask.getTaskDateTime()) + "\n"; - bw.write(taskStr); + String taskStr = thisTask.getTaskType() + delimiter + + (thisTask.isDone() ? "1" : "0") + delimiter + + thisTask.getTaskName() + delimiter + + (thisTask instanceof Todo ? "" : thisTask.getTaskDateTime()) + "\n"; + writer.write(taskStr); } - bw.close(); + writer.close(); } } diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index 694e762d6b..458569126d 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -14,29 +14,37 @@ abstract class Task { private char taskType; private boolean isDone; private String taskName; - private LocalDate taskDate; private LocalTime taskTime; - static DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("d/M/yyyy"); - static DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmm"); + static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("d/M/yyyy"); + static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmm"); /** * Constructor for a new generic Task object. * @param taskType defines the type of this Task. * @param isDone whether the Task is done. * @param taskName the name of the Task. - * @param taskDateTime the given date-time of the Task. + * @param taskDateTime the given date and/or time of the Task. * @throws DateTimeParseException if the date or time provided is in the wrong format. */ public Task(char taskType, boolean isDone, String taskName, String taskDateTime) throws DateTimeParseException { this.taskType = taskType; this.isDone = isDone; this.taskName = taskName; - this.taskDate = LocalDate.EPOCH; this.taskTime = LocalTime.MAX; + parseDateTime(taskDateTime); + + } + + /** + * Parses the date and time given and stores it in the object. + * @param taskDateTime the given date and/or time of the Task. + * @throws DateTimeParseException if the date or time provided is in the wrong format. + */ + public void parseDateTime(String taskDateTime) throws DateTimeParseException { if (!taskDateTime.isEmpty()) { String[] dateTime = taskDateTime.split(" "); this.taskDate = LocalDate.parse(dateTime[0], DATE_FORMATTER); @@ -50,7 +58,7 @@ public Task(char taskType, boolean isDone, String taskName, String taskDateTime) * Returns if this Task is done. * @return the status of the Task. */ - public boolean getDoneStatus() { + public boolean isDone() { return isDone; } @@ -140,20 +148,4 @@ public String markDone() { this.isDone = true; return Ui.MARKED_AS_DONE + this; } - - - @Override - public String toString() { - if (this.taskType == 'T') { - return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName; - - } else if (this.taskType == 'D') { - return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (by: " + this.getTaskDateTime() + ")"; - - } else if (this.taskType == 'E') { - return "[" + taskType + "] " + "[" + getDoneStatusUnicode() + "] " + this.taskName + " (at: " + this.getTaskDateTime() + ")"; - } else { - return ""; - } - } } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 987f00c33f..f953505a92 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -18,6 +18,8 @@ public TaskList() { this.list = new ArrayList(); } + + /** * Adds a new Task to this TaskList and saves the changes to the data file. * @param task the new Task to be added into this list. @@ -47,8 +49,7 @@ public void tempAdd(Task task) { * @throws IOException if the changes are unable to be saved into the data file. */ public String newTodo(boolean isDone, String taskName) throws IOException { - Task task = new Todo(isDone, taskName); - return this.add(task); + return this.add(new Todo(isDone, taskName)); } /** @@ -60,8 +61,7 @@ public String newTodo(boolean isDone, String taskName) throws IOException { * @throws IOException if the changes are unable to be saved into the data file. */ public String newEvent(boolean isDone, String taskName, String taskDateTime) throws IOException { - Task task = new Event(isDone, taskName, taskDateTime); - return this.add(task); + return this.add(new Event(isDone, taskName, taskDateTime)); } /** @@ -73,8 +73,7 @@ public String newEvent(boolean isDone, String taskName, String taskDateTime) thr * @throws IOException if the changes are unable to be saved into the data file. */ public String newDeadline(boolean isDone, String taskName, String taskDateTime) throws IOException { - Task task = new Deadline(isDone, taskName, taskDateTime); - return this.add(task); + return this.add(new Deadline(isDone, taskName, taskDateTime)); } /** @@ -117,23 +116,29 @@ public String updateTask(int taskID, String parameter) throws IndexOutOfBoundsEx if (fields.length == 1) { return Ui.NO_FIELD_TO_UPDATE; } + + Task targetTask = this.list.get(taskID - 1); + if (fields[0].equalsIgnoreCase("name")) { - this.list.get(taskID - 1).setTaskName(fields[1]); + targetTask.setTaskName(fields[1]); + } else if (fields[0].equalsIgnoreCase("date")) { - this.list.get(taskID - 1).setTaskDate(fields[1]); + if (targetTask instanceof Deadline || targetTask instanceof Event) { + targetTask.setTaskDate(fields[1]); + } else { + return Ui.CANNOT_SET_DATE_TIME_TO_TODO; + } + } else if (fields[0].equalsIgnoreCase("time")) { - this.list.get(taskID - 1).setTaskTime(fields[1]); + if (targetTask instanceof Deadline || targetTask instanceof Event) { + targetTask.setTaskTime(fields[1]); + } else { + return Ui.CANNOT_SET_DATE_TIME_TO_TODO; + } + } Storage.save(this); - return Ui.UPDATED_TASK + this.list.get(taskID - 1); - } - - /** - * Returns the size of this list. - * @return the size of the list. - */ - public int getSize() { - return this.list.size(); + return Ui.UPDATED_TASK + targetTask; } /** diff --git a/src/main/java/duke/Todo.java b/src/main/java/duke/Todo.java index c36d17f3c4..90d3346c5c 100644 --- a/src/main/java/duke/Todo.java +++ b/src/main/java/duke/Todo.java @@ -13,4 +13,10 @@ public class Todo extends Task { public Todo(boolean isDone, String taskName) { super('T', isDone, taskName, ""); } + + @Override + public String toString() { + return "[T] " + "[" + super.getDoneStatusUnicode() + "] " + + super.getTaskName(); + } } diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index df92cde9a2..0707dec822 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,7 +1,5 @@ package duke; -import java.util.Scanner; - public class Ui { static final String COMMAND_NOT_FOUND = "Oops! Command not found!"; @@ -20,43 +18,8 @@ public class Ui { static final String DELETED_TASK = "Removed this task:\n "; static final String UPDATED_TASK = "Updated this task to:\n "; static final String NO_FIELD_TO_UPDATE = "No field to update!"; + static final String CANNOT_SET_DATE_TIME_TO_TODO = "Cannot set date or time to todo!"; static final String WELCOME_MESSAGE = "Welcome to Duke! What can I do for you today?"; - static final String EXIT_MESSAGE = "Thank you for using Duke.\nHave a nice day!\n"; - - public static void showLogo() { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println(logo); - } - - public static boolean askBeforeQuitting(Scanner scanner, TaskList tasklist) { - System.out.println("Save before Quitting?\nY: Save Changes\nN: Discard Changes\n" + - "Press any other key to Cancel and Return"); - String choice = scanner.nextLine(); - - if (choice.equalsIgnoreCase("Y")) { - try { - Storage.save(tasklist); - System.out.println(CHANGES_SAVED); - } catch (Exception e) { - System.out.println("Oops! Unable to write to file due to " + e + "!"); - } - - return false; - } else { - return !(choice.equalsIgnoreCase("N")); - } - } - - public static String readNextCommand(Scanner scanner, TaskList tasklist) { - System.out.print("> "); - String input = scanner.nextLine().strip(); - String[] command = Parser.parseInput(input); - return Parser.processCommand(command, tasklist); - } public static String readNextCommand(String input, TaskList tasklist) { String[] command = Parser.parseInput(input.strip()); From 9e42c7353ded3fb36af04c7f09127a4e3a7baac9 Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Mon, 24 Feb 2020 12:51:38 +0800 Subject: [PATCH 33/36] Updated README.md --- config/checkstyle/checkstyle.xml | 2 +- docs/README.md | 182 +++++++++++++++++++++++++++++-- src/main/java/Deadline.class | Bin 268 -> 0 bytes src/main/java/Duke.class | Bin 1318 -> 0 bytes src/main/java/Event.class | Bin 262 -> 0 bytes src/main/java/Parser.class | Bin 4630 -> 0 bytes src/main/java/Storage.class | Bin 3492 -> 0 bytes src/main/java/Task.class | Bin 3102 -> 0 bytes src/main/java/TaskList.class | Bin 2436 -> 0 bytes src/main/java/Todo.class | Bin 249 -> 0 bytes src/main/java/Ui.class | Bin 3653 -> 0 bytes 11 files changed, 175 insertions(+), 9 deletions(-) delete mode 100644 src/main/java/Deadline.class delete mode 100644 src/main/java/Duke.class delete mode 100644 src/main/java/Event.class delete mode 100644 src/main/java/Parser.class delete mode 100644 src/main/java/Storage.class delete mode 100644 src/main/java/Task.class delete mode 100644 src/main/java/TaskList.class delete mode 100644 src/main/java/Todo.class delete mode 100644 src/main/java/Ui.class diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index b1a57ba6c0..7367de08a3 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -254,4 +254,4 @@ - + \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index fd44069597..e9f0e8a891 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,20 +1,186 @@ # User Guide +Welcome to Duke! + +Duke is a handy to-do list app that also allows you to keep track of your upcoming deadlines and events. ## Features -### Feature 1 -Description of feature. +### Create a to-do task +Adds a to-do item to your list. +#### Usages: +#### `todo [task_name]` + +Creates a to-do item in your to-do list. + +Example of usage: + +* `todo Buy Eggs` + + Expected outcome: Adds `Buy Eggs` to the to-do list. + + + +### Create a deadline task +Adds an item with a deadline to your list. +#### Usages: +#### `deadline [task_name] /by [dd/m/yyyy] [hhmm]` + +Creates a deadline item in your to-do list. The `[hhmm]` time field can be excluded. + +Example of usage: + +* `deadline Finish Homework /by 26/2/2020` + + Expected outcome: Creates the task `Finish Homework` with the deadline on 26/2/2020 at the default time 11:59pm. + +* `deadline Finish Project /by 23/10/2020 1400` + + Expected outcome: Creates the task `Finish Project` with the deadline on 23/10/2020 at 2pm. + + + +### Create an event +Adds an event to your list. +#### Usages: +#### `event [task_name] /at [dd/m/yyyy] [hhmm]` + +Creates an event item in your to-do list. + +Example of usage: + +* `event Project Meeting /at 23/2/2020 1500` + + Expected outcome: Creates the event `Project Meeting` on 23/2/2020, 3pm. + + + +### List tasks +You can view your full list, or specifically +#### Usages: +#### `list [type]` + +Views all items of the specified type in your to-do list. + +Example of usage: + +* `list` +* `list all` + +Lists all items regardless of type. + +* `list todo` +* `list deadline` +* `list event` -## Usage +Lists todo, deadline, or event items respectively. -### `Keyword` - Describe action -Describe action and its outcome. + +### Mark a task as done +Mark any task as done. +#### Usages: +#### `done [position]` + +Mark the task at the specific position in your full list as done. Example of usage: -`keyword (optional arguments)` +* `done 3` + + Marks the 3rd task in your full list as done. + + + +### Delete a task +Delete any task from your list. +#### Usages: +#### `delete [position]` + +Deletes the task at the specific position in your full list + +Example of usage: + +* `delete 3` + + Deletes the 3rd task in your full list. + + + +### Find a task +Delete any task from your list. +#### Usages: +#### `find [keyword]` + +Finds all tasks that matches your specified keyword. + +Example of usage: + +* `find Homework` + + Finds all tasks that contains the keyword 'Homework'. + + + +### Update a task +Update the fields of any task. +#### Usages: +#### `update [position] [field], [keyword]` + +Updates the specified field of the event at the position to your new keyword. + +Example of usage: + +* `update 1 name, Finish Homework` + + Updates the name of the 1st item in your list to `Finish Homework`. + +* `update 4 time, 1500` + + Updates the time of the 4th item in your list to `1500`. + + + +### View an overview of your tasks over a specified period +You can see your upcoming deadlines and events up to a specified number of days. +#### Usages: +#### `upcoming [number_of_days]` + +Views a list of deadlines and events happening from your system date to your specified number of days. + +Example of usage: + +* `upcoming 4` + + Lists all your deadlines and events happening for the next 4 days. + +* `upcoming tomorrow` + + List all your deadlines and events happening for the next 2 days. + + + +### View an overview of your tasks on a specific date +You can see your upcoming deadlines and events at a specific date. +#### Usages: +#### `view [date]` + +Views a list of deadlines and events happening at your specified date. + +Example of usage: + +* `view 26/2/2020` -Expected outcome: + List all your deadlines and events happening on 26/2/2020. + +* `view today` -`outcome` + List all your deadlines and events happening for the day. + + + + ### Save your data + While each function automatically saves your data for you, you can also manually save the data yourself. + #### Usages: + #### `save` + + Saves your data to the data file `duke.txt`. \ No newline at end of file diff --git a/src/main/java/Deadline.class b/src/main/java/Deadline.class deleted file mode 100644 index 401a234bc058b99a5cbc520af50b2f5334d536f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmX^0Z`VEs1_lcTJ}w4k1}=66ZgvJ9Mg}&U%)HDJJ4OZ#jVPb2#Ii*FoW#6z{osmbD1Og2$_)!XqNr6WEz}nPmOQ}{vN)0X2YV{C~=_yH0OinC} zw_fN^pnsru&d5cecE%szPjVdV+DY3`WyV~bz4l&fz3biYT04LI{oC)rSsaTKOl#hV zktSmi;hqTgzi+$){|id}APxn~T9 z%^2f~WCyPmc$I9i;9{fU?Bu;>p!vk+D&v|@Z9XG!vrNI} z8Y`OXHlI_pS>=Y!P1c0GyX^%wU$ADg&MlkUd};F)cNExs&5F%8hDyY6Qw;TPcx~gJ zTMC535!Y5Eddv(dMgOYP-0GT#K)N!$fLq*Y25wamGNPusl6rpjYOUT1B;0kXImL}?AS@3hOXa$Os+em$rTg#ENR-{6;BE(tezoeP zDjs$=CG&+6-QMIfw`7Xl?^;f!DQvvvQneoJbmmzcT55Ouaa;uHwd?sHi8e{;*(LW| zzu{hQc|jl(t(f>9iUJ)sL-ky-XsO~iU3qoK<@uUl2xaD5zAwq{64X4~a>@t71#2N)ncH`1vuR^*zG-MDmY`uJ6;ge1JZnzpzJa535Z)vJgo{b}7!x z9blh}&W=SNF%V*HEIOQMGq}t2>?4L04;YwhlWa4*ODwz)c}U8nj2J5}Xk$?UlXdu* ztPh|3(kYM;C|; CwJK!* diff --git a/src/main/java/Event.class b/src/main/java/Event.class deleted file mode 100644 index 2ed521c98113e27d4058cd0cc802772e9f9e8a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmX^0Z`VEs1_lcTJ}w4k1}=66ZgvJ9Mg}&U%)HDJJ4OZ#jVPb2#Ii*FoW#6z{osadKegZ88{jEfT}rwY$gUy00h=KC;$Ke diff --git a/src/main/java/Parser.class b/src/main/java/Parser.class deleted file mode 100644 index 600eb934efe4bcb29a58213760a1e4586c666dd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4630 zcmd5=d3YPe75}XzdDqhV$U064hvPtKY*~quPy)fhK%BU7YCCCU2o6x#NNZcMyep)2 z4$eZM2W_EuNm`D!DYTp-fO3I>LTO76j^6aX@4NK+O55MtUE4Boq5ZG=zIik6&CGjm z-Zis&>Ys8d6b&kyc?zKd50y!?1>oVA}+YRADW$QLM(Optc4_`kaP~ zHRLrEG`JeZG;G(fL&MG}m+umAiGWK5TqfXh0apmPQotLka22kOVj12jqibYzt%^4Z z@@4^V5z1QyTqo$;1iam#>hFx=U3j-lyhp`*h5SB2-ml^V(r*=TV-&lwCx#2~K>;69 zaZ?nh;AYYM7FlqsEcmc&{)m8&MzI$klhJJ|Za1Ld6DsbA;ZEEoC%;?8Ju2>15KB3u zqo$qi$rM}#^*!6n?PlAUo5{AVGYi8>%WYRsmCOv;raP9m6f8P&#VVhaHSM9cq?^y! zL+u^hRk!Y?>Dz*Nr~pne8K9rb7NFsQS*_^ zTFyI?rl30MnyHaqGv~2UQB+Wq%R4EnQ0VlJq+nU|3|o8p&BBNrx4mU1zA@KHJChuA zYrAE;lW1+)GSgX}V3HEclG7yC*!)V|(@xpu>a>-$+%jf^89N;?Q*j@?Q!uwrO>3)C zlh(q+ASVhNS98eJPY@$G$Fb1c^3hd-`^t^v8;&L8# zate0V&Wx+$Z1n3mN5EzQ=VCy|78#u<;CunE$AF55bUci49gpBq9goTAlX#pF;vLA% zj9P7jPJYyM+t!$_)lb~B!rGlFE9Yh$TgMZ!=Ticn#N#?XjYB#-})&XCS_{)nW+171+%=_^1M~?3mw12uOuLTO`rHNGA$rBY~5z1BZSr%ZQq#-$hl=gnO*!OO_cp6O)D%}fUNoM~Gp z0-ifnhF71pliD-77}#OkL#7955RUW+eIQ!-0l~YZ$Jt@!JIw;U5;D__zN7ssV&=<7 z%@o#-=3Lg~*|yVbx~XB_rsb}j8@RH3&Of`FWP+MQlv7=P3GwFDQ^UNPtwNGjm&9~91U&q^XdNG9S*x(n-`HMev57Q1Lb$)N ze^<_$VR?CdpQxN=Oas}SW;UB-D735ii-HsXgNW(6DQJB8by&csaTg!C%r<#cuH_ll}D&$m?z(~53#ri(040q zIq0qENR&{0CwJl**lca zJ7Ls&*qJJ^_JlFp!Z+NT+kMm%okmna^x#B)Fd5yb$ z_pCrQ$BP+EOO&IqRB6OX%0jGA;#jG)VU=<+&QRL1S~&}Al`gDP)?>ZW$AA;J%}2wF z7*-Khs=Z%LO>9{t5(!HS{f*A6lE-QgbgSsf3T~>8kB9d{ZwJ&XcJjv`NLna1{mfmHkSB7yS={FQwqiDfkKszLJ8k zqTs73_?jaG^JO0h?x5R_;nWgVda<>VMQb;r2_c@g`SyQ3%c8-Z?YqT*t7yQ}6E88~@m|^;CVYtD z@-Y7s8OIsqyqe!nJ^Xyy$dV#PtwZ=l)Tvme;({fAM@2O)!EdfWW2w;+>2>h~=-7ud ziao7|aF#eqe5jK9nbYk1G_Cv$sn3$ja}#!0r*f5s3n%OQnRKcAnhs<2fKg-A8M6$- zs5fRC4aOW}?g4b}$C~>QyN_!WuT1#K6vG@Q_k8XS;Udmez{DTfN4e_vcmaQ4U494g O8qQo#+6^B3_`d;}q=|U| diff --git a/src/main/java/Storage.class b/src/main/java/Storage.class deleted file mode 100644 index 58f27d182e854fd8d5f0cee66fa127ab87dd2348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3492 zcma)9`&S(08Gb(4Wrkr0WD}B-NL+H`79b%SO^8-Qh|<84${IqVwv*ifHY_un*;x{L z(OTQui`Hs-3Ds76-QH{!+r>a@ZEb66dik~IcuxBV^z`@k9F;!b%r5N8o}6$F-{pP3 z@4Y?m`_8v-y|?%pfZOqR4Tlg>Fsz{hk!l>o2@U)4;cDE65xI(ncbud(%m2*r*Tth!h72|TAP%$Y*Csdr1^OTCDoTn97Aqb=toDXrI zR^V!Amhv(hc3?&xx}f1AW@|8jkICWV3O=Es4WE?5!zvz;^QTliD(6p!P>IjTtDlv_ z=M+4y;`7qlFR1vUMt8mxLI9@}JgMNz0@Z0_#*7~|Tti^p;5lQ)=uX((#}Y}iS3q$m z6X`)aCQx-aVI|x<1u9$HP6`D2?6@gVH<+-@NM`!1=|qjQNm2qy+lUM3t!;x*BRw^k zNV}9%JK`F#sUaifol@|Wg0JwbR83~<>e0573Z53w`Y*=Jl$)@vw19dzmdq>HM(m6e zGo^LZG2+^eF=2K|qjlVg5Atk5sg65vSjRKCq~NPMzJ{;s_y#Tu)E}{JH|;t`YRGga z?RdJb3UeyHspDBZr{G&UzK!Q~^vc^W;F7>C5j!jm4Ubc6c-+od@vd;6V;XM4nh0Cw z1)tFp&rF$J?nSpH+||`35GoGkeWnpN9cklt1U3~oM>6B%renrex!)DoI>-P@$)37Z zsT3O4@jdB6W%yw(zmFdXh%IWgYW)MZqt1{0cc83%I1?Ra_z15*Zzf zSkm!p8CS7a$8V%N(D52BtN5+d`MQqZ$@u?XqNx`w_W`esGfTS*ahB?yC*qm3>2$>t zjP4tFPQ@RXwfV##*q#8-x#6?t%$Qq38gU&4njtvj=e>8%Co*S!05fhP**!qF4JMmF zaC(ZWyec?dDr+|Fn$u+187gU5DWnrr;Zmk)OjD-n+6AQ>Ss|;|<+W<~BmN|Cdm-hh zi$>edY}ve9sozfOekaon?RB63~EYx zlC5Ne0>F_gy;9~?Ksq$uzs#x(hbT{Izg>jWF=%D*OXytQvFsy9L@ zi%al=?3YaGSkg}Cm7j3zl)aW^!0La&E#eHAGv!CE1opdJN=8j*LA7nq6}-9)o+sdBMW^cQ`y@A_cPYxd#&El}fY4kV^c}`=Xirg*aZu7WX zJ#MIkd(&uk`SA#i=v>4$&+05Hv#1{=sbdjgkJSDW--*LGg=>t|8C>;d6>sC8xS6q) zp_(BF*h0^nu%42(Gxi-E_hT31yc_qRg%Uat#U9G(q?B&NuovUl2M0aK;8r|}19*z> z>t~7Di^S^+k-EyzUn5R`VetP!O>g5~YCVR3QR2VxAsnUFz0lvmb_Esn?_#ThS_O6Q zphiLeyJ%E!Of)wA7h8@fX!;-OINhuh(0eGS!UOcSJfO}JntgP(6P+Crot;DNIqb?| zcck+QS_I~BoQqb0*U@$;&`8|d<95C)I`va zuawdqOcnXpyoCK@p<5Pk>nqT_^?_G$+alrRLyxq;YMIHOEucUh^}IaDbp?j-7H5st dUnTZ`MkDU$K1{4mk~Zp%wl_N7_?S07@qb$ma?$_* diff --git a/src/main/java/Task.class b/src/main/java/Task.class deleted file mode 100644 index 8f0420666b149d97c51d7ed6bf19f6e89b9475d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3102 zcmbVOXG(Evhau?4lRbqE6tBr`D?sIj%X-B+!3 zscmU%AHVd2^(oYc5B&lC8T}!(@0|%D81(5=mUHes_uTiKdzO3WuYYF#1h5;wgs={+ zK{TRGl6FZBhOiACL2O57h|?FO?2w8sDeew)+lwk*3ZW1EA?h4aaa6@IIeb}?B}Bg{>f?;GBT!=((}} ze8vzE34uy8*J@jGa-y)-qo+9yca7>3dOW3D!|^^RYg)rCvwKasUhAzpoW#5Aq@HTk z9iyK!s#WeYEz@~cAR0-WD90(6M2`yi6ZRl+tGZ0f=owEB7}a)kQNu%AAXAVlp zEiwZdnlYhaJvM0Ah)o(Ih-!EhyEU9glZGAGsUe0YCa^(69vA5R0o!(RPFBx!8_tM5 zn5(M9YbsvXa1n1Xo`do3c%DBE9UbYkf;Tn1g|{`lgLirSzi(Y}>2(e7;gW{;CHX*- z4<-2smlS-g;S+qS;xmc(xr#3&|5CwM8ZJxkt{|%7Ybm^{VGs7I_(o2yX?Rvn2z?PZ zRNNF`A^YV~>GWK=^$v_0Nv5SlG#jLqu2y-`32d5M8M3o!-HFc@Y@cy%+^~{HOOy@z zEpD;!MZ@+TyY>jIOzUGt!nTsSbIf!`ILbM?9O8$2;mn_0dv_T-@tBV)Dk47wZ00*3bv@URN)X z4Q>p|!uA9{iQZfq+yX?G)L9ricv75hkpJAeCz2??d&(sX`na@+(-0ZR?`;rKfkXcd z?|)d(9ce+qce2NS6j(o(G1Ho`$Be>b;`K(mo^G4pP2Cq|%+8W^YUCg`jn(A-8O9HH-KEw^)Rrz$rG5ra&MvntxZJ?y@Y=aZ)YBng zl%+mKf75Iin{uG*4hE8`nWVn9-`CV<0t&UAog(HOrT!M4!iUf Qm+CGZa;fRkluNCD0UtKhHUIzs diff --git a/src/main/java/TaskList.class b/src/main/java/TaskList.class deleted file mode 100644 index d4af368d69436eb1b3ec002f7f397a155a73ba40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2436 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 R^l_Q}9;UrOT{(GQ`!^WvsTBYK From 1b318cbe4d90e1d6c4f3ee4a7959bf68b259f42e Mon Sep 17 00:00:00 2001 From: Xavier Lee Date: Tue, 25 Feb 2020 18:15:47 +0800 Subject: [PATCH 34/36] Updated Code Quality --- docs/README.md | 12 +- src/main/java/duke/Deadline.java | 4 +- src/main/java/duke/DialogBox.java | 57 ++-- src/main/java/duke/Duke.java | 139 +--------- src/main/java/duke/Event.java | 4 +- src/main/java/duke/Launcher.java | 2 +- src/main/java/duke/Main.java | 34 +++ src/main/java/duke/MainWindow.java | 63 +++++ src/main/java/duke/Parser.java | 334 +++++++++++++++--------- src/main/java/duke/Storage.java | 38 ++- src/main/java/duke/Task.java | 39 +-- src/main/java/duke/TaskList.java | 67 ++--- src/main/java/duke/Todo.java | 4 +- src/main/java/duke/Ui.java | 76 +++--- src/main/resources/view/DialogBox.fxml | 16 ++ src/main/resources/view/MainWindow.fxml | 19 ++ 16 files changed, 498 insertions(+), 410 deletions(-) create mode 100644 src/main/java/duke/Main.java create mode 100644 src/main/java/duke/MainWindow.java create mode 100644 src/main/resources/view/DialogBox.fxml create mode 100644 src/main/resources/view/MainWindow.fxml diff --git a/docs/README.md b/docs/README.md index e9f0e8a891..aa7839db6a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -178,9 +178,9 @@ Example of usage: - ### Save your data - While each function automatically saves your data for you, you can also manually save the data yourself. - #### Usages: - #### `save` - - Saves your data to the data file `duke.txt`. \ No newline at end of file +### Save your data +While each function automatically saves your data for you, you can also manually save the data yourself. +#### Usages: +#### `save` + +Saves your data to the data file `duke.txt`. \ No newline at end of file diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index 1a09d9f4df..3268428a9f 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -4,6 +4,8 @@ package duke; +import java.time.LocalDateTime; + public class Deadline extends Task { /** * Constructor for a new Deadline object. @@ -11,7 +13,7 @@ public class Deadline extends Task { * @param taskName the name of the Task. * @param taskDateTime the end time of the Task. */ - public Deadline(boolean isDone, String taskName, String taskDateTime) { + public Deadline(boolean isDone, String taskName, LocalDateTime taskDateTime) { super('D', isDone, taskName, taskDateTime); } diff --git a/src/main/java/duke/DialogBox.java b/src/main/java/duke/DialogBox.java index 7c3336998e..305cb51693 100644 --- a/src/main/java/duke/DialogBox.java +++ b/src/main/java/duke/DialogBox.java @@ -1,52 +1,63 @@ package duke; +import java.io.IOException; +import java.util.Collections; + import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.Label; +import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.HBox; - - +/** + * An example of a custom control using FXML. + * This control represents a dialog box consisting of an ImageView to represent the speaker's face and a label + * containing text from the speaker. + */ public class DialogBox extends HBox { - - private Label text; + @FXML + private Label dialog; + @FXML private ImageView displayPicture; - public DialogBox(Label l, ImageView iv) { - text = l; - displayPicture = iv; - - text.setWrapText(true); - displayPicture.setFitWidth(100.0); - displayPicture.setFitHeight(100.0); - - this.setAlignment(Pos.TOP_RIGHT); - this.getChildren().addAll(text, displayPicture); + 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() { - this.setAlignment(Pos.TOP_LEFT); ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); - FXCollections.reverse(tmp); - this.getChildren().setAll(tmp); + Collections.reverse(tmp); + getChildren().setAll(tmp); + setAlignment(Pos.TOP_LEFT); } - public static DialogBox getUserDialog(Label l, ImageView iv) { - return new DialogBox(l, iv); + public static DialogBox getUserDialog(String text, Image img) { + return new DialogBox(text, img); } - public static DialogBox getDukeDialog(Label l, ImageView iv) { - var db = new DialogBox(l, iv); + public static DialogBox getDukeDialog(String text, Image img) { + var db = new DialogBox(text, img); db.flip(); return db; } - - } + diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index d0b58b93f2..3782b17c52 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -3,30 +3,7 @@ import java.util.List; import java.util.ArrayList; -import javafx.application.Application; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.control.ScrollPane; -import javafx.scene.control.TextField; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.VBox; -import javafx.stage.Stage; -import javafx.scene.layout.Region; -import javafx.scene.control.Label; - -import javafx.scene.image.Image; -import javafx.scene.image.ImageView; - -public class Duke extends Application { - - private ScrollPane scrollPane; - private VBox dialogContainer; - private TextField userInput; - private Button sendButton; - private Scene scene; - - private Image user = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); - private Image duke = new Image(this.getClass().getResourceAsStream("/images/DaDuke.png")); +public class Duke { List log; TaskList masterList; @@ -36,124 +13,12 @@ public Duke() { this.masterList = Storage.load(); } - @Override - public void start(Stage stage) { - //Step 1. Setting up required components - - - //The container for the content of the chat to scroll. - scrollPane = new ScrollPane(); - dialogContainer = new VBox(); - scrollPane.setContent(dialogContainer); - - userInput = new TextField(); - sendButton = new Button("Send"); - - AnchorPane mainLayout = new AnchorPane(); - mainLayout.getChildren().addAll(scrollPane, userInput, sendButton); - - scene = new Scene(mainLayout); - - stage.setScene(scene); - stage.show(); - - //Step 2. Formatting the window to look as expected - stage.setTitle("Duke"); - stage.setResizable(false); - stage.setMinHeight(600.0); - stage.setMinWidth(400.0); - - mainLayout.setPrefSize(400.0, 600.0); - - scrollPane.setPrefSize(385, 535); - scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); - scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS); - - scrollPane.setVvalue(1.0); - scrollPane.setFitToWidth(true); - - // You will need to import `javafx.scene.layout.Region` for this. - dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE); - - userInput.setPrefWidth(325.0); - - sendButton.setPrefWidth(55.0); - - AnchorPane.setTopAnchor(scrollPane, 1.0); - - AnchorPane.setBottomAnchor(sendButton, 1.0); - AnchorPane.setRightAnchor(sendButton, 1.0); - - AnchorPane.setLeftAnchor(userInput , 1.0); - AnchorPane.setBottomAnchor(userInput, 1.0); - - - Label welcomeMessage = new Label(Ui.WELCOME_MESSAGE); - Label startupUpcomingWeekView = new Label(Parser.upcomingCommand(new String[] {"upcoming", "7"}, this.masterList)); - dialogContainer.getChildren().addAll( - DialogBox.getDukeDialog(welcomeMessage, new ImageView(duke)), - DialogBox.getDukeDialog(startupUpcomingWeekView, new ImageView(duke)) - ); - - - //Step 3. Add functionality to handle user input. - sendButton.setOnMouseClicked((event) -> { - handleUserInput(); - }); - - userInput.setOnAction((event) -> { - handleUserInput(); - }); - - //Scroll down to the end every time dialogContainer's height changes. - dialogContainer.heightProperty().addListener((observable) -> scrollPane.setVvalue(1.0)); - - - } - - - /** - * Iteration 1: - * Creates a label with the specified text and adds it to the dialog container. - * @param text String containing text to add - * @return a label with the specified text that has word wrap enabled. - */ - private Label getDialogLabel(String text) { - // You will need to import `javafx.scene.control.Label`. - Label textToAdd = new Label(text); - textToAdd.setWrapText(true); - - return textToAdd; - } - - /** - * Iteration 2: - * Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to - * the dialog container. Clears the user input after processing. - */ - private void handleUserInput() { - - String commandInput = userInput.getText(); - Label userText = new Label(commandInput); - Label dukeText = new Label(getResponse(commandInput)); - - dialogContainer.getChildren().addAll( - DialogBox.getUserDialog(userText, new ImageView(user)), - DialogBox.getDukeDialog(dukeText, new ImageView(duke)) - ); - userInput.clear(); - } - /** * Processes the user input and returns a result. * @return the result after processing the user input. */ - private String getResponse(String input) { + public String getResponse(String input) { return Ui.readNextCommand(input, this.masterList); } - - - - } \ No newline at end of file diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index 95d7d80fc6..a328882508 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -4,6 +4,8 @@ package duke; +import java.time.LocalDateTime; + public class Event extends Task { /** * Constructor for a new Event object. @@ -11,7 +13,7 @@ public class Event extends Task { * @param taskName the name of the Task. * @param taskDateTime the end time of the Task. */ - public Event(boolean isDone, String taskName, String taskDateTime) { + public Event(boolean isDone, String taskName, LocalDateTime taskDateTime) { super('E', isDone, taskName, taskDateTime); } diff --git a/src/main/java/duke/Launcher.java b/src/main/java/duke/Launcher.java index fa23e6d95c..e4ef6b4628 100644 --- a/src/main/java/duke/Launcher.java +++ b/src/main/java/duke/Launcher.java @@ -7,6 +7,6 @@ */ public class Launcher { public static void main(String[] args) { - Application.launch(duke.Duke.class, args); + Application.launch(Main.class, args); } } diff --git a/src/main/java/duke/Main.java b/src/main/java/duke/Main.java new file mode 100644 index 0000000000..9e2d67152f --- /dev/null +++ b/src/main/java/duke/Main.java @@ -0,0 +1,34 @@ +package duke; + + +import java.io.IOException; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +/** + * A GUI for Duke using FXML. + */ +public class Main extends Application { + + private Duke duke = new Duke(); + + @Override + public void start(Stage stage) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("/view/MainWindow.fxml")); + AnchorPane ap = fxmlLoader.load(); + Scene scene = new Scene(ap); + stage.setScene(scene); + fxmlLoader.getController().setDuke(duke); + stage.show(); + + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/duke/MainWindow.java b/src/main/java/duke/MainWindow.java new file mode 100644 index 0000000000..349d44b5b1 --- /dev/null +++ b/src/main/java/duke/MainWindow.java @@ -0,0 +1,63 @@ +package duke; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; +/** + * Controller for MainWindow. Provides the layout for the other controls. + */ +public class MainWindow extends AnchorPane { + @FXML + private ScrollPane scrollPane; + @FXML + private VBox dialogContainer; + @FXML + private TextField userInput; + @FXML + private Button sendButton; + + private Duke duke; + + private Image userImage = new Image(this.getClass().getResourceAsStream("/images/DaUser.png")); + private Image dukeImage = new Image(this.getClass().getResourceAsStream("/images/DaDuke.png")); + + @FXML + public void initialize() { + scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); + + } + + public void setDuke(Duke d) { + duke = d; + + // Initializes duke with an overview of upcoming tasks in the next 7 days. + String welcome = Ui.WELCOME_MESSAGE + "\n" + + duke.getResponse("upcoming 7"); + dialogContainer.getChildren().addAll( + DialogBox.getDukeDialog(welcome, dukeImage) + ); + } + + /** + * Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to + * the dialog container. Clears the user input after processing. + */ + @FXML + private void handleUserInput() { + String input = userInput.getText(); + String response = duke.getResponse(input); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(input, userImage), + DialogBox.getDukeDialog(response, dukeImage) + ); + + userInput.clear(); + } + +} + diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index cc4c8cfead..0c07f14e3e 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -7,17 +7,16 @@ import java.io.IOException; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.temporal.ChronoUnit; +import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; -import java.util.List; -import java.util.HashSet; public class Parser { - static final HashSet commandList = new HashSet( - List.of("todo", "event", "deadline", - "list", "done", "delete", - "find", "update", "upcoming", - "view", "save", "exit")); static final LocalDate TODAY = LocalDate.now(); + static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("d/M/yyyy"); + static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmm"); /** * Analyzes the user input and splits them into a String array: @@ -30,15 +29,32 @@ public class Parser { public static String[] parseInput(String input) { if (!input.contains(" ")) { return new String[] {input}; + } + + String[] s = input.split(" ", 2); + if (!s[1].contains("/at") && !s[1].contains("/by")) { + return s; } else { - String[] s = input.split(" ", 2); - if (!s[1].contains("/at") && !s[1].contains("/by")) { - return s; - } else { - String[] temp = s[1].split("/at|/by"); - return new String[] {s[0].strip(), temp[0].strip(), temp[1].strip()}; - } + String[] temp = s[1].split("/at|/by"); + return new String[] {s[0].strip(), temp[0].strip(), temp[1].strip()}; + } + } + + /** + * Parses the date and time given. If no time is given, a default time of 2359 is used, + * @param taskDateTime the given date and/or time of the Task. + * @return a LocalDateTime containing the date and time of the Task. + * @throws DateTimeParseException if the date or time provided is in the wrong format. + */ + public static LocalDateTime parseDateTime(String taskDateTime) throws DateTimeParseException { + String[] dateTime = taskDateTime.split(" "); + LocalDate taskDate = LocalDate.parse(dateTime[0], DATE_FORMATTER); + if (dateTime.length > 1) { + LocalTime taskTime = LocalTime.parse(dateTime[1], TIME_FORMATTER); + return taskDate.atTime(taskTime); } + return taskDate.atTime(23,59); + } /** @@ -49,47 +65,43 @@ public static String[] parseInput(String input) { * command was 'exit', or a message indicating that the command is not found otherwise. */ public static String processCommand(String[] command, TaskList tasklist) { - if (commandList.contains(command[0])) { - switch (command[0]) { - case "todo": - return todoCommand(command, tasklist); + switch (command[0]) { + case "todo": + return todoCommand(command, tasklist); - case "event": - return eventCommand(command, tasklist); + case "event": + return eventCommand(command, tasklist); - case "deadline": - return deadlineCommand(command, tasklist); + case "deadline": + return deadlineCommand(command, tasklist); - case "list": - return listCommand(command, tasklist); + case "list": + return listCommand(command, tasklist); - case "done": - return doneCommand(command, tasklist); + case "done": + return doneCommand(command, tasklist); - case "delete": - return deleteCommand(command, tasklist); + case "delete": + return deleteCommand(command, tasklist); - case "find": - return findCommand(command, tasklist); + case "find": + return findCommand(command, tasklist); - case "update": - return updateCommand(command, tasklist); + case "update": + return updateCommand(command, tasklist); - case "upcoming": - return upcomingCommand(command, tasklist); + case "upcoming": + return upcomingCommand(command, tasklist); - case "view": - return viewCommand(command, tasklist); + case "view": + return viewCommand(command, tasklist); - case "save": - return saveCommand(tasklist); + case "save": + return saveCommand(tasklist); - case "exit": - return command[0]; - default: - return Ui.COMMAND_NOT_FOUND; - } - } else { + case "exit": + return command[0]; + default: return Ui.COMMAND_NOT_FOUND; } } @@ -101,15 +113,17 @@ public static String processCommand(String[] command, TaskList tasklist) { * @return a function call to create a new Todo object, or an error if the input line is invalid. */ public static String todoCommand(String[] command, TaskList tasklist) { - if (command.length > 1) { - try { - return tasklist.newTodo(false, command[1]); - } catch (IOException e) { - return "Oops! Unable to write to file due to " + e + "!"; - } - } else { + assert command[0].equals("todo"); + + if (command.length <= 1) { return Ui.TASK_NEEDS_NAME; } + + try { + return tasklist.newTodo(false, command[1]); + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; + } } /** @@ -119,17 +133,21 @@ public static String todoCommand(String[] command, TaskList tasklist) { * @return a function call to create a new Event object, or an error if the input line is invalid. */ public static String eventCommand(String[] command, TaskList tasklist) { - if (command.length > 2) { - try { - return tasklist.newEvent(false, command[1], command[2]); - } catch (DateTimeParseException e) { - return Ui.WRONG_DATE_TIME_FORMAT; - } catch (IOException e) { - return "Oops! Unable to write to file due to " + e + "!"; - } + assert command[0].equals("event"); - } else { - return (command.length == 2) ? Ui.TASK_NEEDS_DATE_TIME : Ui.TASK_NEEDS_NAME; + if (command.length <= 2) { + return (command.length == 2) + ? Ui.TASK_NEEDS_DATE_TIME + : Ui.TASK_NEEDS_NAME; + } + + try { + LocalDateTime taskDateTime = parseDateTime(command[2]); + return tasklist.newEvent(false, command[1], taskDateTime); + } catch (DateTimeParseException e) { + return Ui.WRONG_DATE_TIME_FORMAT; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; } } @@ -140,16 +158,21 @@ public static String eventCommand(String[] command, TaskList tasklist) { * @return a function call to create a new Deadline object, or an error if the input line is invalid. */ public static String deadlineCommand(String[] command, TaskList tasklist) { - if (command.length > 2) { - try { - return tasklist.newDeadline(false, command[1], command[2]); - } catch (DateTimeParseException e) { - return Ui.WRONG_DATE_TIME_FORMAT; - } catch (IOException e) { - return "Oops! Unable to write to file due to " + e + "!"; - } - } else { - return (command.length == 2) ? Ui.TASK_NEEDS_DATE_TIME : Ui.TASK_NEEDS_NAME; + assert command[0].equals("deadline"); + + if (command.length <= 2) { + return (command.length == 2) + ? Ui.TASK_NEEDS_DATE_TIME + : Ui.TASK_NEEDS_NAME; + } + + try { + LocalDateTime taskDateTime = parseDateTime(command[2]); + return tasklist.newDeadline(false, command[1], taskDateTime); + } catch (DateTimeParseException e) { + return Ui.WRONG_DATE_TIME_FORMAT; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; } } @@ -162,21 +185,32 @@ public static String deadlineCommand(String[] command, TaskList tasklist) { * @return a message displaying the number of tasks in the list. */ public static String listCommand(String[] command, TaskList tasklist) { - if (command.length > 1 && !command[1].equals("all")) { - TaskList query = new TaskList(); - for (Task t : tasklist.getList()) { - if (command[1].equals("todo") && t instanceof Todo) { - query.tempAdd(t); - } else if (command[1].equals("deadline") && t instanceof Deadline) { - query.tempAdd(t); - } else if (command[1].equals("event") && t instanceof Event) { - query.tempAdd(t); - } - } - return query.isEmpty() ? Ui.NO_MATCHING_TASK_IN_LIST : (Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query); + assert command[0].equals("list"); + + boolean listAll = command.length == 1 || command[1].equals("all"); + if (listAll) { + return tasklist.isEmpty() + ? Ui.NO_TASK_IN_LIST + : (Ui.DISPLAY_TASK_LIST + "\n" + tasklist); } - return tasklist.isEmpty() ? Ui.NO_TASK_IN_LIST : (Ui.DISPLAY_TASK_LIST + "\n" + tasklist); + boolean listTodo = command[1].equals("todo"); + boolean listDeadline = command[1].equals("deadline"); + boolean listEvent = command[1].equals("event"); + + TaskList query = new TaskList(); + for (Task t : tasklist.getList()) { + if (listTodo && t instanceof Todo) { + query.tempAdd(t); + } else if (listDeadline && t instanceof Deadline) { + query.tempAdd(t); + } else if (listEvent && t instanceof Event) { + query.tempAdd(t); + } + } + return query.isEmpty() + ? Ui.NO_MATCHING_TASK_IN_LIST + : (Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query); } /** @@ -186,6 +220,8 @@ public static String listCommand(String[] command, TaskList tasklist) { * @return a message displaying whether this command is successful. */ public static String doneCommand(String[] command, TaskList tasklist) { + assert command[0].equals("done"); + try { int taskID = Integer.parseInt(command[1]); return tasklist.markDone(taskID); @@ -203,6 +239,8 @@ public static String doneCommand(String[] command, TaskList tasklist) { * @return a message displaying whether this command is successful. */ public static String deleteCommand(String[] command, TaskList tasklist) { + assert command[0].equals("delete"); + try { int taskID = Integer.parseInt(command[1]); return tasklist.deleteTask(taskID); @@ -221,13 +259,25 @@ public static String deleteCommand(String[] command, TaskList tasklist) { * @return the new TaskList containing a filtered list of tasks. */ public static String findCommand(String[] command, TaskList tasklist) { + assert command[0].equals("find"); + + if (command.length <= 1) { + return Ui.INVALID_FIELD; + } + TaskList query = new TaskList(); for (Task thisTask : tasklist.getList()) { - if (command.length > 1 && thisTask.getTaskName().toLowerCase().contains(command[1].toLowerCase())) { + boolean taskContainsKeyword = thisTask.getTaskName() + .toLowerCase() + .contains(command[1].toLowerCase()); + + if (taskContainsKeyword) { query.tempAdd(thisTask); } } - return query.isEmpty() ? Ui.NO_MATCHING_TASK_IN_LIST : (Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query); + return query.isEmpty() + ? Ui.NO_MATCHING_TASK_IN_LIST + : (Ui.DISPLAY_MATCHING_TASK_LIST + "\n" + query); } /** @@ -237,22 +287,24 @@ public static String findCommand(String[] command, TaskList tasklist) { * @return a message displaying whether this command is successful. */ public static String updateCommand(String[] command, TaskList tasklist) { - if (command.length > 1) { - try { - String[] s = command[1].split(" ", 2); - if (s.length < 2) { - return Ui.NO_FIELD_TO_UPDATE; - } - int taskID = Integer.parseInt(s[0]); - return tasklist.updateTask(taskID, s[1]); - } catch (IndexOutOfBoundsException e) { - return Ui.NO_TASK_FOUND; - } catch (IOException e) { - return "Oops! Unable to write to file due to " + e + "!"; - } - } else { + assert command[0].equals("update"); + + if (command.length <= 1) { return Ui.NO_FIELD_TO_UPDATE; } + + try { + String[] s = command[1].split(" ", 2); + if (s.length < 2) { + return Ui.NO_FIELD_TO_UPDATE; + } + int taskID = Integer.parseInt(s[0]); + return tasklist.updateTask(taskID, s[1]); + } catch (IndexOutOfBoundsException e) { + return Ui.NO_TASK_FOUND; + } catch (IOException e) { + return "Oops! Unable to write to file due to " + e + "!"; + } } /** @@ -262,10 +314,16 @@ public static String updateCommand(String[] command, TaskList tasklist) { * @return a list of Event and Deadline objects occurring the specified number of days. */ public static String upcomingCommand(String[] command, TaskList tasklist) { + assert command[0].equals("upcoming"); + + if (command.length <= 1) { + return Ui.NEED_TO_SPECIFY_PERIOD; + } + if (command[1].equals("today")) { - command[1] = "1"; + command[1] = "0"; } else if (command[1].equals("tomorrow")) { - command[1] = "2"; + command[1] = "1"; } try { @@ -274,7 +332,7 @@ public static String upcomingCommand(String[] command, TaskList tasklist) { int dayRangeUntil = Integer.parseInt(command[1]); for (Task task : tasklist.getList()) { - if (taskDateIsInRange(task, dayRangeUntil) && !(task instanceof Todo)) { + if (dateIsInRange(task, TODAY, task.getTaskDate(), dayRangeUntil)) { populate(task, upcomingEvents, upcomingDeadlines); } } @@ -293,27 +351,33 @@ public static String upcomingCommand(String[] command, TaskList tasklist) { * @return a list of Event and Deadline objects occurring on the specified day. */ public static String viewCommand(String[] command, TaskList tasklist) { - try { - LocalDate targetDate; - - if (command[1].equals("today")) { - targetDate = TODAY; - } else if (command[1].equals("tomorrow")) { - targetDate = TODAY.plusDays(1); - } else { - targetDate = LocalDate.parse(command[1], Task.DATE_FORMATTER); - } + assert command[0].equals("view"); + + if (command.length <= 1) { + return Ui.NEED_TO_SPECIFY_DATE; + } + LocalDate targetDate; + + if (command[1].equals("today")) { + targetDate = TODAY; + } else if (command[1].equals("tomorrow")) { + targetDate = TODAY.plusDays(1); + } else { + targetDate = LocalDate.parse(command[1], DATE_FORMATTER); + } + + try { TaskList upcomingEvents = new TaskList(); TaskList upcomingDeadlines = new TaskList(); + int dayRangeUntil = 0; for (Task task : tasklist.getList()) { - if (task.getTaskDate().equals(targetDate) && !(task instanceof Todo)) { + if (dateIsInRange(task, targetDate, task.getTaskDate(), dayRangeUntil)) { populate(task, upcomingEvents, upcomingDeadlines); } } - - return Ui.displayUpcomingDay(targetDate.format(Task.DATE_FORMATTER), upcomingDeadlines, upcomingEvents); + return Ui.displayUpcomingDay(targetDate.format(DATE_FORMATTER), upcomingDeadlines, upcomingEvents); } catch (DateTimeParseException e) { return Ui.WRONG_DATE_TIME_FORMAT; @@ -335,11 +399,12 @@ public static String saveCommand(TaskList tasklist) { } } - - public static boolean taskDateIsInRange(Task t, int dayRangeUntil) { - return !t.getTaskDate().isBefore(TODAY) && t.getTaskDate().compareTo(TODAY) <= dayRangeUntil; - } - + /** + * Populates a Event or Deadline TaskList with a Task. To be used when the upcoming or view commands are called. + * @param task The task to add. + * @param upcomingEvents A list of Events with the specified Date in the upcoming or view command. + * @param upcomingDeadlines A list of Deadlines with the specified Date in the upcoming or view command. + */ public static void populate(Task task, TaskList upcomingEvents, TaskList upcomingDeadlines) { if (task instanceof Event) { upcomingEvents.tempAdd(task); @@ -348,4 +413,31 @@ public static void populate(Task task, TaskList upcomingEvents, TaskList upcomin } } + /** + * Checks if a date of a task is within a specified range by first calculating the difference between its date + * and a specified start date, and returns true if it is and false if it is not. + * + * If the Task is an instance of Todo, this method will always return false. + * @param task The Task to check if its date is within range. + * @param startDate The start date to compare to. In the 'upcoming' command, this will always be default to + * the current system date. In the 'view' command, this will always default to the queried + * date by the user. + * @param endDate The date of the Task. + * @param dayRangeUntil The number of days specified to determine the range. + * @return True if the difference of endDate and startDate is between 0 and dayRangeUntil, both inclusive. + * False if it falls outside the specified range, or if the Task is an instance of Todo. + */ + public static boolean dateIsInRange(Task task, LocalDate startDate, LocalDate endDate, int dayRangeUntil) { + if (!(task instanceof Todo)) { + long dateDifference = ChronoUnit.DAYS.between(startDate, endDate); + return dateDifference >= 0 && dateDifference <= dayRangeUntil; + } else { + return false; + } + } + + + + + } diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 6d3c0fc44a..f62b76d629 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -12,6 +12,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.File; +import java.time.format.DateTimeParseException; public class Storage { static final File savedData = new File("data/duke.txt"); @@ -44,23 +45,15 @@ public static TaskList load() { if (line == null) { break; } - - String[] taskContent = line.split(delimiter); - boolean isDone = taskContent[1].equals("1"); - - if (taskContent[0].equals("T")) { - tasklist.newTodo(isDone, taskContent[2]); - } else if (taskContent[0].equals("D")) { - tasklist.newDeadline(isDone, taskContent[2], taskContent[3]); - } else if (taskContent[0].equals("E")) { - tasklist.newEvent(isDone, taskContent[2], taskContent[3]); - } + loadTaskIntoDuke(line, tasklist); } catch (IOException e) { System.out.println("Oops! Unable to read save file due to " + e + "!"); break; + } catch (DateTimeParseException e) { + System.out.println(Ui.WRONG_DATE_TIME_FORMAT); + break; } - } reader.close(); @@ -90,4 +83,25 @@ public static void save(TaskList tasklist) throws IOException { writer.close(); } + + /** + * Processes the line read from the data file and stores it into the main application. + * @param line The line read from the data file. + * @param tasklist The full tasklist. + * @throws IOException + * @throws DateTimeParseException + */ + public static void loadTaskIntoDuke(String line, TaskList tasklist) throws IOException, DateTimeParseException { + String[] taskContent = line.split(delimiter); + boolean isDone = taskContent[1].equals("1"); + + if (taskContent[0].equals("T")) { + tasklist.newTodo(isDone, taskContent[2]); + } else if (taskContent[0].equals("D")) { + tasklist.newDeadline(isDone, taskContent[2], Parser.parseDateTime(taskContent[3])); + } else if (taskContent[0].equals("E")) { + tasklist.newEvent(isDone, taskContent[2], Parser.parseDateTime(taskContent[3])); + } + } + } diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index 458569126d..225e3339fe 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -6,8 +6,8 @@ package duke; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; abstract class Task { @@ -17,9 +17,6 @@ abstract class Task { private LocalDate taskDate; private LocalTime taskTime; - static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("d/M/yyyy"); - static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmm"); - /** * Constructor for a new generic Task object. * @param taskType defines the type of this Task. @@ -28,30 +25,15 @@ abstract class Task { * @param taskDateTime the given date and/or time of the Task. * @throws DateTimeParseException if the date or time provided is in the wrong format. */ - public Task(char taskType, boolean isDone, String taskName, String taskDateTime) throws DateTimeParseException { + public Task(char taskType, boolean isDone, String taskName, LocalDateTime taskDateTime) + throws DateTimeParseException { + assert taskDateTime != null; + this.taskType = taskType; this.isDone = isDone; this.taskName = taskName; - this.taskDate = LocalDate.EPOCH; - this.taskTime = LocalTime.MAX; - - parseDateTime(taskDateTime); - - } - - /** - * Parses the date and time given and stores it in the object. - * @param taskDateTime the given date and/or time of the Task. - * @throws DateTimeParseException if the date or time provided is in the wrong format. - */ - public void parseDateTime(String taskDateTime) throws DateTimeParseException { - if (!taskDateTime.isEmpty()) { - String[] dateTime = taskDateTime.split(" "); - this.taskDate = LocalDate.parse(dateTime[0], DATE_FORMATTER); - if (dateTime.length > 1) { - this.taskTime = LocalTime.parse(dateTime[1], TIME_FORMATTER); - } - } + this.taskDate = taskDateTime.toLocalDate(); + this.taskTime = taskDateTime.toLocalTime(); } /** @@ -91,7 +73,8 @@ public char getTaskType() { * @return the Date and Time of this Task. */ public String getTaskDateTime() { - return this.getTaskDate().format(DATE_FORMATTER) + " " + this.getTaskTime().format(TIME_FORMATTER); + return this.getTaskDate().format(Parser.DATE_FORMATTER) + " " + + this.getTaskTime().format(Parser.TIME_FORMATTER); } /** @@ -125,7 +108,7 @@ public void setTaskName(String taskName) { * @throws DateTimeParseException if the Date is in the wrong format. */ public void setTaskDate(String taskDate) throws DateTimeParseException { - this.taskDate = LocalDate.parse(taskDate, DATE_FORMATTER); + this.taskDate = LocalDate.parse(taskDate, Parser.DATE_FORMATTER); } /** @@ -134,7 +117,7 @@ public void setTaskDate(String taskDate) throws DateTimeParseException { * @throws DateTimeParseException if the Time is in the wrong format */ public void setTaskTime(String taskTime) throws DateTimeParseException { - this.taskTime = LocalTime.parse(taskTime, TIME_FORMATTER); + this.taskTime = LocalTime.parse(taskTime, Parser.TIME_FORMATTER); } /** diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index f953505a92..e2e16c9a8c 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -6,6 +6,7 @@ package duke; import java.io.IOException; +import java.time.LocalDateTime; import java.util.ArrayList; public class TaskList { @@ -18,8 +19,6 @@ public TaskList() { this.list = new ArrayList(); } - - /** * Adds a new Task to this TaskList and saves the changes to the data file. * @param task the new Task to be added into this list. @@ -33,7 +32,7 @@ public String add(Task task) throws IOException { } /** - * Adds a temporary Task to this TaskList but does not write to the data file. + * Adds a new Task to this TaskList but does not write to the data file. * This method should only be called when the 'find' or 'list ...' command is executed. * @param task the new Task to be added into this list. */ @@ -49,7 +48,8 @@ public void tempAdd(Task task) { * @throws IOException if the changes are unable to be saved into the data file. */ public String newTodo(boolean isDone, String taskName) throws IOException { - return this.add(new Todo(isDone, taskName)); + Task newTask = new Todo(isDone, taskName); + return this.add(newTask); } /** @@ -60,8 +60,9 @@ public String newTodo(boolean isDone, String taskName) throws IOException { * @return a function call to the add() function. * @throws IOException if the changes are unable to be saved into the data file. */ - public String newEvent(boolean isDone, String taskName, String taskDateTime) throws IOException { - return this.add(new Event(isDone, taskName, taskDateTime)); + public String newEvent(boolean isDone, String taskName, LocalDateTime taskDateTime) throws IOException { + Task newTask = new Event(isDone, taskName, taskDateTime); + return this.add(newTask); } /** @@ -72,8 +73,9 @@ public String newEvent(boolean isDone, String taskName, String taskDateTime) thr * @return a function call to the add() function. * @throws IOException if the changes are unable to be saved into the data file. */ - public String newDeadline(boolean isDone, String taskName, String taskDateTime) throws IOException { - return this.add(new Deadline(isDone, taskName, taskDateTime)); + public String newDeadline(boolean isDone, String taskName, LocalDateTime taskDateTime) throws IOException { + Task newTask = new Deadline(isDone, taskName, taskDateTime); + return this.add(newTask); } /** @@ -112,31 +114,32 @@ public String deleteTask(int taskID) throws IndexOutOfBoundsException, IOExcepti * @throws IOException if the changes are unable to be saved into the data file. */ public String updateTask(int taskID, String parameter) throws IndexOutOfBoundsException, IOException { + Task targetTask = this.list.get(taskID - 1); String[] fields = parameter.split(", "); if (fields.length == 1) { return Ui.NO_FIELD_TO_UPDATE; } - Task targetTask = this.list.get(taskID - 1); + boolean assigningDateTimeForTodo = targetTask instanceof Todo && + (fields[0].equals("date") || fields[0].equals("time")); + if (assigningDateTimeForTodo) { + return Ui.CANNOT_SET_DATE_TIME_TO_TODO; + } - if (fields[0].equalsIgnoreCase("name")) { + switch(fields[0]) { + case "name": targetTask.setTaskName(fields[1]); - - } else if (fields[0].equalsIgnoreCase("date")) { - if (targetTask instanceof Deadline || targetTask instanceof Event) { - targetTask.setTaskDate(fields[1]); - } else { - return Ui.CANNOT_SET_DATE_TIME_TO_TODO; - } - - } else if (fields[0].equalsIgnoreCase("time")) { - if (targetTask instanceof Deadline || targetTask instanceof Event) { - targetTask.setTaskTime(fields[1]); - } else { - return Ui.CANNOT_SET_DATE_TIME_TO_TODO; - } - + break; + case "date": + targetTask.setTaskDate(fields[1]); + break; + case "time": + targetTask.setTaskTime(fields[1]); + break; + default: + return Ui.INVALID_FIELD; } + Storage.save(this); return Ui.UPDATED_TASK + targetTask; } @@ -157,13 +160,6 @@ public ArrayList getList() { return this.list; } - /** - * Sorts this list by task name in natural order. - */ - public void sortName() { - this.list.sort((a,b) -> a.getTaskName().compareTo(b.getTaskName())); - } - /** * Sorts this list by task time in natural order. */ @@ -171,13 +167,6 @@ public void sortTime() { this.list.sort((a,b) -> a.getTaskTime().compareTo(b.getTaskTime())); } - /** - * Sorts this list by task date in natural order. - */ - public void sortDate() { - this.list.sort((a,b) -> a.getTaskDate().compareTo(b.getTaskDate())); - } - @Override public String toString() { String output = ""; diff --git a/src/main/java/duke/Todo.java b/src/main/java/duke/Todo.java index 90d3346c5c..6365cfa9b7 100644 --- a/src/main/java/duke/Todo.java +++ b/src/main/java/duke/Todo.java @@ -4,6 +4,8 @@ package duke; +import java.time.LocalDateTime; + public class Todo extends Task { /** * Constructor for a new Todo object. @@ -11,7 +13,7 @@ public class Todo extends Task { * @param taskName the name of the Task. */ public Todo(boolean isDone, String taskName) { - super('T', isDone, taskName, ""); + super('T', isDone, taskName, LocalDateTime.MIN); } @Override diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index 0707dec822..1b7c96ade9 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -3,6 +3,7 @@ public class Ui { static final String COMMAND_NOT_FOUND = "Oops! Command not found!"; + static final String INVALID_FIELD = "Oops! Invalid field!"; static final String TASK_NEEDS_NAME = "Oops! This task needs a name!"; static final String TASK_NEEDS_DATE_TIME = "Oops! This task needs a date/time!"; static final String WRONG_DATE_TIME_FORMAT = "Oops! The date needs to be DD/MM/YYYY and time needs to be HHMM (24hr) format!"; @@ -19,7 +20,9 @@ public class Ui { static final String UPDATED_TASK = "Updated this task to:\n "; static final String NO_FIELD_TO_UPDATE = "No field to update!"; static final String CANNOT_SET_DATE_TIME_TO_TODO = "Cannot set date or time to todo!"; - static final String WELCOME_MESSAGE = "Welcome to Duke! What can I do for you today?"; + static final String NEED_TO_SPECIFY_PERIOD = "Need to specify period!"; + static final String NEED_TO_SPECIFY_DATE = "Need to specify date!"; + static final String WELCOME_MESSAGE = "Welcome to Duke!\n"; public static String readNextCommand(String input, TaskList tasklist) { String[] command = Parser.parseInput(input.strip()); @@ -31,54 +34,47 @@ public static String taskCountMessage(int listSize) { } public static String displayUpcomingRange(int dayRangeUntil, TaskList upcomingDeadlines, TaskList upcomingEvents) { - if (upcomingDeadlines.isEmpty() && upcomingEvents.isEmpty()) { - return "You have no upcoming tasks for the next " + dayRangeUntil + " day(s)."; - - } else { - String output = ""; - if (upcomingDeadlines.isEmpty()) { - output = output + "You have no upcoming deadlines for the next " + dayRangeUntil + " day(s)!\n"; - } else { - upcomingDeadlines.sortTime(); - output = output + "Your upcoming deadlines in the next " + dayRangeUntil + " day(s):\n"; - output = output + upcomingDeadlines + "\n"; - } + String deadlines = messageUpcomingDeadlines(upcomingDeadlines) + "for the next " + dayRangeUntil + " day(s).\n";; + if (!upcomingDeadlines.isEmpty()) { + deadlines = deadlines + upcomingDeadlines + "\n"; + } - if (upcomingEvents.isEmpty()) { - output = output + "You have no upcoming events for the next " + dayRangeUntil + " day(s)!\n"; - } else { - upcomingEvents.sortTime(); - output = output + "Your upcoming events in the next " + dayRangeUntil + " day(s):\n"; - output = output + upcomingEvents + "\n"; - } - return output; + String events = messageUpcomingEvents(upcomingEvents) + "for the next " + dayRangeUntil + " day(s).\n";; + if (!upcomingEvents.isEmpty()) { + events = events + upcomingEvents + "\n"; } + return deadlines + events; } public static String displayUpcomingDay(String targetDate, TaskList upcomingDeadlines, TaskList upcomingEvents) { - if (upcomingDeadlines.isEmpty() && upcomingEvents.isEmpty()) { - return "You have no upcoming tasks on " + targetDate; + String deadlines = messageUpcomingDeadlines(upcomingDeadlines) + "on " + targetDate + ".\n"; + if (!upcomingDeadlines.isEmpty()) { + deadlines = deadlines + upcomingDeadlines + "\n"; + } - } else { - String output = ""; - if (upcomingDeadlines.isEmpty()) { - output = output + "You have no upcoming deadlines on " + targetDate + "!\n"; - } else { - upcomingDeadlines.sortTime(); - output = output + "Your upcoming deadlines on " + targetDate + ":\n"; - output = output + upcomingDeadlines + "\n"; - } + String events = messageUpcomingEvents(upcomingEvents) + "on " + targetDate + ".\n"; + if (!upcomingEvents.isEmpty()) { + events = events + upcomingEvents + "\n"; + } + return deadlines + events; + } - if (upcomingEvents.isEmpty()) { - output = output + "You have no upcoming events on " + targetDate + "!\n"; - } else { - upcomingEvents.sortTime(); - output = output + "Your upcoming events on " + targetDate + ":\n"; - output = output + upcomingEvents + "\n"; - } - return output; + + public static String messageUpcomingDeadlines(TaskList upcomingDeadlines) { + if (upcomingDeadlines.isEmpty()) { + return "You have no upcoming deadlines "; + } + upcomingDeadlines.sortTime(); + return "Your upcoming deadlines "; + } + + public static String messageUpcomingEvents(TaskList upcomingEvents) { + if (upcomingEvents.isEmpty()) { + return "You have no upcoming events "; } + upcomingEvents.sortTime(); + return "Your upcoming events "; } } \ No newline at end of file diff --git a/src/main/resources/view/DialogBox.fxml b/src/main/resources/view/DialogBox.fxml new file mode 100644 index 0000000000..ede775d4f9 --- /dev/null +++ b/src/main/resources/view/DialogBox.fxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml new file mode 100644 index 0000000000..0d2df3c3b2 --- /dev/null +++ b/src/main/resources/view/MainWindow.fxml @@ -0,0 +1,19 @@ + + + + + + + + + + + +