diff --git a/demos/gaspump/.gradle/buildOutputCleanup/cache.properties b/demos/gaspump/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..c1d9c5d --- /dev/null +++ b/demos/gaspump/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Sat Nov 12 12:12:58 PST 2022 +gradle.version=4.9 diff --git a/demos/gaspump/.gradle/vcsWorkingDirs/gc.properties b/demos/gaspump/.gradle/vcsWorkingDirs/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/demos/gaspump/README.md b/demos/gaspump/README.md new file mode 100644 index 0000000..41c68b5 --- /dev/null +++ b/demos/gaspump/README.md @@ -0,0 +1,6 @@ +# Gas Pump Solutions + +### Version 1 - Basic Solution + +### Version 2 - Added Car Wash + diff --git a/demos/gaspump/debug.log b/demos/gaspump/debug.log deleted file mode 100644 index 1a3d7d9..0000000 --- a/demos/gaspump/debug.log +++ /dev/null @@ -1,21 +0,0 @@ -# lines: 1 -line # 01 -line len: 23 -pad size: 9 -new line: Do you want a Car Wash? -new message: Do you want a Car Wash? - -# lines: 1 -line # 01 -line len: 23 -pad size: 9 -new line: Select Car Wash Package -new message: Select Car Wash Package - -# lines: 1 -line # 01 -line len: 16 -pad size: 12 -new line: Credit or Debit? -new message: Credit or Debit? - diff --git a/demos/gaspump/gaspump.asta b/demos/gaspump/gaspump.asta deleted file mode 100644 index a8aebba..0000000 Binary files a/demos/gaspump/gaspump.asta and /dev/null differ diff --git a/demos/gaspump/gaspump_v1/.gradle/buildOutputCleanup/cache.properties b/demos/gaspump/gaspump_v1/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..c1d9c5d --- /dev/null +++ b/demos/gaspump/gaspump_v1/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Sat Nov 12 12:12:58 PST 2022 +gradle.version=4.9 diff --git a/demos/gaspump/gaspump_v1/.gradle/vcsWorkingDirs/gc.properties b/demos/gaspump/gaspump_v1/.gradle/vcsWorkingDirs/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/demos/gaspump/Makefile b/demos/gaspump/gaspump_v1/Makefile similarity index 100% rename from demos/gaspump/Makefile rename to demos/gaspump/gaspump_v1/Makefile diff --git a/demos/gaspump/build.gradle b/demos/gaspump/gaspump_v1/build.gradle similarity index 100% rename from demos/gaspump/build.gradle rename to demos/gaspump/gaspump_v1/build.gradle diff --git a/demos/gaspump/gaspump_v1/gaspump.asta b/demos/gaspump/gaspump_v1/gaspump.asta new file mode 100644 index 0000000..873f281 Binary files /dev/null and b/demos/gaspump/gaspump_v1/gaspump.asta differ diff --git a/demos/gaspump/gaspump.png b/demos/gaspump/gaspump_v1/gaspump.png similarity index 100% rename from demos/gaspump/gaspump.png rename to demos/gaspump/gaspump_v1/gaspump.png diff --git a/demos/gaspump/gradlew b/demos/gaspump/gaspump_v1/gradlew similarity index 100% rename from demos/gaspump/gradlew rename to demos/gaspump/gaspump_v1/gradlew diff --git a/demos/gaspump/gradlew.bat b/demos/gaspump/gaspump_v1/gradlew.bat similarity index 100% rename from demos/gaspump/gradlew.bat rename to demos/gaspump/gaspump_v1/gradlew.bat diff --git a/demos/gaspump/settings.gradle b/demos/gaspump/gaspump_v1/settings.gradle similarity index 100% rename from demos/gaspump/settings.gradle rename to demos/gaspump/gaspump_v1/settings.gradle diff --git a/demos/gaspump/src/main/java/App.java b/demos/gaspump/gaspump_v1/src/main/java/App.java similarity index 100% rename from demos/gaspump/src/main/java/App.java rename to demos/gaspump/gaspump_v1/src/main/java/App.java diff --git a/demos/gaspump/src/main/java/Decorator.java b/demos/gaspump/gaspump_v1/src/main/java/Decorator.java similarity index 100% rename from demos/gaspump/src/main/java/Decorator.java rename to demos/gaspump/gaspump_v1/src/main/java/Decorator.java diff --git a/demos/gaspump/src/main/java/ICommand.java b/demos/gaspump/gaspump_v1/src/main/java/ICommand.java similarity index 100% rename from demos/gaspump/src/main/java/ICommand.java rename to demos/gaspump/gaspump_v1/src/main/java/ICommand.java diff --git a/demos/gaspump/src/main/java/IScreen.java b/demos/gaspump/gaspump_v1/src/main/java/IScreen.java similarity index 100% rename from demos/gaspump/src/main/java/IScreen.java rename to demos/gaspump/gaspump_v1/src/main/java/IScreen.java diff --git a/demos/gaspump/src/main/java/Main.java b/demos/gaspump/gaspump_v1/src/main/java/Main.java similarity index 100% rename from demos/gaspump/src/main/java/Main.java rename to demos/gaspump/gaspump_v1/src/main/java/Main.java diff --git a/demos/gaspump/gaspump_v1/src/main/java/Screen.java b/demos/gaspump/gaspump_v1/src/main/java/Screen.java new file mode 100644 index 0000000..a314957 --- /dev/null +++ b/demos/gaspump/gaspump_v1/src/main/java/Screen.java @@ -0,0 +1,130 @@ + +import java.util.* ; +import java.util.Random ; + +public class Screen implements IScreen +{ + // ad message + private String[] ads = { + "Join our Rewards Program.", + "Hungry? Visit our Snack Bar.", + "Save with a Car Wash.", + "Star Wars Movie Preview.", + "New on HBO Now.", + "New iPhone 13 at AT&T.", + "Macy's Summer Clearance.", + "Get Your Smog Check Now." + }; + private String ad = "" ; + + // get random ad + private String getAd() { + Random rand = new Random() ; + int index = rand.nextInt(ads.length) ; + return ads[index] ; + } + + // states + private State S0 = new State0(this) ; + private State S1 = new State1(this) ; + private State S2 = new State2(this) ; + private State S3 = new State3(this) ; + private State S4 = new State4(this) ; + private State S5 = new State5(this) ; + private State S6 = new State6(this) ; + private State S7 = new State7(this) ; + + private State current = S0 ; + + public void setState( int new_state ) { + switch ( new_state ) { + case 0: current = S0 ; break ; + case 1: current = S1 ; break ; + case 2: current = S2 ; break ; + case 3: current = S3 ; break ; + case 4: current = S4 ; break ; + case 5: current = S5 ; break ; + case 6: current = S6 ; break ; + case 7: current = S7 ; break ; + } + } + + // commands + private ICommand cmd_a = new ICommand() { + public void execute() { + current.doA() ; + } + } ; + private ICommand cmd_b = new ICommand() { + public void execute() { + current.doB() ; + } + } ; + private ICommand cmd_c = new ICommand() { + public void execute() { + current.doC() ; + } + } ; + private ICommand cmd_d = new ICommand() { + public void execute() { + current.doD() ; + } + } ; + private ICommand cmd_e = new ICommand() { + public void execute() { + current.doE() ; + } + } ; + private ICommand cmd_f = new ICommand() { + public void execute() { + current.doF() ; + } + } ; + private ICommand cmd_g = new ICommand() { + public void execute() { + current.doG() ; + } + } ; + private ICommand cmd_h = new ICommand() { + public void execute() { + current.doH() ; + } + } ; + + + // enter keypad digits + public void key(String cmd) { + current.key( cmd ) ; + } + + // instruction message + public String message() { + return current.message1() + "\n" + current.message2() + "\n" ; + } + + // ad message + public String advertisement() { + return getAd() ; + } + + // key press labels + public String A() { return current.A() ; } + public String B() { return current.B() ; } + public String C() { return current.C() ; } + public String D() { return current.D() ; } + public String E() { return current.E() ; } + public String F() { return current.F() ; } + public String G() { return current.G() ; } + public String H() { return current.H() ; } + + // key press actions + public void selectA() { cmd_a.execute() ; } + public void selectB() { cmd_b.execute() ; } + public void selectC() { cmd_c.execute() ; } + public void selectD() { cmd_d.execute() ; } + public void selectE() { cmd_e.execute() ; } + public void selectF() { cmd_f.execute() ; } + public void selectG() { cmd_g.execute() ; } + public void selectH() { cmd_h.execute() ; } + +} diff --git a/demos/gaspump/src/main/java/State.java b/demos/gaspump/gaspump_v1/src/main/java/State.java similarity index 100% rename from demos/gaspump/src/main/java/State.java rename to demos/gaspump/gaspump_v1/src/main/java/State.java diff --git a/demos/gaspump/src/main/java/State0.java b/demos/gaspump/gaspump_v1/src/main/java/State0.java similarity index 100% rename from demos/gaspump/src/main/java/State0.java rename to demos/gaspump/gaspump_v1/src/main/java/State0.java diff --git a/demos/gaspump/src/main/java/State1.java b/demos/gaspump/gaspump_v1/src/main/java/State1.java similarity index 100% rename from demos/gaspump/src/main/java/State1.java rename to demos/gaspump/gaspump_v1/src/main/java/State1.java diff --git a/demos/gaspump/src/main/java/State2.java b/demos/gaspump/gaspump_v1/src/main/java/State2.java similarity index 100% rename from demos/gaspump/src/main/java/State2.java rename to demos/gaspump/gaspump_v1/src/main/java/State2.java diff --git a/demos/gaspump/src/main/java/State3.java b/demos/gaspump/gaspump_v1/src/main/java/State3.java similarity index 100% rename from demos/gaspump/src/main/java/State3.java rename to demos/gaspump/gaspump_v1/src/main/java/State3.java diff --git a/demos/gaspump/src/main/java/State4.java b/demos/gaspump/gaspump_v1/src/main/java/State4.java similarity index 100% rename from demos/gaspump/src/main/java/State4.java rename to demos/gaspump/gaspump_v1/src/main/java/State4.java diff --git a/demos/gaspump/src/main/java/State5.java b/demos/gaspump/gaspump_v1/src/main/java/State5.java similarity index 100% rename from demos/gaspump/src/main/java/State5.java rename to demos/gaspump/gaspump_v1/src/main/java/State5.java diff --git a/demos/gaspump/src/main/java/State6.java b/demos/gaspump/gaspump_v1/src/main/java/State6.java similarity index 100% rename from demos/gaspump/src/main/java/State6.java rename to demos/gaspump/gaspump_v1/src/main/java/State6.java diff --git a/demos/gaspump/src/main/java/State7.java b/demos/gaspump/gaspump_v1/src/main/java/State7.java similarity index 100% rename from demos/gaspump/src/main/java/State7.java rename to demos/gaspump/gaspump_v1/src/main/java/State7.java diff --git a/demos/gaspump/gaspump_v2/.gradle/buildOutputCleanup/cache.properties b/demos/gaspump/gaspump_v2/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..c1d9c5d --- /dev/null +++ b/demos/gaspump/gaspump_v2/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Sat Nov 12 12:12:58 PST 2022 +gradle.version=4.9 diff --git a/demos/gaspump/gaspump_v2/.gradle/vcsWorkingDirs/gc.properties b/demos/gaspump/gaspump_v2/.gradle/vcsWorkingDirs/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/demos/gaspump/gaspump_v2/Makefile b/demos/gaspump/gaspump_v2/Makefile new file mode 100644 index 0000000..7c3da4a --- /dev/null +++ b/demos/gaspump/gaspump_v2/Makefile @@ -0,0 +1,25 @@ +all: clean + +clean: + find . -name "*.class" -exec rm -rf {} \; + rm -rf build/* + rm -f *.log + +init: + gradle init + mkdir -p libs + mkdir -p src/main/java + mkdir -p src/test/java + +compile: + gradle build -x test --warning-mode all + +test: + gradle test + +jar: compile + gradle shadowJar + +run: jar + java -cp build/libs/gaspump-all.jar Main 2>debug.log + diff --git a/demos/gaspump/gaspump_v2/build.gradle b/demos/gaspump/gaspump_v2/build.gradle new file mode 100644 index 0000000..b9e122d --- /dev/null +++ b/demos/gaspump/gaspump_v2/build.gradle @@ -0,0 +1,65 @@ +/* + * This build file was auto generated by running the Gradle 'init' task + * by 'pnguyen' at '7/30/18 6:20 PM' with Gradle 3.2.1 + * + * This generated file contains a commented-out sample Java project to get you started. + * For more details take a look at the Java Quickstart chapter in the Gradle + * user guide available at https://docs.gradle.org/3.2.1/userguide/tutorial_java_projects.html + */ + +/* +// Apply the java plugin to add support for Java +apply plugin: 'java' + +// In this section you declare where to find the dependencies of your project +repositories { + // Use 'jcenter' for resolving your dependencies. + // You can declare any Maven/Ivy/file repository here. + jcenter() +} + +// In this section you declare the dependencies for your production and test code +dependencies { + // The production code uses the SLF4J logging API at compile time + compile 'org.slf4j:slf4j-api:1.7.21' + + // Declare the dependency for your favourite test framework you want to use in your tests. + // TestNG is also supported by the Gradle Test task. Just change the + // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add + // 'test.useTestNG()' to your build script. + testCompile 'junit:junit:4.12' +} +*/ + + +buildscript { + dependencies { + classpath fileTree(dir: 'libs', include: '*.jar') + } +} + +plugins { + id 'java' + id 'com.github.johnrengelman.shadow' version '2.0.4' +} + +repositories { + jcenter() +} + +dependencies { + runtime fileTree(dir: 'libs', include: '*.jar') + compile fileTree(dir: 'libs', include: '*.jar') + compile group: 'junit', name: 'junit', version: '4.+' + compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.21' + testCompile group: 'junit', name: 'junit', version: '4.+' +} + +shadowJar { + baseName = 'gaspump' +} + + + + + diff --git a/demos/gaspump/gaspump_v2/gaspump.asta b/demos/gaspump/gaspump_v2/gaspump.asta new file mode 100644 index 0000000..873f281 Binary files /dev/null and b/demos/gaspump/gaspump_v2/gaspump.asta differ diff --git a/demos/gaspump/gaspump_v2/gaspump.png b/demos/gaspump/gaspump_v2/gaspump.png new file mode 100644 index 0000000..3b81151 Binary files /dev/null and b/demos/gaspump/gaspump_v2/gaspump.png differ diff --git a/demos/gaspump/gaspump_v2/gradlew b/demos/gaspump/gaspump_v2/gradlew new file mode 100644 index 0000000..4453cce --- /dev/null +++ b/demos/gaspump/gaspump_v2/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# 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/demos/gaspump/gaspump_v2/gradlew.bat b/demos/gaspump/gaspump_v2/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/demos/gaspump/gaspump_v2/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= + +@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/demos/gaspump/gaspump_v2/settings.gradle b/demos/gaspump/gaspump_v2/settings.gradle new file mode 100644 index 0000000..d583fa2 --- /dev/null +++ b/demos/gaspump/gaspump_v2/settings.gradle @@ -0,0 +1,19 @@ +/* + * This settings file was auto generated by the Gradle buildInit task + * by 'pnguyen' at '7/30/18 6:20 PM' with Gradle 3.2.1 + * + * The settings file is used to specify which projects to include in your build. + * In a single project build this file can be empty or even removed. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/3.2.1/userguide/multi_project_builds.html + */ + +/* +// To declare projects as part of a multi-project build use the 'include' method +include 'shared' +include 'api' +include 'services:webservice' +*/ + +rootProject.name = 'gaspump' diff --git a/demos/gaspump/gaspump_v2/src/main/java/App.java b/demos/gaspump/gaspump_v2/src/main/java/App.java new file mode 100644 index 0000000..b3b1884 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/App.java @@ -0,0 +1,75 @@ + +/** + * Main App Class for Displaying Screen. + */ +public class App { + + private IScreen s; + + public App() { + s = new Decorator( new Screen() ) ; + } + + public String display() { + String output = ""; + output += "========================================\n" ; + output += "\n" ; + output += s.message() ; + output += "\n" ; + output += "[A] " + s.A() + " " + s.E() + " [E]\n" ; + output += "\n" ; + output += "[B] " + s.B() + " " + s.F() + " [F]\n" ; + output += "\n" ; + output += "[C] " + s.C() + " " + s.G() + " [G]\n" ; + output += "\n" ; + output += "[D] " + s.D() + " " + s.H() + " [H]\n" ; + output += "\n" ; + output += "\n" ; + output += s.advertisement() ; + output += "\n" ; + output += "========================================\n" ; + return output; + } + + public void key(String cmd) { + switch ( cmd ) { + case "a": + case "A": + s.selectA() ; + break ; + case "b": + case "B": + s.selectB() ; + break ; + case "c": + case "C": + s.selectC() ; + break ; + case "d": + case "D": + s.selectD() ; + break ; + case "e": + case "E": + s.selectE() ; + break ; + case "f": + case "F": + s.selectF() ; + break ; + case "g": + case "G": + s.selectG() ; + break ; + case "h": + case "H": + s.selectH() ; + break ; + default: + s.key(cmd) ; + } + + } + +} + diff --git a/demos/gaspump/gaspump_v2/src/main/java/Decorator.java b/demos/gaspump/gaspump_v2/src/main/java/Decorator.java new file mode 100644 index 0000000..03ac7d1 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/Decorator.java @@ -0,0 +1,120 @@ + +import java.util.* ; + +public class Decorator implements IScreen +{ + IScreen s ; + + public Decorator( IScreen screen) + { + this.s = screen ; + } + + public void key(String cmd) { + s.key( cmd ) ; + } + + public String message() { + String[] lines = s.message().split("\n"); + String new_message = "" ; + System.err.println( "# lines: " + lines.length ) ; + for ( int i = 0; i + +---------------------------------------- + | | +1234567890123456789012345678901234567890 +---------------------------------------- +[C] Credit [H] +[D] Debit [I] + +*/ \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/ICommand.java b/demos/gaspump/gaspump_v2/src/main/java/ICommand.java new file mode 100644 index 0000000..9428638 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/ICommand.java @@ -0,0 +1,5 @@ + +public interface ICommand +{ + void execute() ; +} diff --git a/demos/gaspump/gaspump_v2/src/main/java/IScreen.java b/demos/gaspump/gaspump_v2/src/main/java/IScreen.java new file mode 100644 index 0000000..5512b3d --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/IScreen.java @@ -0,0 +1,27 @@ + +public interface IScreen +{ + + void key(String keypad) ; // send key entry to screen + String message() ; // get screen message + String advertisement() ; // return ad message + + String A() ; + String B() ; + String C() ; + String D() ; + String E() ; + String F() ; + String G() ; + String H() ; + + void selectA() ; + void selectB() ; + void selectC() ; + void selectD() ; + void selectE() ; + void selectF() ; + void selectG() ; + void selectH() ; + +} diff --git a/demos/gaspump/gaspump_v2/src/main/java/Main.java b/demos/gaspump/gaspump_v2/src/main/java/Main.java new file mode 100644 index 0000000..970690d --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/Main.java @@ -0,0 +1,28 @@ + +/* + Sample Program Demonstrating the use of Patterns for an Input Mask + Uses java.io.Console for Screen output and input. + + ref: https://docs.oracle.com/javase/7/docs/api/java/io/Console.html + +*/ + + +import java.io.Console ; + +class Main +{ + public static void main(String args[]) + { + App app = new App() ; + Console c = System.console() ; + for (;;) { + System.out.print("\033[H\033[2J") ; // clear the screen + System.out.flush() ; + System.out.println( app.display() ) ; + System.out.print( "=> " ) ; + String cmd = c.readLine() ; + app.key( cmd ) ; + } + } +} \ No newline at end of file diff --git a/demos/gaspump/src/main/java/Screen.java b/demos/gaspump/gaspump_v2/src/main/java/Screen.java similarity index 99% rename from demos/gaspump/src/main/java/Screen.java rename to demos/gaspump/gaspump_v2/src/main/java/Screen.java index 20d639f..41ac8ac 100644 --- a/demos/gaspump/src/main/java/Screen.java +++ b/demos/gaspump/gaspump_v2/src/main/java/Screen.java @@ -36,7 +36,7 @@ private String getAd() { private State CW = new StateCarWash(this) ; private State CWP = new StateCarWashPackage(this) ; - private State current = CW ; + private State current = S6 ; public void setState( int new_state ) { switch ( new_state ) { diff --git a/demos/gaspump/gaspump_v2/src/main/java/State.java b/demos/gaspump/gaspump_v2/src/main/java/State.java new file mode 100644 index 0000000..683e911 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State.java @@ -0,0 +1,29 @@ + + +public interface State { + + String message1() ; + String message2() ; + + void key( String keypad ) ; + + String A() ; + String B() ; + String C() ; + String D() ; + String E() ; + String F() ; + String G() ; + String H() ; + + void doA() ; + void doB() ; + void doC() ; + void doD() ; + void doE() ; + void doF() ; + void doG() ; + void doH() ; + +} + diff --git a/demos/gaspump/gaspump_v2/src/main/java/State0.java b/demos/gaspump/gaspump_v2/src/main/java/State0.java new file mode 100644 index 0000000..9292c2b --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State0.java @@ -0,0 +1,34 @@ + +public class State0 implements State { + + private Screen screen ; + + public State0( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Credit or Debit?" ; } + public String message2() { return "" ; } + + public void key( String keypad ) { } + + public String A() { return "Credit" ; } + public String B() { return "Debit" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { screen.setState(1) ; } + public void doB() { screen.setState(2) ; } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State1.java b/demos/gaspump/gaspump_v2/src/main/java/State1.java new file mode 100644 index 0000000..7c76197 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State1.java @@ -0,0 +1,37 @@ + +public class State1 implements State { + + private Screen screen ; + + public State1( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Scan Credit Card" ; } + public String message2() { return "" ; } + + public void key( String keypad ) { + System.err.println( "Credit Card: " + keypad ) ; + screen.setState(3) ; + } + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { } + public void doB() { } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State2.java b/demos/gaspump/gaspump_v2/src/main/java/State2.java new file mode 100644 index 0000000..059c365 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State2.java @@ -0,0 +1,37 @@ + +public class State2 implements State { + + private Screen screen ; + + public State2( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Scan Debit Card" ; } + public String message2() { return "" ; } + + public void key( String keypad ) { + System.err.println( "Debit Card: " + keypad ) ; + screen.setState(4) ; + } + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { } + public void doB() { } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State3.java b/demos/gaspump/gaspump_v2/src/main/java/State3.java new file mode 100644 index 0000000..0736521 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State3.java @@ -0,0 +1,37 @@ + +public class State3 implements State { + + private Screen screen ; + + public State3( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Enter your Zip Code" ; } + public String message2() { return "" ; } + + public void key( String keypad ) { + System.err.println( "Credit Card Zip Code: " + keypad ) ; + screen.setState(5) ; + } + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { } + public void doB() { } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State4.java b/demos/gaspump/gaspump_v2/src/main/java/State4.java new file mode 100644 index 0000000..27c817a --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State4.java @@ -0,0 +1,37 @@ + +public class State4 implements State { + + private Screen screen ; + + public State4( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Enter Your PIN" ; } + public String message2() { return "" ; } + + public void key( String keypad ) { + System.err.println( "Debit Card PIN: " + keypad ) ; + screen.setState(5) ; + } + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { } + public void doB() { } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State5.java b/demos/gaspump/gaspump_v2/src/main/java/State5.java new file mode 100644 index 0000000..f93a699 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State5.java @@ -0,0 +1,34 @@ + +public class State5 implements State { + + private Screen screen ; + + public State5( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Select Grade & Pump Gas..." ; } + public String message2() { return "" ; } + + public void key( String keypad ) { screen.setState(7) ; } + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { } + public void doB() { } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State6.java b/demos/gaspump/gaspump_v2/src/main/java/State6.java new file mode 100644 index 0000000..91a8b31 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State6.java @@ -0,0 +1,34 @@ + +public class State6 implements State { + + private Screen screen ; + + public State6( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Print Receipt?" ; } + public String message2() { return "" ; } + + public void key( String keypad ) { screen.setState(-1) ;} + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "Yes" ; } + public String D() { return "No" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "Help" ; } + public String H() { return "Done" ; } + + public void doA() { screen.setState(-1) ; } + public void doB() { screen.setState(-1) ; } + public void doC() { screen.setState(-1) ; } + public void doD() { screen.setState(-1) ; } + public void doE() { screen.setState(-1) ; } + public void doF() { screen.setState(-1) ; } + public void doG() { screen.setState(-1) ; } + public void doH() { screen.setState(-1) ; } + +} + \ No newline at end of file diff --git a/demos/gaspump/gaspump_v2/src/main/java/State7.java b/demos/gaspump/gaspump_v2/src/main/java/State7.java new file mode 100644 index 0000000..d07b6c1 --- /dev/null +++ b/demos/gaspump/gaspump_v2/src/main/java/State7.java @@ -0,0 +1,34 @@ + +public class State7 implements State { + + private Screen screen ; + + public State7( Screen screen ) { + this.screen = screen ; + } + + public String message1() { return "Thanks for Your Business." ; } + public String message2() { return "Please Visit Us Again." ; } + + public void key( String keypad ) { } + + public String A() { return "" ; } + public String B() { return "" ; } + public String C() { return "" ; } + public String D() { return "" ; } + public String E() { return "" ; } + public String F() { return "" ; } + public String G() { return "" ; } + public String H() { return "" ; } + + public void doA() { } + public void doB() { } + public void doC() { } + public void doD() { } + public void doE() { } + public void doF() { } + public void doG() { } + public void doH() { } + +} + \ No newline at end of file diff --git a/demos/gaspump/src/main/java/StateCarWash.java b/demos/gaspump/gaspump_v2/src/main/java/StateCarWash.java similarity index 100% rename from demos/gaspump/src/main/java/StateCarWash.java rename to demos/gaspump/gaspump_v2/src/main/java/StateCarWash.java diff --git a/demos/gaspump/src/main/java/StateCarWashPackage.java b/demos/gaspump/gaspump_v2/src/main/java/StateCarWashPackage.java similarity index 100% rename from demos/gaspump/src/main/java/StateCarWashPackage.java rename to demos/gaspump/gaspump_v2/src/main/java/StateCarWashPackage.java