From a425f0af08c52e9e4debd0e9094ee68f7722a306 Mon Sep 17 00:00:00 2001 From: Christian Dresen <c.dresen@fh-muenster.de> Date: Tue, 14 Mar 2017 19:43:32 +0100 Subject: [PATCH] no message --- WarpDrinkApp/.idea/encodings.xml | 6 + WarpDrinkApp/.idea/gradle.xml | 2 +- WarpDrinkApp/.idea/misc.xml | 26 ++- WarpDrinkApp/.idea/runConfigurations.xml | 12 ++ WarpDrinkApp/WarpDrinkApp.iml | 2 +- WarpDrinkApp/app/app.iml | 44 ++--- WarpDrinkApp/app/build.gradle | 9 +- WarpDrinkApp/app/src/main/AndroidManifest.xml | 15 +- .../ms/itsecteam/warpdrink/MainActivity.java | 88 ++++++++-- .../warpdrink/WarpDrinkApplication.java | 9 -- .../itsecteam/warpdrink/data/RestService.java | 32 ++++ .../warpdrink/data/SQLiteService.java | 68 ++++++++ .../warpdrink/data/models/local/Product.java | 95 +++++++++++ .../{objects => models/local}/Setting.java | 4 +- .../data/{objects => models/local}/User.java | 46 +++--- .../data/models/rest/RestProduct.java | 86 ++++++++++ .../warpdrink/data/models/rest/RestUser.java | 65 ++++++++ .../data/rest/RequestSingleObject.java | 37 ----- .../warpdrink/data/rest/RequestUserList.java | 50 ------ .../warpdrink/data/rest/RestClient.java | 84 ---------- .../data/rest/http/HttpGetRequest.java | 42 ----- .../data/rest/http/HttpPostRequest.java | 48 ------ .../data/rest/http/HttpPutRequest.java | 49 ------ .../warpdrink/dialogs/ChargeCustomDialog.java | 2 - .../warpdrink/dialogs/ChargeDialog.java | 2 - .../warpdrink/dialogs/NewUserDialog.java | 1 - .../warpdrink/dialogs/SettingsDialog.java | 6 +- .../warpdrink/manager/DataManager.java | 37 +++-- .../warpdrink/manager/DatabaseManager.java | 59 ------- .../warpdrink/manager/MainManager.java | 152 ++++++++++++++---- .../warpdrink/manager/UiManager.java | 72 ++++++--- .../warpdrink/orderList/ListViewAdapter.java | 5 +- .../orderList/ListViewAdapterProducts.java | 59 +++++++ .../itsecteam/warpdrink/orderList/Order.java | 22 +-- .../app/src/main/res/layout/activity_main.xml | 29 ++-- .../src/main/res/layout/order_list_item.xml | 26 ++- .../src/main/res/layout/product_list_item.xml | 29 ++++ .../app/src/main/res/menu/menu_main.xml | 6 + .../app/src/main/res/values/strings.xml | 1 + WarpDrinkApp/build.gradle | 4 +- 40 files changed, 875 insertions(+), 556 deletions(-) create mode 100644 WarpDrinkApp/.idea/encodings.xml create mode 100644 WarpDrinkApp/.idea/runConfigurations.xml create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Product.java rename WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/{objects => models/local}/Setting.java (95%) rename WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/{objects => models/local}/User.java (53%) create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestUser.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java delete mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DatabaseManager.java create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapterProducts.java create mode 100644 WarpDrinkApp/app/src/main/res/layout/product_list_item.xml diff --git a/WarpDrinkApp/.idea/encodings.xml b/WarpDrinkApp/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/WarpDrinkApp/.idea/encodings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding"> + <file url="PROJECT" charset="UTF-8" /> + </component> +</project> \ No newline at end of file diff --git a/WarpDrinkApp/.idea/gradle.xml b/WarpDrinkApp/.idea/gradle.xml index 3ec5955..d390b65 100644 --- a/WarpDrinkApp/.idea/gradle.xml +++ b/WarpDrinkApp/.idea/gradle.xml @@ -5,7 +5,7 @@ <GradleProjectSettings> <option name="distributionType" value="LOCAL" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.2.1" /> + <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.8" /> <option name="gradleJvm" value="1.7" /> <option name="modules"> <set> diff --git a/WarpDrinkApp/.idea/misc.xml b/WarpDrinkApp/.idea/misc.xml index f6607a5..1a3eaff 100644 --- a/WarpDrinkApp/.idea/misc.xml +++ b/WarpDrinkApp/.idea/misc.xml @@ -3,6 +3,30 @@ <component name="EntryPointsManager"> <entry_points version="2.0" /> </component> + <component name="NullableNotNullManager"> + <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> + <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> + <option name="myNullables"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> + </list> + </value> + </option> + <option name="myNotNulls"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> + </list> + </value> + </option> + </component> <component name="ProjectLevelVcsManager" settingsEditedManually="false"> <OptionsSetting value="true" id="Add" /> <OptionsSetting value="true" id="Remove" /> @@ -13,7 +37,7 @@ <ConfirmationsSetting value="0" id="Add" /> <ConfirmationsSetting value="0" id="Remove" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/WarpDrinkApp/.idea/runConfigurations.xml b/WarpDrinkApp/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/WarpDrinkApp/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RunConfigurationProducerService"> + <option name="ignoredProducers"> + <set> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> + </set> + </option> + </component> +</project> \ No newline at end of file diff --git a/WarpDrinkApp/WarpDrinkApp.iml b/WarpDrinkApp/WarpDrinkApp.iml index ce931f9..4ff09d8 100644 --- a/WarpDrinkApp/WarpDrinkApp.iml +++ b/WarpDrinkApp/WarpDrinkApp.iml @@ -8,7 +8,7 @@ </configuration> </facet> </component> - <component name="NewModuleRootManager" inherit-compiler-output="true"> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> <exclude-output /> <content url="file://$MODULE_DIR$"> <excludeFolder url="file://$MODULE_DIR$/.gradle" /> diff --git a/WarpDrinkApp/app/app.iml b/WarpDrinkApp/app/app.iml index 89bc1db..4fefdc2 100644 --- a/WarpDrinkApp/app/app.iml +++ b/WarpDrinkApp/app/app.iml @@ -12,10 +12,12 @@ <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" /> <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> - <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" /> <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" /> <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" /> - <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" /> + <afterSyncTasks> + <task>generateDebugAndroidTestSources</task> + <task>generateDebugSources</task> + </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> @@ -24,7 +26,7 @@ </configuration> </facet> </component> - <component name="NewModuleRootManager" inherit-compiler-output="false"> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false"> <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" /> <exclude-output /> @@ -34,13 +36,13 @@ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> @@ -63,43 +65,41 @@ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.2.0/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> </content> <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" exported="" name="scribe-codepath-0.0.3" level="project" /> + <orderEntry type="library" exported="" name="httpclient-android-4.3.5.1" level="project" /> <orderEntry type="library" exported="" name="activeandroid-3.0" level="project" /> - <orderEntry type="library" exported="" name="jackson-core-2.0.1" level="project" /> <orderEntry type="library" exported="" name="support-annotations-22.2.0" level="project" /> - <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" /> - <orderEntry type="library" exported="" name="spring-android-rest-template-1.0.1.RELEASE" level="project" /> - <orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" /> - <orderEntry type="library" exported="" name="gson-1.7.2" level="project" /> - <orderEntry type="library" exported="" name="codepath-utils" level="project" /> + <orderEntry type="library" exported="" name="okio-1.9.0" level="project" /> + <orderEntry type="library" exported="" name="retrofit-2.0.0-beta2" level="project" /> + <orderEntry type="library" exported="" name="converter-gson-2.0.0-beta2" level="project" /> <orderEntry type="library" exported="" name="jackson-databind-2.0.1" level="project" /> - <orderEntry type="library" exported="" name="httpclient-android-4.3.5.1" level="project" /> <orderEntry type="library" exported="" name="jackson-annotations-2.0.1" level="project" /> + <orderEntry type="library" exported="" name="spring-android-rest-template-1.0.1.RELEASE" level="project" /> + <orderEntry type="library" exported="" name="okhttp-2.7.5" level="project" /> + <orderEntry type="library" exported="" name="antlr4-runtime-4.5.3" level="project" /> + <orderEntry type="library" exported="" name="gson-2.7" level="project" /> + <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" /> <orderEntry type="library" exported="" name="spring-android-core-1.0.1.RELEASE" level="project" /> + <orderEntry type="library" exported="" name="codepath-utils" level="project" /> + <orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" /> + <orderEntry type="library" exported="" name="jackson-core-2.0.1" level="project" /> </component> </module> \ No newline at end of file diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle index e2b6e48..eab9d98 100644 --- a/WarpDrinkApp/app/build.gradle +++ b/WarpDrinkApp/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion '23.0.0 rc2' + buildToolsVersion '23.0.1' defaultConfig { applicationId "ms.itsecteam.warpdrink" @@ -32,7 +32,12 @@ dependencies { compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.fasterxml.jackson.core:jackson-databind:2.0.1' compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE' - compile 'com.google.code.gson:gson:1.7.2' compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' + compile group: 'com.squareup.retrofit' , name: 'retrofit' , version: '2.0.0-beta2' + compile group: 'com.squareup.retrofit' , name: 'converter-gson' , version: '2.0.0-beta2' + compile group: 'com.google.code.gson' , name: 'gson' , version: '2.7' + compile group: 'com.squareup.okio' , name: 'okio' , version: '1.9.0' + compile group: 'com.squareup.okhttp', name: 'okhttp', version: '2.7.5' + compile group: 'org.antlr', name: 'antlr4-runtime', version: '4.5.3' } diff --git a/WarpDrinkApp/app/src/main/AndroidManifest.xml b/WarpDrinkApp/app/src/main/AndroidManifest.xml index 4e628c4..99c6900 100644 --- a/WarpDrinkApp/app/src/main/AndroidManifest.xml +++ b/WarpDrinkApp/app/src/main/AndroidManifest.xml @@ -2,12 +2,18 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ms.itsecteam.warpdrink" > <uses-permission android:name="android.permission.INTERNET"></uses-permission> + <uses-permission android:name="android.permission.NFC" /> + + <uses-feature + android:name="android.hardware.nfc" + android:required="true" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" + android:largeHeap="true" android:name="ms.itsecteam.warpdrink.WarpDrinkApplication" - android:theme="@style/AppTheme" > + android:theme="@style/AppTheme"> <meta-data android:name="AA_DB_NAME" android:value="warpdrink_data.db" /> @@ -19,12 +25,19 @@ android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="landscape" + android:windowSoftInputMode="stateVisible" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> + <intent-filter> + <action android:name="android.nfc.action.TECH_DISCOVERED" /> + </intent-filter> + <intent-filter> + <action android:name="android.nfc.action.TAG_DISCOVERED"/> + </intent-filter> </activity> </application> diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java index bd2b1bc..7ed3ff0 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java @@ -1,38 +1,43 @@ package ms.itsecteam.warpdrink; +import android.app.AlertDialog; +import android.app.PendingIntent; import android.content.DialogInterface; -import android.support.v7.app.ActionBarActivity; +import android.content.Intent; +import android.content.IntentFilter; +import android.nfc.NfcAdapter; +import android.nfc.tech.NfcF; import android.os.Bundle; -import android.view.KeyEvent; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.widget.Toast; - - -import java.util.List; - -import ms.itsecteam.warpdrink.data.objects.User; +import ms.itsecteam.warpdrink.data.models.local.User; import ms.itsecteam.warpdrink.dialogs.NewUserDialog; import ms.itsecteam.warpdrink.dialogs.SettingsDialog; +import ms.itsecteam.warpdrink.manager.DataManager; import ms.itsecteam.warpdrink.manager.MainManager; import ms.itsecteam.warpdrink.manager.UiManager; import ms.itsecteam.warpdrink.orderList.Order; -public class MainActivity extends ActionBarActivity implements View.OnClickListener { // implements View.OnClickListener, View.OnKeyListener, AdapterView.OnItemClickListener, DialogInterface.OnClickListener { - - private User currentUser; - private List<User> users; +public class MainActivity extends AppCompatActivity implements View.OnClickListener { private MainManager manager; + private NfcAdapter nfcAdapter; + private PendingIntent mPendingIntent; + private IntentFilter[] mIntentFilters; + private String[][] mNFCTechLists; + public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); - return true; } @@ -40,15 +45,53 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getWindow().addFlags(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); setContentView(R.layout.activity_main); this.manager = MainManager.getInstance(); this.manager.init(this); + this.nfcAdapter = NfcAdapter.getDefaultAdapter(this); + this.mPendingIntent = PendingIntent.getActivity(this, 0, + new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); + IntentFilter ndefIntent = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); + try { + this.mIntentFilters = new IntentFilter[] { ndefIntent }; + } catch (Exception e) { + Log.e("TagDispatch", e.toString()); + } + mNFCTechLists = new String[][] { new String[] { NfcF.class.getName() } }; + } + + public void onResume() { + super.onResume(); + if (nfcAdapter != null) { + nfcAdapter.enableForegroundDispatch(this, mPendingIntent, mIntentFilters, mNFCTechLists); + } + } + + @Override + public void onPause() { + super.onPause(); + + if (nfcAdapter != null) + nfcAdapter.disableForegroundDispatch(this); + } + protected void onNewIntent(Intent intent) { + String card_id = byteArrayToHex(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); + DataManager.getInstance().setLastCardId(card_id); + if(this.manager.getCurrentUser() == null) { + User u = User.getByCardId(card_id); + this.manager.setCurrentUser(u); + } + } + public static String byteArrayToHex(byte[] a) { + StringBuilder sb = new StringBuilder(a.length * 2); + for(byte b: a) + sb.append(String.format("%02x", b & 0xff)); + return sb.toString(); } public void onClick(View v) { @@ -63,6 +106,21 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe case R.id.action_new_user: new NewUserDialog().show(); break; + case R.id.action_learn_card_id: + if (this.manager.getCurrentUser() != null){ + new AlertDialog.Builder(this) + .setTitle(this.getResources().getString(R.string.confirm_payment_title)) + .setMessage("Bitte die Karte vorhalten und nach dem Ton auf ok drücken.") + .setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + MainManager.getInstance().saveCardId(); + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + } else { + Toast.makeText(this, "Bitte User auswählen", Toast.LENGTH_LONG).show(); + } default: break; } @@ -79,7 +137,7 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction()==KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { if(this.atxvAdapter.getCount() == 1) { - setCurrentUser(DatabaseManager.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(0)).getUserid())); + setCurrentUser(SQLiteService.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(0)).getUserid())); this.atxvName.setText(this.atxvAdapter.getItem(0).toString()); this.atxvName.dismissDropDown(); } @@ -90,7 +148,7 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - setCurrentUser(DatabaseManager.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(position)).getUserid())); + setCurrentUser(SQLiteService.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(position)).getUserid())); } @Override diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/WarpDrinkApplication.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/WarpDrinkApplication.java index b9c47b3..e03ffc8 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/WarpDrinkApplication.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/WarpDrinkApplication.java @@ -1,19 +1,10 @@ package ms.itsecteam.warpdrink; - -import android.util.Log; - import com.activeandroid.ActiveAndroid; -import ms.itsecteam.warpdrink.manager.MainManager; - -/** - * Created by Chris on 26.06.2015. - */ public class WarpDrinkApplication extends com.activeandroid.app.Application { @Override public void onCreate() { super.onCreate(); - Log.d("DATABASE", "INIT"); ActiveAndroid.initialize(this); } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java new file mode 100644 index 0000000..0789d59 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java @@ -0,0 +1,32 @@ +package ms.itsecteam.warpdrink.data; + + +import java.util.List; + +import ms.itsecteam.warpdrink.data.models.rest.RestProduct; +import ms.itsecteam.warpdrink.data.models.rest.RestUser; +import retrofit.Call; +import retrofit.http.Body; +import retrofit.http.GET; +import retrofit.http.POST; +import retrofit.http.PUT; +import retrofit.http.Path; + +public interface RestService { + + @GET("users/{user}") + Call<RestUser> getSingleUser(@Path("user") String userid); + + @GET("users/") + Call<List<RestUser>> getAllUser(); + + @POST("users/") + Call<RestUser> addUser(@Body RestUser user); + + @PUT("users/{userid}/") + Call<RestUser> saveUser(@Path("userid") String uid, @Body RestUser user); + + @GET("products/") + Call<List<RestProduct>> getAllProducts(); + +} \ No newline at end of file diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java new file mode 100644 index 0000000..4b51092 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java @@ -0,0 +1,68 @@ +package ms.itsecteam.warpdrink.data; + +import android.util.Log; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import ms.itsecteam.warpdrink.data.models.local.Product; +import ms.itsecteam.warpdrink.data.models.local.Setting; +import ms.itsecteam.warpdrink.data.models.local.User; +import ms.itsecteam.warpdrink.data.models.rest.RestProduct; +import ms.itsecteam.warpdrink.data.models.rest.RestUser; + +public class SQLiteService { + + private static SQLiteService instance; + private SQLiteService() {} + + public static SQLiteService getInstance () { + if (SQLiteService.instance == null) + SQLiteService.instance = new SQLiteService(); + return SQLiteService.instance; + } + + + public void saveSetting(String key, String value) { + Setting.setSetting(key, value); + } + + public String getSetting(String key) { + return this.getSetting(key, ""); + } + + public String getSetting(String key, String defaultValue) { + String value = Setting.getSetting(key); + if(value == null) { + return defaultValue; + } + return value; + } + + public List<User> refreshUserData(List<RestUser> u) { + User.deleteAll(); + List<User> ret_val = new ArrayList<>(); + for (RestUser anU : u) { + User usr = anU.toLocalUser(); + usr.save(); + ret_val.add(usr); + } + Log.d("App", Arrays.toString(u.toArray())); + return ret_val; + } + + public List<Product> refreshProductData(List<RestProduct> body) { + Product.deleteAll(); + List<Product> ret_val = new ArrayList<>(); + for (RestProduct anU : body) { + Product prod = anU.toLocalProduct(); + prod.save(); + ret_val.add(prod); + } + + return ret_val; + } + + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Product.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Product.java new file mode 100644 index 0000000..8b1b5d3 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Product.java @@ -0,0 +1,95 @@ +package ms.itsecteam.warpdrink.data.models.local; + +import com.activeandroid.Model; +import com.activeandroid.annotation.Column; +import com.activeandroid.annotation.Table; +import com.activeandroid.query.Delete; +import com.activeandroid.query.Select; + +import java.util.List; + +@Table(name = "Products") +public class Product extends Model { + + @Column(name = "pid") + private int pid; + + @Column(name = "name") + private String name; + + @Column(name = "category") + private String category; + + @Column(name = "price") + private float price; + + @Column(name = "count") + private int count; + + public Product() { + super(); + } + + public Product(int pid, String name, String category, float price, int count) { + this.pid = pid; + this.name = name; + this.category = category; + this.price = price; + this.count = count; + } + + public int getPid() { + return pid; + } + + public void setPid(int pid) { + this.pid = pid; + } + + 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 float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public static List<Product> getAll() { + return new Select() + .from(Product.class) + .execute(); + } + + public static void deleteAll() { + new Delete().from(Product.class).execute(); + } + + public String toString() { + return this.name; + } + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Setting.java similarity index 95% rename from WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java rename to WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Setting.java index acc94dc..52b6986 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/Setting.java @@ -1,4 +1,4 @@ -package ms.itsecteam.warpdrink.data.objects; +package ms.itsecteam.warpdrink.data.models.local; import com.activeandroid.Model; import com.activeandroid.annotation.Column; @@ -6,8 +6,6 @@ import com.activeandroid.annotation.Table; import com.activeandroid.query.Delete; import com.activeandroid.query.Select; -import java.util.List; - @Table(name = "Settings") public class Setting extends Model { diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/User.java similarity index 53% rename from WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java rename to WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/User.java index 764f381..4bea146 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/local/User.java @@ -1,4 +1,4 @@ -package ms.itsecteam.warpdrink.data.objects; +package ms.itsecteam.warpdrink.data.models.local; import com.activeandroid.Model; import com.activeandroid.annotation.Column; @@ -11,40 +11,40 @@ import java.util.List; @Table(name = "Users") public class User extends Model { - @Column(name = "userid") - private int userid; + @Column(name = "uid") + private String uid; @Column(name = "credit") private double credit; - @Column(name = "name") - private String name; + @Column(name = "card_id") + private String card_id; public User() { super(); } - public User(int userid, String name, double credit) { + public User(String uid, double credit, String card_id) { super(); - this.userid = userid; - this.name = name; + this.uid = uid; this.credit = credit; + this.card_id = card_id; } - public int getUserid() { - return userid; + public String getUserid() { + return uid; } - public void setUserid(int userid) { - this.userid = userid; + public void setUserid(String uid) { + this.uid = uid; } - public String getName() { - return name; + public String getCardId() { + return card_id; } - public void setName(String name) { - this.name = name; + public void setCardId(String card_id) { + this.card_id = card_id; } public double getCredit() { @@ -60,16 +60,24 @@ public class User extends Model { .from(User.class) .execute(); } - public static User getByName(String name) { + public static User getByName(String uid) { return new Select() .from(User.class) - .where("name = ?", name) + .where("uid = ?", uid) .executeSingle(); } public static void deleteAll() { new Delete().from(User.class).execute(); } public String toString() { - return this.name; + return this.uid; } + + public static User getByCardId(String card_id) { + return new Select() + .from(User.class) + .where("card_id = ?", card_id) + .executeSingle(); + } + } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java new file mode 100644 index 0000000..2613bf7 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java @@ -0,0 +1,86 @@ +package ms.itsecteam.warpdrink.data.models.rest; + +import ms.itsecteam.warpdrink.data.models.local.Product; +import ms.itsecteam.warpdrink.data.models.local.User; + +public class RestProduct { + + + private int pid; + private String name; + private String category; + private Float price; + private int count; + + public RestProduct() { + super(); + } + + public RestProduct(int pid, String name, String category, Float price, int count) { + this.pid = pid; + this.name = name; + this.category = category; + this.price = price; + this.count = count; + } + + public int getPid() { + return pid; + } + + public void setPid(int pid) { + this.pid = pid; + } + + 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 Float getPrice() { + return price; + } + + public void setPrice(Float price) { + this.price = price; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public Product toLocalProduct() { + Product p = new Product(); + p.setPid(this.pid); + p.setName(this.name); + p.setCategory(this.category); + p.setPrice(this.price); + p.setCount(this.count); + return p; + } + + public static RestProduct fromLocalProduct(Product product) { + RestProduct restProduct = new RestProduct(); + restProduct.setPid(product.getPid()); + restProduct.setName(product.getName()); + restProduct.setCategory(product.getCategory()); + restProduct.setCount(product.getCount()); + restProduct.setPrice(product.getPrice()); + return restProduct; + } +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestUser.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestUser.java new file mode 100644 index 0000000..c272c0c --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestUser.java @@ -0,0 +1,65 @@ +package ms.itsecteam.warpdrink.data.models.rest; + +import ms.itsecteam.warpdrink.data.models.local.User; + +public class RestUser { + + + private String uid; + private double credit; + private String card_id; + + public RestUser() { + super(); + } + + public RestUser(String uid, double credit, String card_id) { + super(); + this.uid = uid; + this.credit = credit; + this.card_id = card_id; + } + + public String getUserid() { + return uid; + } + + public void setUserid(String uid) { + this.uid = uid; + } + + public String getCardId() { + return card_id; + } + + public void setCardId(String card_id) { + this.card_id = card_id; + } + + public double getCredit() { + return credit; + } + + public void setCredit(double credit) { + this.credit = credit; + } + + public String toString() { + return this.uid; + } + + public User toLocalUser() { + User u = new User(); + u.setCardId(this.card_id); + u.setUserid(this.uid); + u.setCredit(this.credit); + return u; + } + public static RestUser fromLocalUser(User user) { + RestUser rest_user = new RestUser(); + rest_user.setCardId(user.getCardId()); + rest_user.setUserid(user.getUserid()); + rest_user.setCredit(user.getCredit()); + return rest_user; + } +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java deleted file mode 100644 index 565853c..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java +++ /dev/null @@ -1,37 +0,0 @@ -package ms.itsecteam.warpdrink.data.rest; - -import android.os.AsyncTask; -import android.util.Log; - -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.web.client.RestTemplate; - -public class RequestSingleObject<T> extends AsyncTask<Object, Void, T> { - String url; - Class<T> clazz; - public RequestSingleObject initTask(String url, Class<T> clazz) { - this.url = "http://10.0.2.2:8080/warpdrink/rest/"; - - this.url += url; - this.clazz=clazz; - return this; - } - @Override - protected T doInBackground(Object... params) { - try { - RestTemplate restTemplate = new RestTemplate(); - restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); - T ret = restTemplate.getForObject(this.url, clazz); - - return ret; - } catch (Exception e) { - Log.e("MainActivity", e.getMessage(), e); - } - - return null; - } - - @Override - protected void onPostExecute(T result) { } - -} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java deleted file mode 100644 index 4338dfe..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java +++ /dev/null @@ -1,50 +0,0 @@ -package ms.itsecteam.warpdrink.data.rest; - -import android.os.AsyncTask; -import android.util.Log; - -import com.google.gson.Gson; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Arrays; -import java.util.List; - -import ms.itsecteam.warpdrink.data.objects.User; - -public class RequestUserList extends AsyncTask<Object, Void, List<User>> { - String url; - public RequestUserList initTask(String url) { - this.url = "http://10.0.2.2:8080/warpdrink/rest/"; - this.url += url; - return this; - } - @Override - protected List<User> doInBackground(Object... params) { - User[] x; - try { - String line; - String response=""; - OutputStreamWriter writer; - BufferedReader reader; - HttpURLConnection conn; - try { - conn = (HttpURLConnection) new URL(this.url).openConnection(); - conn.setDoOutput(true); - reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); - while ((line = reader.readLine()) != null) { response += line; } - Log.d("TV",response); - x = new Gson().fromJson(response, User[].class); - reader.close(); - return Arrays.asList(x); - } catch (Exception e) { Log.d("TV",e.toString()); } - } catch (Exception e) { - Log.e("MainActivity", e.getMessage(), e); - } - return null; - } - -} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java deleted file mode 100644 index ee532ff..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java +++ /dev/null @@ -1,84 +0,0 @@ -package ms.itsecteam.warpdrink.data.rest; - -import android.util.Log; -import android.widget.Toast; - -import com.google.gson.Gson; - -import org.apache.http.NameValuePair; -import org.apache.http.message.BasicNameValuePair; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import ms.itsecteam.warpdrink.MainActivity; -import ms.itsecteam.warpdrink.data.objects.User; -import ms.itsecteam.warpdrink.data.rest.http.HttpGetRequest; -import ms.itsecteam.warpdrink.data.rest.http.HttpPostRequest; -import ms.itsecteam.warpdrink.data.rest.http.HttpPutRequest; - -public class RestClient { - - private static RestClient instance; - private MainActivity mainActivity; - private RestClient() {} - - public static RestClient getInstance () { - if (RestClient.instance == null) { - RestClient.instance = new RestClient(); - } - return RestClient.instance; - } - - public User getUser(int userid) { - try { - User u = (User) new RequestSingleObject<User>().initTask("user/"+userid,User.class).execute().get(); - return u; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - public List<User> getAllUser() { - try { - String response = new HttpGetRequest().initTask("user/all").execute().get(); - if(response == null) { - this.handleError(); - return null; - } - return Arrays.asList(new Gson().fromJson(response, User[].class)); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - public void saveUserCredit(User u) { - List<NameValuePair> postParams = new ArrayList<NameValuePair>(2); - postParams.add(new BasicNameValuePair("credit", String.valueOf(u.getCredit()))); - new HttpPostRequest().initTask("/user/"+u.getUserid(),postParams).execute(); - } - public boolean createUser(User u) { - List<NameValuePair> postParams = new ArrayList<NameValuePair>(2); - postParams.add(new BasicNameValuePair("name", u.getName())); - try { - String response = new HttpPutRequest().initTask("/user/create",postParams).execute().get(); - if(response != "") { - u = new Gson().fromJson(response, User.class); - if(u.getUserid() != 0) { - u.save(); - return true; - } - } - - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - - private void handleError() { - Toast.makeText(null,"Netzwerkfehler",Toast.LENGTH_LONG); - } -} - diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java deleted file mode 100644 index a16bdcb..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java +++ /dev/null @@ -1,42 +0,0 @@ -package ms.itsecteam.warpdrink.data.rest.http; - -import android.os.AsyncTask; - -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; - -import java.io.BufferedReader; -import java.io.InputStreamReader; - -import ms.itsecteam.warpdrink.manager.DatabaseManager; - -// this.url = "http://10.0.2.2:8080/warpdrink/rest/"; - -public class HttpGetRequest extends AsyncTask<Void, Void, String> { - String url; - public HttpGetRequest initTask(String url) { - this.url = DatabaseManager.getInstance().getSetting("api_url")+"/"+ url; - return this; - } - @Override - protected String doInBackground(Void... params) { - try { - HttpClient client = new DefaultHttpClient(); - HttpGet request = new HttpGet(this.url); - - HttpResponse response = client.execute(request); - BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); - - String line = ""; - String responsestr=""; - while ((line = rd.readLine()) != null) { - responsestr += line; - } - return responsestr; - } catch (Exception e) { - } - return null; - } -} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java deleted file mode 100644 index 4d4b512..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java +++ /dev/null @@ -1,48 +0,0 @@ -package ms.itsecteam.warpdrink.data.rest.http; - -import android.os.AsyncTask; - -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.DefaultHttpClient; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.List; - -import ms.itsecteam.warpdrink.manager.DatabaseManager; - -public class HttpPostRequest extends AsyncTask<Void, Void, String> { - String url; - List<NameValuePair> postParams; - public HttpPostRequest initTask(String url, List<NameValuePair> postParams) { - this.url = DatabaseManager.getInstance().getSetting("api_url")+"/"+ url; - this.postParams =postParams; - return this; - } - @Override - protected String doInBackground(Void... params) { - try { - HttpClient client = new DefaultHttpClient(); - HttpPost request = new HttpPost(this.url); - - request.setEntity(new UrlEncodedFormEntity(this.postParams, "UTF-8")); - - HttpResponse response = client.execute(request); - BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); - - String line = ""; - String responsestr=""; - while ((line = rd.readLine()) != null) { - responsestr += line; - } - return responsestr; - } catch (Exception e) { - } - return null; - } - -} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java deleted file mode 100644 index 4b2661e..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java +++ /dev/null @@ -1,49 +0,0 @@ -package ms.itsecteam.warpdrink.data.rest.http; - -import android.os.AsyncTask; - -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPut; -import org.apache.http.impl.client.DefaultHttpClient; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.List; - -import ms.itsecteam.warpdrink.manager.DatabaseManager; - -public class HttpPutRequest extends AsyncTask<Void, Void, String> { - String url; - List<NameValuePair> postParams; - public HttpPutRequest initTask(String url, List<NameValuePair> postParams) { - this.url = DatabaseManager.getInstance().getSetting("api_url")+"/"+ url; - this.postParams = postParams; - return this; - } - @Override - protected String doInBackground(Void... params) { - try { - HttpClient client = new DefaultHttpClient(); - HttpPut request = new HttpPut(this.url); - - request.setEntity(new UrlEncodedFormEntity(this.postParams, "UTF-8")); - - HttpResponse response = client.execute(request); - BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); - - String line = ""; - String responsestr=""; - while ((line = rd.readLine()) != null) { - responsestr += line; - } - return responsestr; - } catch (Exception e) { - - } - return null; - } - -} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java index 1674b46..f80aaa3 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java @@ -9,8 +9,6 @@ import android.widget.NumberPicker; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; -import ms.itsecteam.warpdrink.data.objects.User; -import ms.itsecteam.warpdrink.data.rest.RestClient; import ms.itsecteam.warpdrink.manager.MainManager; public class ChargeCustomDialog extends Dialog implements diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java index 862eeb1..8bf942a 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java @@ -8,8 +8,6 @@ import android.widget.Button; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; -import ms.itsecteam.warpdrink.data.objects.User; -import ms.itsecteam.warpdrink.data.rest.RestClient; import ms.itsecteam.warpdrink.manager.MainManager; public class ChargeDialog extends Dialog implements diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java index be8edbd..b517a9f 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java @@ -10,7 +10,6 @@ import android.widget.Toast; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; -import ms.itsecteam.warpdrink.manager.DatabaseManager; import ms.itsecteam.warpdrink.manager.MainManager; public class NewUserDialog extends Dialog implements diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/SettingsDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/SettingsDialog.java index 2cd903f..9ea94d4 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/SettingsDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/SettingsDialog.java @@ -9,7 +9,7 @@ import android.widget.TextView; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; -import ms.itsecteam.warpdrink.manager.DatabaseManager; +import ms.itsecteam.warpdrink.data.SQLiteService; public class SettingsDialog extends Dialog implements View.OnClickListener { @@ -34,7 +34,7 @@ public class SettingsDialog extends Dialog implements this.btnAbort.setOnClickListener(this); this.txtApiUrl = (TextView) findViewById(R.id.txtApiUrl); - this.txtApiUrl.setText(DatabaseManager.getInstance().getSetting("api_url")); + this.txtApiUrl.setText(SQLiteService.getInstance().getSetting("api_url")); } @@ -42,7 +42,7 @@ public class SettingsDialog extends Dialog implements public void onClick(View v) { switch (v.getId()) { case R.id.btnSave: - DatabaseManager.getInstance().saveSetting("api_url",txtApiUrl.getText().toString()); + SQLiteService.getInstance().saveSetting("api_url",txtApiUrl.getText().toString()); this.dismiss(); break; case R.id.btnAbort: diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java index d223ba0..e660d3b 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java @@ -1,17 +1,21 @@ package ms.itsecteam.warpdrink.manager; -import ms.itsecteam.warpdrink.data.objects.User; -import ms.itsecteam.warpdrink.data.rest.RestClient; +import android.util.Log; + +import ms.itsecteam.warpdrink.data.models.local.User; +import ms.itsecteam.warpdrink.data.models.rest.RestUser; +import retrofit.Callback; +import retrofit.Response; +import retrofit.Retrofit; public class DataManager { private User currentUser; private double totalAmount; - - private static DataManager ourInstance = new DataManager(); + private String lastCardId; - protected static DataManager getInstance() { + public static DataManager getInstance() { return ourInstance; } @@ -20,9 +24,20 @@ public class DataManager { public void saveCurrentUser() { this.currentUser.save(); - RestClient.getInstance().saveUserCredit(this.currentUser); + RestUser rest_user = RestUser.fromLocalUser(this.currentUser); + MainManager.getInstance().getRestService().saveUser(rest_user.getUserid(), rest_user).enqueue(new Callback<RestUser>() { + @Override + public void onResponse(Response<RestUser> response, Retrofit retrofit) { + } + + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); } + public void performPayment() { this.currentUser.setCredit(this.currentUser.getCredit()-this.totalAmount); this.saveCurrentUser(); @@ -30,7 +45,7 @@ public class DataManager { } public void clearCurrentUser() { - + this.currentUser = null; } public User getCurrentUser() { @@ -53,7 +68,11 @@ public class DataManager { this.totalAmount = totalAmount; } + public void setLastCardId(String lastCardId) { + this.lastCardId = lastCardId; + } - - + public String getLastCardId() { + return lastCardId; + } } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DatabaseManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DatabaseManager.java deleted file mode 100644 index f227cb8..0000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DatabaseManager.java +++ /dev/null @@ -1,59 +0,0 @@ -package ms.itsecteam.warpdrink.manager; - -import android.util.Log; -import java.util.Arrays; -import java.util.List; -import java.util.ListIterator; - -import ms.itsecteam.warpdrink.MainActivity; -import ms.itsecteam.warpdrink.data.objects.Setting; -import ms.itsecteam.warpdrink.data.objects.User; -import ms.itsecteam.warpdrink.data.rest.RestClient; - -public class DatabaseManager { - - private static DatabaseManager instance; - private DatabaseManager() {} - - public static DatabaseManager getInstance () { - if (DatabaseManager.instance == null) - DatabaseManager.instance = new DatabaseManager(); - return DatabaseManager.instance; - } - - public User getUserByName(String name) { - return User.getByName(name); - } - public void refreshUserData(List<User> u) { - User.deleteAll(); - if(u == null) - return; - ListIterator<User> ui = u.listIterator(); - while(ui.hasNext()) { - ui.next().save(); - } - Log.d("App", Arrays.toString(u.toArray())); - } - - - public void saveSetting(String key, String value) { - Setting.setSetting(key, value); - } - - public String getSetting(String key) { - return this.getSetting(key, ""); - } - - public String getSetting(String key, String defaultValue) { - String value = Setting.getSetting(key); - if(value == null) { - return defaultValue; - } - return value; - } - - public User remoteGetUser(int userid) { - return RestClient.getInstance().getUser(userid); - } - -} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java index 450f02a..8d44566 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java @@ -3,58 +3,116 @@ package ms.itsecteam.warpdrink.manager; import android.app.AlertDialog; import android.content.DialogInterface; import android.util.Log; +import android.view.WindowManager; import android.widget.Toast; - -import java.util.Arrays; import java.util.List; -import java.util.ListIterator; - import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; -import ms.itsecteam.warpdrink.data.objects.User; -import ms.itsecteam.warpdrink.data.rest.RestClient; +import ms.itsecteam.warpdrink.data.SQLiteService; +import ms.itsecteam.warpdrink.data.models.local.Product; +import ms.itsecteam.warpdrink.data.models.local.User; +import ms.itsecteam.warpdrink.data.RestService; +import ms.itsecteam.warpdrink.data.models.rest.RestProduct; +import ms.itsecteam.warpdrink.data.models.rest.RestUser; import ms.itsecteam.warpdrink.orderList.Order; +import retrofit.Callback; +import retrofit.GsonConverterFactory; +import retrofit.Response; +import retrofit.Retrofit; public class MainManager { + private RestService restService; private MainActivity mainActivity; - private DatabaseManager databaseManager; + private SQLiteService sqLiteService; private UiManager uiManager; private DataManager dataManager; - private static MainManager ourInstance = new MainManager(); + private static MainManager instance = new MainManager(); + public static MainManager getInstance() { - return ourInstance; + return instance; } private MainManager() { - this.databaseManager = DatabaseManager.getInstance(); + this.sqLiteService = SQLiteService.getInstance(); this.uiManager = UiManager.getInstance(); this.dataManager = DataManager.getInstance(); + this.restService = this.createRestService(); + } + + private RestService createRestService() { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://infra-test.warpzone.ms/api/") + // .baseUrl("http://10.0.2.92:8000/api/") + .addConverterFactory(GsonConverterFactory.create()) + .build(); + return retrofit.create(RestService.class); } public void init(MainActivity mainActivity) { this.mainActivity = mainActivity; this.uiManager.initUi(this.mainActivity); - this.refreshUserData(); + + this.refreshData(); } - public void refreshUserData() { - List<User> userList = RestClient.getInstance().getAllUser(); - this.databaseManager.refreshUserData(userList); - if(userList != null) { - this.uiManager.refreshUserData(userList); - } + public void refreshData() { + Log.d("REST", "Refreshing user data"); + + this.restService.getAllUser().enqueue(new Callback<List<RestUser>>() { + @Override + public void onResponse(Response<List<RestUser>> response, Retrofit retrofit) { + List<User> userList = MainManager.getInstance().sqLiteService.refreshUserData(response.body()); + if (userList != null) { + MainManager.getInstance().uiManager.refreshUserData(userList); + } + Toast.makeText(MainManager.getInstance().mainActivity, "Refresh successful", Toast.LENGTH_LONG).show(); + } + + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); + + this.restService.getAllProducts().enqueue(new Callback<List<RestProduct>>() { + @Override + public void onResponse(Response<List<RestProduct>> response, Retrofit retrofit) { + List<ms.itsecteam.warpdrink.data.models.local.Product> productList = MainManager.getInstance().sqLiteService.refreshProductData(response.body()); + if (productList != null) { + MainManager.getInstance().uiManager.refreshProductData(productList); + } + } + + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); + } public boolean addUser(String name) { - if(this.databaseManager.getUserByName(name) == null) { - User u = new User(); - u.setName(name); - RestClient.getInstance().createUser(u); - this.refreshUserData(); - return true; - } + Log.d("USER", "Start"); + if(User.getByName(name) == null) { + User user = new User(); + user.setUserid(name); + Log.d("USER", "Weter"); + this.restService.addUser(RestUser.fromLocalUser(user)).enqueue(new Callback<RestUser>() { + @Override + public void onResponse(Response<RestUser> response, Retrofit retrofit) { + MainManager.getInstance().refreshData(); + } + + @Override + public void onFailure(Throwable t) { + Log.d("Error", t.getMessage()); + } + }); + + return true; + } return false; } @@ -65,27 +123,30 @@ public class MainManager { } } + public User getCurrentUser() { + return this.dataManager.getCurrentUser(); + } public void clearCurrentUser() { this.dataManager.clearCurrentUser(); this.uiManager.clearCurrentUser(); } - public void addOrder(double amount) { - DataManager.getInstance().addToTotalAmount(amount); + + public void addOrder(Product product) { + DataManager.getInstance().addToTotalAmount(product.getPrice()); this.uiManager.refreshTotalTextView(DataManager.getInstance().getTotalAmount()); } public void removeOrder(Order order) { - DataManager.getInstance().addToTotalAmount((-1)*order.getValue()); + DataManager.getInstance().addToTotalAmount((-1)*order.getProduct().getPrice()); this.uiManager.removeOrder(order); this.uiManager.refreshTotalTextView(DataManager.getInstance().getTotalAmount()); } public void chargeAmount(double amount) { - User user = this.dataManager.getCurrentUser(); - user.setCredit(user.getCredit()+amount); - user.save(); - RestClient.getInstance().saveUserCredit(user); - this.uiManager.refreshCreditTextView(user.getCredit()); + User currentUser = this.dataManager.getCurrentUser(); + currentUser.setCredit(currentUser.getCredit() + amount); + this.dataManager.saveCurrentUser(); + MainManager.getInstance().uiManager.refreshCreditTextView(currentUser.getCredit()); } public void performPayment() { User user = DataManager.getInstance().getCurrentUser(); @@ -122,7 +183,32 @@ public class MainManager { public void setMainActivity(MainActivity mainActivity) { this.mainActivity = mainActivity; - } + } + public RestService getRestService() { return restService; } + + + public void saveCardId() { + final String card_id = this.dataManager.getLastCardId(); + + if (card_id != null) { + new AlertDialog.Builder(this.mainActivity) + .setTitle(this.mainActivity.getResources().getString(R.string.confirm_payment_title)) + .setMessage("Die karten id "+card_id+" wird dem Nutzer "+this.getCurrentUser()+" hinzugefügt") + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + MainManager.getInstance().getCurrentUser().setCardId(card_id); + MainManager.getInstance().dataManager.saveCurrentUser(); + + } + }) + .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + } + } } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java index 7ff6b8b..20d6c50 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java @@ -2,8 +2,8 @@ package ms.itsecteam.warpdrink.manager; import android.util.Log; import android.view.KeyEvent; -import android.view.MenuItem; import android.view.View; +import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; @@ -11,24 +11,20 @@ import android.widget.Button; import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import java.util.ArrayList; import java.util.List; -import java.util.ListIterator; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; -import ms.itsecteam.warpdrink.data.objects.User; +import ms.itsecteam.warpdrink.data.models.local.Product; +import ms.itsecteam.warpdrink.data.models.local.User; import ms.itsecteam.warpdrink.dialogs.ChargeDialog; import ms.itsecteam.warpdrink.dialogs.NewUserDialog; -import ms.itsecteam.warpdrink.dialogs.SettingsDialog; import ms.itsecteam.warpdrink.orderList.ListViewAdapter; +import ms.itsecteam.warpdrink.orderList.ListViewAdapterProducts; import ms.itsecteam.warpdrink.orderList.Order; -/** - * Created by chris on 29.06.2015. - */ public class UiManager implements View.OnKeyListener, View.OnClickListener, AdapterView.OnItemClickListener { private MainActivity mainActivity; @@ -36,9 +32,11 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap private ImageButton btnRefresh; private TextView txtSum,txtCredit; private ListView lstOrdered; + private ListView lstProduct; private AutoCompleteTextView atxvName; - private ListViewAdapter lstAdapter; + private ListViewAdapter lstOrderedAdapter; + private ListViewAdapterProducts lstProductAdapter; private ArrayAdapter atxvAdapter; private ArrayList<Double> order; private List<User> users; @@ -62,11 +60,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap this.btnPay = (Button) mainActivity.findViewById(R.id.btnPay); this.btnCharge = (Button) mainActivity.findViewById(R.id.btnCharge); - this.lstAdapter = new ListViewAdapter(mainActivity, R.layout.order_list_item, new ArrayList<Order>()); - this.lstOrdered = (ListView) mainActivity.findViewById(R.id.lstOrdered); - this.lstOrdered.setAdapter(this.lstAdapter); + this.lstOrderedAdapter = new ListViewAdapter(mainActivity, R.layout.order_list_item, new ArrayList<Order>()); + this.lstProductAdapter = new ListViewAdapterProducts(mainActivity, R.layout.product_list_item, Product.getAll()); + this.lstOrdered = (ListView) mainActivity.findViewById(R.id.lstOrdered); + this.lstOrdered.setAdapter(this.lstOrderedAdapter); + this.lstProduct = (ListView) mainActivity.findViewById(R.id.lstProduct); + this.lstProduct.setAdapter(this.lstProductAdapter); + this.lstProduct.setOnItemClickListener(this); this.users = User.getAll(); this.atxvAdapter = new ArrayAdapter(mainActivity, android.R.layout.select_dialog_item, this.users); this.atxvName = (AutoCompleteTextView) mainActivity.findViewById(R.id.atxvName); @@ -74,6 +76,8 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap this.atxvName.setThreshold(1); this.atxvName.setOnKeyListener(this); this.atxvName.setOnItemClickListener(this); + this.atxvName.setFocusableInTouchMode(true); + this.atxvName.setFocusable(true); this.btnLogout.setVisibility(View.INVISIBLE); this.enableControls(false); @@ -89,6 +93,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap protected void setCurrentUser(User user) { this.enableControls(true); + this.atxvName.setText(user.getUserid()); this.atxvName.dismissDropDown(); this.btnLogout.setVisibility(View.VISIBLE); this.refreshCreditTextView(user.getCredit()); @@ -96,7 +101,10 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap protected void clearCurrentUser() { this.atxvName.setText(""); - this.lstAdapter.clear(); + if(this.atxvName.requestFocus()) { + this.mainActivity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); + } + this.lstOrderedAdapter.clear(); this.enableControls(false); this.btnLogout.setVisibility(View.INVISIBLE); this.refreshCreditTextView(0.0); @@ -109,30 +117,36 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap this.btnCharge.setEnabled(enable); this.btnPay.setEnabled(enable); this.btnLogout.setEnabled(enable); + this.lstProduct.setEnabled(enable); } protected void refreshUserData(List<User> userList) { this.atxvAdapter.clear(); - ListIterator<User> userListIterator = userList.listIterator(); - while(userListIterator.hasNext()) { - this.atxvAdapter.add(userListIterator.next()); + for (User anUserList : userList) { + this.atxvAdapter.add(anUserList); } } + public void refreshProductData(List<Product> productList) { + this.lstProductAdapter.clear(); + this.lstProductAdapter.addAll(productList); + } + protected void removeOrder(Order order) { - this.lstAdapter.remove(order); + this.lstOrderedAdapter.remove(order); } @Override public void onClick(View v) { + Log.d("HALLO", Integer.toString(v.getId())); switch (v.getId()) { - case R.id.btnOneEuro: - this.lstAdapter.insert(new Order(1.0), this.lstAdapter.getCount()); + /* case R.id.btnOneEuro: + this.lstOrderedAdapter.insert(new Order(1.0), this.lstOrderedAdapter.getCount()); MainManager.getInstance().addOrder(1.0); break; case R.id.btnFiftyCent: - this.lstAdapter.insert(new Order(0.5), this.lstAdapter.getCount()); + this.lstOrderedAdapter.insert(new Order(0.5), this.lstOrderedAdapter.getCount()); MainManager.getInstance().addOrder(0.5); - break; + break;*/ case R.id.btnCharge: new ChargeDialog().show(); break; @@ -146,8 +160,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap new NewUserDialog().show(); break; case R.id.btnRefresh: - MainManager.getInstance().refreshUserData(); - Toast.makeText(this.mainActivity, "Refresh successful", Toast.LENGTH_LONG).show(); + MainManager.getInstance().refreshData(); break; } } @@ -166,6 +179,17 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - MainManager.getInstance().setCurrentUser((User) this.atxvAdapter.getItem(position)); + switch (parent.getId()) { + case R.id.lstProduct: + Product p = this.lstProductAdapter.getItem(position); + this.lstOrderedAdapter.insert(new Order(p), this.lstOrderedAdapter.getCount()); + MainManager.getInstance().addOrder(p); + break; + case -1: + MainManager.getInstance().setCurrentUser((User) this.atxvAdapter.getItem(position)); + break; + } } + + } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapter.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapter.java index 769424b..5005327 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapter.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapter.java @@ -40,6 +40,7 @@ public class ListViewAdapter extends ArrayAdapter<Order> { holder.btnRemoveOrder.setTag(holder.order); holder.value = (TextView)row.findViewById(R.id.txtOrderValue); + holder.name = (TextView)row.findViewById(R.id.txtOrderName); row.setTag(holder); @@ -48,11 +49,13 @@ public class ListViewAdapter extends ArrayAdapter<Order> { } private void setupItem(OrderHolder holder) { - holder.value.setText(String.valueOf(holder.order.getValue())+" Euro"); + holder.name.setText(holder.order.getProduct().getName()); + holder.value.setText(String.valueOf(holder.order.getProduct().getPrice())); } public static class OrderHolder { Order order; + TextView name; TextView value; ImageButton btnRemoveOrder; } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapterProducts.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapterProducts.java new file mode 100644 index 0000000..b8f8158 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/ListViewAdapterProducts.java @@ -0,0 +1,59 @@ +package ms.itsecteam.warpdrink.orderList; + +import android.app.Activity; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import java.util.List; + +import ms.itsecteam.warpdrink.R; +import ms.itsecteam.warpdrink.data.models.local.Product; + +public class ListViewAdapterProducts extends ArrayAdapter<Product>{ + + private List<Product> items; + private int layoutResourceId; + private Context context; + + public ListViewAdapterProducts(Context context, int layoutResourceId, List<Product> items) { + super(context, layoutResourceId, items); + this.layoutResourceId = layoutResourceId; + this.context = context; + this.items = items; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row; + ProductHolder holder; + + LayoutInflater inflater = ((Activity) context).getLayoutInflater(); + row = inflater.inflate(layoutResourceId, parent, false); + + holder = new ProductHolder(); + holder.product = items.get(position); + + holder.name = (TextView)row.findViewById(R.id.txtProductName); + holder.price = (TextView)row.findViewById(R.id.txtProductPrice); + + row.setTag(holder); + + setupItem(holder); + return row; + } + + private void setupItem(ProductHolder holder) { + holder.name.setText(String.valueOf(holder.product.getName())); + holder.price.setText(String.valueOf(holder.product.getPrice())+" Euro"); + } + + public static class ProductHolder { + Product product; + TextView name; + TextView price; + } +} \ No newline at end of file diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/Order.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/Order.java index e999122..1efd9de 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/Order.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/orderList/Order.java @@ -4,11 +4,13 @@ import android.widget.ImageButton; import java.io.Serializable; +import ms.itsecteam.warpdrink.data.models.local.Product; + public class Order implements Serializable { private static final long serialVersionUID = -5435670920302756945L; - private double value = 0; + private Product product; private double position=0; private ImageButton btn; @@ -28,16 +30,16 @@ public class Order implements Serializable { this.position = position; } - public Order(double value) { - this.setValue(value); - } + public Order(Product p) { + this.product = p; + } - public double getValue() { - return value; - } + public Product getProduct() { + return product; + } - public void setValue(double value) { - this.value = value; - } + public void setProduct(Product value) { + this.product = product; + } } diff --git a/WarpDrinkApp/app/src/main/res/layout/activity_main.xml b/WarpDrinkApp/app/src/main/res/layout/activity_main.xml index 06ed63e..f35e3a3 100644 --- a/WarpDrinkApp/app/src/main/res/layout/activity_main.xml +++ b/WarpDrinkApp/app/src/main/res/layout/activity_main.xml @@ -18,7 +18,7 @@ <LinearLayout android:orientation="vertical" android:layout_width="464dp" - android:layout_height="wrap_content"> + android:layout_height="361dp"> <LinearLayout android:orientation="horizontal" @@ -67,24 +67,13 @@ android:layout_column="1" android:layout_row="2" /> - <Button android:text="@string/btn_oneEuro" android:id="@+id/btnOneEuro" android:background="@drawable/btn_blue" style="@style/ButtonText" - android:layout_row="3" - android:layout_column="1" - android:width="10dp" - android:onClick="onClick" - android:layout_width="300dp"></Button> - - <Button - style="@style/ButtonText" - android:text="@string/btn_fiftyCent" - android:id="@+id/btnFiftyCent" - android:background="@drawable/btn_blue" - android:layout_row="4" - android:layout_column="1" - android:width="10dp" - android:layout_width="300dp" - android:onClick="onClick" - android:layout_height="wrap_content" /> + <ListView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/lstProduct" + android:layout_row="2" + android:layout_column="12" + android:choiceMode="singleChoice" /> <Space android:layout_width="20px" @@ -95,7 +84,7 @@ <LinearLayout android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="363dp"> <LinearLayout diff --git a/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml b/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml index 4bbe544..521b7fc 100644 --- a/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml +++ b/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml @@ -4,12 +4,26 @@ android:layout_height="fill_parent" android:orientation="horizontal" > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceMedium" - android:text="Medium Text" - android:id="@+id/txtOrderValue" /> + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceLarge" + android:text="Large Text" + android:id="@+id/txtOrderName" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium" + android:text="Medium Text" + android:id="@+id/txtOrderValue" /> + + </LinearLayout> <ImageButton android:id="@+id/btnRemoveOrder" diff --git a/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml b/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml new file mode 100644 index 0000000..0a3efed --- /dev/null +++ b/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:orientation="horizontal" > + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="match_parent"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceLarge" + android:text="Large Text" + android:id="@+id/txtProductName" + android:layout_gravity="center_horizontal" /> + + <TextView + android:layout_width="68dp" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium" + android:text="1.0" + android:id="@+id/txtProductPrice" /> + + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/WarpDrinkApp/app/src/main/res/menu/menu_main.xml b/WarpDrinkApp/app/src/main/res/menu/menu_main.xml index 056ff9c..835133e 100644 --- a/WarpDrinkApp/app/src/main/res/menu/menu_main.xml +++ b/WarpDrinkApp/app/src/main/res/menu/menu_main.xml @@ -10,4 +10,10 @@ android:icon="@drawable/ic_menu_refresh" android:title="@string/addNewUser" /> + <item + android:id="@+id/action_learn_card_id" + android:orderInCategory="200" + android:icon="@drawable/ic_menu_refresh" + android:title="@string/lernCardId" /> + </menu> diff --git a/WarpDrinkApp/app/src/main/res/values/strings.xml b/WarpDrinkApp/app/src/main/res/values/strings.xml index f5279cd..9634303 100644 --- a/WarpDrinkApp/app/src/main/res/values/strings.xml +++ b/WarpDrinkApp/app/src/main/res/values/strings.xml @@ -26,6 +26,7 @@ <string name="rest_config_header">REST-API Konfiguration</string> <string name="save">Speichern</string> <string name="abort">Abbrechen</string> + <string name="lernCardId">Learn Card ID</string> <style name="ButtonText"> <item name="android:layout_width">fill_parent</item> diff --git a/WarpDrinkApp/build.gradle b/WarpDrinkApp/build.gradle index 79381f1..ec238d2 100644 --- a/WarpDrinkApp/build.gradle +++ b/WarpDrinkApp/build.gradle @@ -4,7 +4,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.2.3' + classpath 'com.android.tools.build:gradle:1.5.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -17,4 +17,4 @@ allprojects { } dependencies { -} \ No newline at end of file +} -- GitLab