From ddc638ca57616ce45c6ee8082a786e936a389d04 Mon Sep 17 00:00:00 2001
From: Peter Kurfer <peter.kurfer@fh-rosenheim.de>
Date: Mon, 18 Dec 2017 10:34:55 +0100
Subject: [PATCH] Completed first draft of code spec

---
 .gitignore                                    |  40 ++++
 build.gradle                                  |  40 ++++
 gradle.properties                             |   5 +
 gradle/wrapper/gradle-wrapper.jar             | Bin 0 -> 54329 bytes
 gradle/wrapper/gradle-wrapper.properties      |   5 +
 gradlew                                       | 172 ++++++++++++++++++
 gradlew.bat                                   |  84 +++++++++
 settings.gradle                               |  18 ++
 src/main/java/de/fhro/inf/prg3/a11/App.java   | 130 +++++++++++++
 .../de/fhro/inf/prg3/a11/MenuSelection.java   |  13 ++
 .../inf/prg3/a11/openmensa/OpenMensaAPI.java  |  54 ++++++
 .../a11/openmensa/OpenMensaAPIService.java    |  37 ++++
 .../inf/prg3/a11/openmensa/model/Canteen.java |  90 +++++++++
 .../inf/prg3/a11/openmensa/model/Meal.java    |  86 +++++++++
 .../prg3/a11/openmensa/model/PageInfo.java    |  87 +++++++++
 .../inf/prg3/a11/openmensa/model/State.java   |  66 +++++++
 .../inf/prg3/a11/tests/OpenMensaApiTests.java |  84 +++++++++
 17 files changed, 1011 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 build.gradle
 create mode 100644 gradle.properties
 create mode 100644 gradle/wrapper/gradle-wrapper.jar
 create mode 100644 gradle/wrapper/gradle-wrapper.properties
 create mode 100755 gradlew
 create mode 100644 gradlew.bat
 create mode 100644 settings.gradle
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/App.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/MenuSelection.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPI.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPIService.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Canteen.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Meal.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/openmensa/model/PageInfo.java
 create mode 100644 src/main/java/de/fhro/inf/prg3/a11/openmensa/model/State.java
 create mode 100644 src/test/java/de/fhro/inf/prg3/a11/tests/OpenMensaApiTests.java

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6c234cd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,40 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Gradle template
+.gradle
+/build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Cache of project
+.gradletasknamecache
+
+# User-specific stuff:
+**/.idea/
+
+# CMake
+cmake-build-debug/
+
+## File-based project format:
+*.iws
+*.iml
+
+## Plugin-specific files:
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..265d280
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,40 @@
+buildscript {
+    repositories {
+        jcenter()
+    }
+
+    dependencies {
+        classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'
+    }
+}
+
+// Apply the java plugin to add support for Java
+apply plugin: 'java'
+
+// Apply the application plugin to add support for building an application
+apply plugin: 'application'
+
+apply plugin: 'com.github.ben-manes.versions'
+
+repositories {
+    jcenter()
+}
+
+// Define the main class for the application
+mainClassName = 'App'
+
+dependencies {
+    /* Commons Lang3 */
+    implementation "org.apache.commons:commons-lang3:$commons_lang_version"
+
+    /* Retrofit */
+    implementation "com.squareup.retrofit2:retrofit:$retrofit2_version"
+    implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version"
+
+    /* JUnit 5 */
+    testImplementation("org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}")
+    testRuntime("org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}")
+    testRuntime("org.junit.platform:junit-platform-launcher:${junitPlatformVersion}")
+    testRuntime("org.apache.logging.log4j:log4j-core:${log4jVersion}")
+    testRuntime("org.apache.logging.log4j:log4j-jul:${log4jVersion}")
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..0f59cd8
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,5 @@
+commons_lang_version=3.7
+retrofit2_version=2.3.0
+junitPlatformVersion = 1.1.0-M1
+junitJupiterVersion = 5.1.0-M1
+log4jVersion = 2.10.0
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..01b8bf6b1f99cad9213fc495b33ad5bbab8efd20
GIT binary patch
literal 54329
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%0A;te<=4=4U^A
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

literal 0
HcmV?d00001

diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..933b647
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..cccdd3d
--- /dev/null
+++ b/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/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /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=
+
+@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 0000000..17d6647
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,18 @@
+/*
+ * This settings file was generated by the Gradle 'init' task.
+ *
+ * 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/4.4/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 = '11-futures-cli'
diff --git a/src/main/java/de/fhro/inf/prg3/a11/App.java b/src/main/java/de/fhro/inf/prg3/a11/App.java
new file mode 100644
index 0000000..aa61eb1
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/App.java
@@ -0,0 +1,130 @@
+package de.fhro.inf.prg3.a11;
+
+import de.fhro.inf.prg3.a11.openmensa.OpenMensaAPI;
+import de.fhro.inf.prg3.a11.openmensa.OpenMensaAPIService;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Scanner;
+import java.util.stream.IntStream;
+
+/**
+ * @author Peter Kurfer
+ * Created on 12/16/17.
+ */
+public class App {
+    private static final String OPEN_MENSA_DATE_FORMAT = "yyyy-MM-dd";
+
+    private static final SimpleDateFormat dateFormat = new SimpleDateFormat(OPEN_MENSA_DATE_FORMAT, Locale.getDefault());
+    private static final Scanner inputScanner = new Scanner(System.in);
+    private static final OpenMensaAPI openMensaAPI = OpenMensaAPIService.getInstance().getOpenMensaAPI();
+    private static final Calendar currentDate = Calendar.getInstance();
+    private static int currentCanteenId = -1;
+
+    public static void main(String[] args) throws ParseException {
+        MenuSelection selection;
+        /* loop while true to get back to the menu every time an action was performed */
+        do {
+            selection = menu();
+            switch (selection) {
+                case SHOW_CANTEENS:
+                    printCanteens();
+                    break;
+                case SET_CANTEEN:
+                    readCanteen();
+                    break;
+                case SHOW_MEALS:
+                    printMeals();
+                    break;
+                case SET_DATE:
+                    readDate();
+                    break;
+                case QUIT:
+                    System.exit(0);
+
+            }
+        } while (true);
+    }
+
+    private static void printCanteens() {
+        System.out.print("Fetching canteens [");
+        /* TODO fetch all canteens and print them to STDOUT
+         * at first get a page without an index to be able to extract the required pagination information
+         * afterwards you can iterate the remaining pages
+         * keep in mind that you should await the process as the user has to select canteen with a specific id */
+    }
+
+    private static void printMeals() {
+        /* TODO fetch all meals for the currently selected canteen
+         * to avoid errors retrieve at first the state of the canteen and check if the canteen is opened at the selected day
+         * don't forget to check if a canteen was selected previously! */
+    }
+
+    /**
+     * Utility method to select a canteen
+     */
+    private static void readCanteen() {
+        /* typical input reading pattern */
+        boolean readCanteenId = false;
+        do {
+            try {
+                System.out.println("Enter canteen id:");
+                currentCanteenId = inputScanner.nextInt();
+                readCanteenId = true;
+            }catch (Exception e) {
+                System.out.println("Sorry could not read the canteen id");
+            }
+        }while (!readCanteenId);
+    }
+
+    /**
+     * Utility method to read a date and update the calendar
+     */
+    private static void readDate() {
+        /* typical input reading pattern */
+        boolean readDate = false;
+        do {
+            try {
+                System.out.println("Pleae enter date in the format yyyy-mm-dd:");
+                Date d = dateFormat.parse(inputScanner.next());
+                currentDate.setTime(d);
+                readDate = true;
+            }catch (ParseException p) {
+                System.out.println("Sorry, the entered date could not be parsed.");
+            }
+        }while (!readDate);
+
+    }
+
+    /**
+     * Utility method to print menu and read the user selection
+     * @return user selection as MenuSelection
+     */
+    private static MenuSelection menu() {
+        IntStream.range(0, 20).forEach(i -> System.out.print("#"));
+        System.out.println();
+        System.out.println("1) Show canteens");
+        System.out.println("2) Set canteen");
+        System.out.println("3) Show meals");
+        System.out.println("4) Set date");
+        System.out.println("5) Quit");
+        IntStream.range(0, 20).forEach(i -> System.out.print("#"));
+        System.out.println();
+
+        switch (inputScanner.nextInt()) {
+            case 1:
+                return MenuSelection.SHOW_CANTEENS;
+            case 2:
+                return MenuSelection.SET_CANTEEN;
+            case 3:
+                return MenuSelection.SHOW_MEALS;
+            case 4:
+                return MenuSelection.SET_DATE;
+            default:
+                return MenuSelection.QUIT;
+        }
+    }
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/MenuSelection.java b/src/main/java/de/fhro/inf/prg3/a11/MenuSelection.java
new file mode 100644
index 0000000..5d73375
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/MenuSelection.java
@@ -0,0 +1,13 @@
+package de.fhro.inf.prg3.a11;
+
+/**
+ * @author Peter Kurfer
+ * Created on 12/18/17.
+ */
+public enum MenuSelection {
+    SHOW_CANTEENS,
+    SET_CANTEEN,
+    SHOW_MEALS,
+    SET_DATE,
+    QUIT
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPI.java b/src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPI.java
new file mode 100644
index 0000000..bcd2040
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPI.java
@@ -0,0 +1,54 @@
+package de.fhro.inf.prg3.a11.openmensa;
+
+import de.fhro.inf.prg3.a11.openmensa.model.Canteen;
+import de.fhro.inf.prg3.a11.openmensa.model.Meal;
+import de.fhro.inf.prg3.a11.openmensa.model.State;
+import retrofit2.Response;
+import retrofit2.http.GET;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * @author Peter Kurfer
+ */
+public interface OpenMensaAPI {
+
+    /**
+     * Retrieve the first page of all canteens
+     * includes the response wrapper to be able to extract required headers for further pagination handling
+     * @return first page of canteens wrapped in a response object
+     */
+    @GET("canteens")
+    CompletableFuture<Response<List<Canteen>>> getCanteens();
+
+    /**
+     * Retrieve any page of all canteens
+     * does not include the response wrapper because the required information should be retrieved before this method is used
+     * @param pageNumber index of the page to retrieve
+     * @return List of canteens as async future
+     */
+    @GET("canteens")
+    CompletableFuture<List<Canteen>> getCanteens(@Query("page")int pageNumber);
+
+    /**
+     * Get the state of a canteen specified by its id at the specified date
+     * @param canteenId id of the canteen
+     * @param date date for which the state should be looked up
+     * @return state of the mensa - may be closed or !closed
+     */
+    @GET("canteens/{canteenId}/days/{date}")
+    CompletableFuture<State> getMensaState(@Path("canteenId") int canteenId, @Path("date") String date);
+
+    /**
+     * Retrieve the meals for specified date served at canteen specified by its id
+     * @param canteenId id of the canteen
+     * @param date date for which the meals should be retrieved
+     * @return List of meals wrapped as async future
+     */
+    @GET("canteens/{canteenId}/days/{date}/meals")
+    CompletableFuture<List<Meal>> getMeals(@Path("canteenId") int canteenId, @Path("date") String date);
+
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPIService.java b/src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPIService.java
new file mode 100644
index 0000000..53e00b0
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/openmensa/OpenMensaAPIService.java
@@ -0,0 +1,37 @@
+package de.fhro.inf.prg3.a11.openmensa;
+
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+/**
+ * OpenMensaAPI service
+ * holds an instance of OpenMensaAPI to avoid multiple instantiations of the API
+ * @author Peter Kurfer
+ */
+
+public final class OpenMensaAPIService {
+
+    /* singleton instance */
+    private static final OpenMensaAPIService ourInstance = new OpenMensaAPIService();
+    private final OpenMensaAPI openMensaAPI;
+
+    /* singleton accessor */
+    public static OpenMensaAPIService getInstance() {
+        return ourInstance;
+    }
+
+    private OpenMensaAPIService() {
+
+        /* Initialize Retrofit */
+        Retrofit retrofit = new Retrofit.Builder()
+                .baseUrl("http://openmensa.org/api/v2/")
+                .addConverterFactory(GsonConverterFactory.create())
+                .build();
+
+        openMensaAPI = retrofit.create(OpenMensaAPI.class);
+    }
+
+    public OpenMensaAPI getOpenMensaAPI() {
+        return openMensaAPI;
+    }
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Canteen.java b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Canteen.java
new file mode 100644
index 0000000..fa8a9be
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Canteen.java
@@ -0,0 +1,90 @@
+package de.fhro.inf.prg3.a11.openmensa.model;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+/**
+ * Data transfer object for a canteen retrieved from the OpenMensaAPI
+ * @author Peter Kurfer
+ */
+
+public final class Canteen {
+    private int id;
+    private String name;
+    private String city;
+    private String address;
+    private double[] coordinates;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public double[] getCoordinates() {
+        return coordinates;
+    }
+
+    public void setCoordinates(double[] coordinates) {
+        this.coordinates = coordinates;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("%s\t%s", getId(), getName());
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+
+        if (!(o instanceof Canteen)) return false;
+
+        Canteen canteen = (Canteen) o;
+
+        return new EqualsBuilder()
+                .append(getId(), canteen.getId())
+                .append(getName(), canteen.getName())
+                .append(getCity(), canteen.getCity())
+                .append(getAddress(), canteen.getAddress())
+                .append(getCoordinates(), canteen.getCoordinates())
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(getId())
+                .append(getName())
+                .append(getCity())
+                .append(getAddress())
+                .append(getCoordinates())
+                .toHashCode();
+    }
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Meal.java b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Meal.java
new file mode 100644
index 0000000..b55511c
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/Meal.java
@@ -0,0 +1,86 @@
+package de.fhro.inf.prg3.a11.openmensa.model;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Data transfer object for a meal retrieved from the OpenMensaAPI
+ * @author Peter Kurfer
+ */
+
+public final class Meal {
+    private int id;
+    private String name;
+    private String category;
+    private List<String> notes;
+
+    public Meal() {
+        notes = new LinkedList<>();
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public List<String> getNotes() {
+        return notes;
+    }
+
+    public void setNotes(List<String> notes) {
+        this.notes = notes;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+
+        if (!(o instanceof Meal)) return false;
+
+        Meal meal = (Meal) o;
+
+        return new EqualsBuilder()
+                .append(getId(), meal.getId())
+                .append(getName(), meal.getName())
+                .append(getCategory(), meal.getCategory())
+                .append(getNotes(), meal.getNotes())
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(getId())
+                .append(getName())
+                .append(getCategory())
+                .append(getNotes())
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return name;
+    }
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/PageInfo.java b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/PageInfo.java
new file mode 100644
index 0000000..e85a6f1
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/PageInfo.java
@@ -0,0 +1,87 @@
+package de.fhro.inf.prg3.a11.openmensa.model;
+
+import okhttp3.Headers;
+import retrofit2.Response;
+
+import java.util.function.Function;
+
+/**
+ * Utility class to handle HTTP response header containing the pagination information
+ * required to fetch all pages of an entity
+ *
+ * @author Peter Kurfer
+ */
+
+public final class PageInfo {
+
+    private static final String TOTAL_PAGES_HEADER = "X-Total-Pages";
+    private static final String TOTAL_ITEM_COUNT_HEADER = "X-Total-Count";
+    private static final String ITEM_COUNT_PER_PAGE_HEADER = "X-Per-Page";
+    private static final String CURRENT_PAGE_INDEX_HEADER = "X-Current-Page";
+
+    private final int totalCountOfPages;
+    private final int totalCountOfItems;
+    private final int itemCountPerPage;
+    private final int currentPageIndex;
+
+    /**
+     * Default constructor
+     * only used by 'factory method' `extractFromReponse(...)`
+     */
+    private PageInfo(int totalCountOfPages, int totalCountOfItems, int itemCountPerPage, int currentPageIndex) {
+        this.totalCountOfPages = totalCountOfPages;
+        this.totalCountOfItems = totalCountOfItems;
+        this.itemCountPerPage = itemCountPerPage;
+        this.currentPageIndex = currentPageIndex;
+    }
+
+    /**
+     * @return total count of pages or -1 if required header was not present
+     */
+    public int getTotalCountOfPages() {
+        return totalCountOfPages;
+    }
+
+    /**
+     * @return total item count or -1 if required header was not present
+     */
+    public int getTotalCountOfItems() {
+        return totalCountOfItems;
+    }
+
+    /**
+     * @return item count on every page or -1 if required header was not present
+     */
+    public int getItemCountPerPage() {
+        return itemCountPerPage;
+    }
+
+    /**
+     * @return current page index or -1 if required header was not present
+     */
+    public int getCurrentPageIndex() {
+        return currentPageIndex;
+    }
+
+    /**
+     * Factory method to create a PageInfo by parsing the headers of a response which includes the required information
+     *
+     * @param apiResponse response object to parse
+     * @param <T> concrete response type
+     * @return PageInfo instance - may contain default fallback values see getters
+     */
+    public static <T extends Response<?>> PageInfo extractFromResponse(T apiResponse) {
+        Headers headers = apiResponse.headers();
+        int totalPages = extractFromHeaders(headers, TOTAL_PAGES_HEADER, -1);
+        int totalItemCount = extractFromHeaders(headers, TOTAL_ITEM_COUNT_HEADER, -1);
+        int itemCountPerPage = extractFromHeaders(headers, ITEM_COUNT_PER_PAGE_HEADER, -1);
+        int currentPageIndex = extractFromHeaders(headers, CURRENT_PAGE_INDEX_HEADER, -1);
+
+        return new PageInfo(totalPages, totalItemCount, itemCountPerPage, currentPageIndex);
+    }
+
+    private static int extractFromHeaders(Headers headers, String headerName, int fallback) {
+        String headerValue = headers.get(headerName);
+        return headerValue == null ? fallback : Integer.parseInt(headerValue);
+    }
+}
diff --git a/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/State.java b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/State.java
new file mode 100644
index 0000000..352a84b
--- /dev/null
+++ b/src/main/java/de/fhro/inf/prg3/a11/openmensa/model/State.java
@@ -0,0 +1,66 @@
+package de.fhro.inf.prg3.a11.openmensa.model;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * Data transfer object for a state of a canteen retrieved from the OpenMensaAPI
+ * @author Peter Kurfer
+ */
+
+public final class State {
+
+    private String date;
+    private boolean closed = true;
+
+    public State() {
+        date = "";
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public boolean isClosed() {
+        return closed;
+    }
+
+    public void setClosed(boolean closed) {
+        this.closed = closed;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+
+        if (!(o instanceof State)) return false;
+
+        State state = (State) o;
+
+        return new EqualsBuilder()
+                .append(isClosed(), state.isClosed())
+                .append(getDate(), state.getDate())
+                .isEquals();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 37)
+                .append(getDate())
+                .append(isClosed())
+                .toHashCode();
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("date", date)
+                .append("closed", closed)
+                .toString();
+    }
+}
diff --git a/src/test/java/de/fhro/inf/prg3/a11/tests/OpenMensaApiTests.java b/src/test/java/de/fhro/inf/prg3/a11/tests/OpenMensaApiTests.java
new file mode 100644
index 0000000..4ad44f2
--- /dev/null
+++ b/src/test/java/de/fhro/inf/prg3/a11/tests/OpenMensaApiTests.java
@@ -0,0 +1,84 @@
+package de.fhro.inf.prg3.a11.tests;
+
+import de.fhro.inf.prg3.a11.openmensa.OpenMensaAPI;
+import de.fhro.inf.prg3.a11.openmensa.OpenMensaAPIService;
+import de.fhro.inf.prg3.a11.openmensa.model.Canteen;
+import de.fhro.inf.prg3.a11.openmensa.model.PageInfo;
+import de.fhro.inf.prg3.a11.openmensa.model.State;
+import org.junit.jupiter.api.Test;
+import retrofit2.Response;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Locale;
+import java.util.concurrent.ExecutionException;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * @author Peter Kurfer
+ */
+
+class OpenMensaApiTests {
+
+    private static final int FHRO_MENSA_ID = 229;
+    private static final String OPEN_MENSA_DATE_FORMAT = "yyyy-MM-dd";
+    private final SimpleDateFormat dateFormat;
+    private final OpenMensaAPI openMensaAPI;
+    private final Calendar calendar;
+
+    OpenMensaApiTests() {
+        dateFormat = new SimpleDateFormat(OPEN_MENSA_DATE_FORMAT, Locale.getDefault());
+        openMensaAPI = OpenMensaAPIService.getInstance().getOpenMensaAPI();
+        calendar = Calendar.getInstance();
+    }
+
+    @Test
+    void testGetFirstMensaPage() throws ExecutionException, InterruptedException {
+        Response<List<Canteen>> canteensResponse = openMensaAPI.getCanteens().get();
+
+        assertNotNull(canteensResponse);
+        assertNotNull(canteensResponse.body());
+        assertNotEquals(0, canteensResponse.body().size());
+
+        for (Canteen c : canteensResponse.body()) {
+            System.out.println(c.getName());
+        }
+    }
+
+    @Test
+    void testExtractPageInfo() throws ExecutionException, InterruptedException {
+        Response<List<Canteen>> canteensResponse = openMensaAPI.getCanteens().get();
+
+        PageInfo pageInfo = PageInfo.extractFromResponse(canteensResponse);
+
+        assertNotNull(pageInfo);
+        assertEquals(canteensResponse.body().size(), pageInfo.getItemCountPerPage());
+        assertTrue(pageInfo.getTotalCountOfItems() > 0);
+        assertTrue(pageInfo.getTotalCountOfPages() > 0);
+        assertTrue(pageInfo.getCurrentPageIndex() > 0);
+    }
+
+    @Test
+    void testGetMensaState() throws ExecutionException, InterruptedException {
+        State mensaState = openMensaAPI.getMensaState(FHRO_MENSA_ID, dateFormat.format(calendar.getTime())).get();
+
+        assertNotNull(mensaState);
+    }
+
+    @Test
+    void testGetMultiplePages() throws ExecutionException, InterruptedException {
+        Response<List<Canteen>> firstPage = openMensaAPI.getCanteens().get();
+
+        assertNotNull(firstPage);
+        assertNotNull(firstPage.body());
+
+        PageInfo pageInfo = PageInfo.extractFromResponse(firstPage);
+        for(int i = 2; i <= pageInfo.getTotalCountOfPages(); i++) {
+            List<Canteen> canteensPage = openMensaAPI.getCanteens(i).get();
+            assertNotNull(canteensPage);
+            assertNotEquals(0, canteensPage.size());
+        }
+    }
+}
-- 
GitLab