From d6b19128a4538abbf0679bbe452f3e7876603012 Mon Sep 17 00:00:00 2001
From: Christian Dresen <c.dresen@fh-muenster.de>
Date: Tue, 28 Mar 2017 23:52:47 +0200
Subject: [PATCH] Barcode v1

---
 WarpDrinkApp/app/build.gradle                 |   2 +-
 .../ms/warpzone/warppay/MainActivity.java     |  32 +++++---
 .../warppay/data/models/local/Product.java    |  12 +++
 .../warpzone/warppay/manager/DataManager.java |   1 +
 .../warpzone/warppay/manager/MainManager.java |  73 +++++++++++++++---
 .../warpzone/warppay/manager/UiManager.java   |   3 +-
 .../app/src/main/res/layout/activity_main.xml |  63 ++++++++-------
 .../app/src/main/res/raw/keystore.bks         | Bin 0 -> 1944 bytes
 8 files changed, 136 insertions(+), 50 deletions(-)
 create mode 100644 WarpDrinkApp/app/src/main/res/raw/keystore.bks

diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle
index 92c0df6..9e8a096 100644
--- a/WarpDrinkApp/app/build.gradle
+++ b/WarpDrinkApp/app/build.gradle
@@ -5,7 +5,7 @@ android {
     buildToolsVersion '25.0.0'
 
     defaultConfig {
-        applicationId "ms.itsecteam.warpdrink"
+        applicationId "ms.warpzone.warppay"
         minSdkVersion 15
         targetSdkVersion 22
         versionCode 1
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
index 3e9cacb..fe8b4a5 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
@@ -37,7 +37,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     private PendingIntent mPendingIntent;
     private IntentFilter[] mIntentFilters;
     private String[][] mNFCTechLists;
-
+    private String barcode;
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.menu_main, menu);
@@ -50,10 +50,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
 
         getWindow().addFlags(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
         setContentView(R.layout.activity_main);
+        this.findViewById(R.id.mainLayout).setOnKeyListener(this);
 
         this.manager = MainManager.getInstance();
         this.manager.init(this);
-
+        this.barcode = "";
         this.findViewById(android.R.id.content).setOnKeyListener(this);
 
         this.nfcAdapter = NfcAdapter.getDefaultAdapter(this);
@@ -66,6 +67,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
             Log.e("TagDispatch", e.toString());
         }
         mNFCTechLists = new String[][] { new String[] { NfcF.class.getName() } };
+
     }
 
     public void onResume() {
@@ -132,15 +134,27 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     }
 
     @Override
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_ENTER:
-                TextView t = (TextView) this.findViewById(R.id.txtCredit);
-                t.setText("asdasdasd");
-                return true;
-        }
+    public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
         return false;
     }
+
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        if(this.manager.getCurrentUser() != null) {
+            if (event.getAction() == KeyEvent.ACTION_UP) {
+                if (KeyEvent.KEYCODE_ENTER == event.getKeyCode()) {
+                    Toast.makeText(this, this.barcode, Toast.LENGTH_LONG).show();
+                    this.barcode = "";
+                } else {
+                    this.barcode += (char) event.getUnicodeChar();
+                }
+            }
+        }
+        return super.dispatchKeyEvent(event);
+    }
+    
+
+    
 /*
 
     @Override
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java
index c7178c4..a7caf46 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java
@@ -22,6 +22,10 @@ public class Product extends Model {
     @Column(name = "category")
     private String category;
 
+    @Column(name = "barcode")
+    private String barcode;
+
+
     @Column(name = "price")
     private float price;
 
@@ -81,6 +85,14 @@ public class Product extends Model {
         this.count = count;
     }
 
+    public String getBarcode() {
+        return barcode;
+    }
+
+    public void setBarcode(String barcode) {
+        this.barcode = barcode;
+    }
+
     public static List<Product> getAll() {
         return new Select()
                 .from(Product.class)
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java
index edb75c4..037a0e2 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java
@@ -76,6 +76,7 @@ public class DataManager {
             this.currentUser.setCredit(this.currentUser.getCredit() - this.totalAmount);
             this.currentUser.save();
         }
+        Log.d("USER", String.valueOf(this.currentUser.getCredit()));
         this.totalAmount = 0.0;
     }
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java
index 6d930da..81ed5bc 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java
@@ -1,10 +1,27 @@
 package ms.warpzone.warppay.manager;
 
 import android.app.AlertDialog;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.util.Log;
 import android.widget.Toast;
+
+import com.squareup.okhttp.OkHttpClient;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.Certificate;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
 import java.util.List;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+
 import ms.warpzone.warppay.MainActivity;
 import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.data.SQLiteService;
@@ -36,27 +53,62 @@ public class MainManager {
     }
 
     private MainManager() {
-        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("http://10.0.1.134:8000/api/")
-                //.baseUrl("https://infra-test.warpzone.ms/api/")
-                .baseUrl("http://192.168.0.194:8000/api/")
-                .addConverterFactory(GsonConverterFactory.create())
-                .build();
+
+        Retrofit.Builder builder = new Retrofit.Builder()
+                .baseUrl("https://infra-test.warpzone/api/")
+        .addConverterFactory(GsonConverterFactory.create());
+
+        OkHttpClient okHttp = new OkHttpClient();
+        try {
+            okHttp.setSslSocketFactory(getSSLConfig(this.getMainActivity().getBaseContext()).getSocketFactory());
+        } catch (CertificateException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (KeyStoreException e) {
+            e.printStackTrace();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (KeyManagementException e) {
+            e.printStackTrace();
+        }
+
+        Retrofit retrofit = builder.client(okHttp).build();
+
         return retrofit.create(RestService.class);
     }
 
+    private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException,
+            KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
+
+        // Loading CAs from an InputStream
+        CertificateFactory cf = null;
+        String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw";
+        KeyStore keyStore   = KeyStore.getInstance("BKS");
+        keyStore.load(context.getResources().openRawResource(R.raw.keystore), password.toCharArray());
+
+        String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
+        tmf.init(keyStore);
+
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(null, tmf.getTrustManagers(), null);
+
+        return sslContext;
+    }
     public void init(MainActivity mainActivity) {
         this.mainActivity = mainActivity;
+        this.sqLiteService = SQLiteService.getInstance();
+        this.uiManager = UiManager.getInstance();
+        this.dataManager = DataManager.getInstance();
         this.uiManager.initUi(this.mainActivity);
 
+        this.restService = this.createRestService();
         this.refreshData();
     }
 
@@ -82,6 +134,7 @@ public class MainManager {
         this.restService.getAllCategories().enqueue(new Callback<List<RestCategory>>() {
             @Override
             public void onResponse(Response<List<RestCategory>> response, Retrofit retrofit) {
+                Log.d("HALLO",response.message());
                 List<Category> categoryList = MainManager.getInstance().sqLiteService.refreshCategoryData(response.body());
                 if (categoryList != null) {
                     MainManager.getInstance().uiManager.showCategoryButtons();
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java
index 37075f2..523aebc 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java
@@ -18,6 +18,7 @@ import android.widget.GridLayout;
 import android.widget.ImageButton;
 import android.widget.ListView;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -198,7 +199,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
                     this.atxvName.dismissDropDown();
                     DataManager.getInstance().setIs_guest(false);
                 }
-                return true;
+                return false;
             }
         }
         return false;
diff --git a/WarpDrinkApp/app/src/main/res/layout/activity_main.xml b/WarpDrinkApp/app/src/main/res/layout/activity_main.xml
index f0e8939..13e4732 100644
--- a/WarpDrinkApp/app/src/main/res/layout/activity_main.xml
+++ b/WarpDrinkApp/app/src/main/res/layout/activity_main.xml
@@ -1,54 +1,60 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
-    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/mainLayout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    android:paddingBottom="@dimen/activity_vertical_margin" tools:context="ms.warpzone.warppay.MainActivity">
+    tools:context="ms.warpzone.warppay.MainActivity">
 
     <LinearLayout
-        android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:orientation="vertical">
 
         <LinearLayout
-            android:orientation="horizontal"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content">
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
 
             <LinearLayout
-                android:orientation="vertical"
                 android:layout_width="464dp"
-                android:layout_height="361dp">
+                android:layout_height="361dp"
+                android:orientation="vertical">
 
                 <LinearLayout
-                    android:orientation="horizontal"
                     android:layout_width="match_parent"
                     android:layout_height="50dp"
-                    android:layout_row="0"
                     android:layout_column="1"
+                    android:layout_row="0"
+                    android:orientation="horizontal"
                     android:weightSum="1">
 
                     <TextView
+                        android:id="@+id/textView2"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        android:layout_gravity="center_vertical"
                         android:text="@string/name"
-                        android:id="@+id/textView2"
-                        android:layout_gravity="center_vertical" />
+                        android:textAppearance="?android:attr/textAppearanceMedium" />
 
                     <Space
                         android:layout_width="20px"
                         android:layout_height="20px" />
 
                     <AutoCompleteTextView
+                        android:id="@+id/atxvName"
                         android:layout_width="254dp"
                         android:layout_height="match_parent"
-                        android:id="@+id/atxvName"
-                        android:imeOptions="actionNext"
-                        android:singleLine="true"
+                        android:layout_column="0"
                         android:layout_columnSpan="1"
                         android:layout_row="0"
-                        android:layout_column="0" />
+                        android:imeOptions="actionNext"
+                        android:singleLine="true" />
 
                     <Space
                         android:layout_width="8dp"
@@ -84,14 +90,13 @@
                     android:layout_row="2" />
 
                 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                    android:id="@+id/gridProducts"
                     android:layout_width="fill_parent"
                     android:layout_height="fill_parent"
                     android:layout_gravity="left"
                     android:columnCount="4"
                     android:orientation="horizontal"
-                    android:id="@+id/gridProducts"
-                    android:rowCount="3">
-                </GridLayout>
+                    android:rowCount="3"></GridLayout>
 
                 <Space
                     android:layout_width="20px"
@@ -100,9 +105,9 @@
             </LinearLayout>
 
             <LinearLayout
-                android:orientation="vertical"
                 android:layout_width="match_parent"
-                android:layout_height="363dp">
+                android:layout_height="363dp"
+                android:orientation="vertical">
 
 
                 <LinearLayout
@@ -149,11 +154,11 @@
                 </LinearLayout>
 
                 <ListView
+                    android:id="@+id/lstOrdered"
                     android:layout_width="wrap_content"
                     android:layout_height="255dp"
-                    android:id="@+id/lstOrdered"
-                    android:layout_row="2"
                     android:layout_column="12"
+                    android:layout_row="2"
                     android:choiceMode="singleChoice" />
 
                 <Space
@@ -161,11 +166,11 @@
                     android:layout_height="25px" />
 
                 <TextView
+                    android:id="@+id/txtSum"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:text="@string/sum"
-                    android:id="@+id/txtSum" />
+                    android:textAppearance="?android:attr/textAppearanceMedium" />
 
                 <Space
                     android:layout_width="wrap_content"
@@ -179,9 +184,9 @@
         </LinearLayout>
 
         <LinearLayout
-            android:orientation="horizontal"
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
 
             <Button
                 android:id="@+id/btnCharge"
diff --git a/WarpDrinkApp/app/src/main/res/raw/keystore.bks b/WarpDrinkApp/app/src/main/res/raw/keystore.bks
new file mode 100644
index 0000000000000000000000000000000000000000..286cca322ee508a348f62d27ce1f0110438fd7d9
GIT binary patch
literal 1944
zcmZQzU|?ckU=VrpN%TqU)v%=--iR-<-RpPx*!`Pt7#P^{7#UbI^U{hE85kI&#p*77
z0IFqRV2#i-HLzr0VD2_(Vs1BRV#;5@%*4pV#L2MG<#O?w;Oid@c-c6$+C196^D;7W
zvoaV&8FCwNvN4CUun9A{xEk^paDg}+Jj{MU;f8_+{2(4X4~K7QYF=?kY7tC`i-#jT
zv8bRbKQGl#+&~nhikXKG>>#~zsDy!>IIp3(fw7UHk%57cp=FdfuMv=IXbI)g)b1um
zC1kHMvNA9?G4eAQG%<29H8C<WJTNf%*?)sIZ5>O^5v7G6*+p;k$?}|!+c~Y|{rZzv
zz3(opd@JD9Bl+1)Qgihyse8`17k~Y#_k6A37Dnra7W>1O&$Pe%xr*yAYxUpYPQ@)v
zJErP%>K)p0?~C5_Dw9i#JgR3unJVO~ab<qL_A<6<_oWRK{kO1}r))EGOO?>#?h|9Z
z{PfaWi`wHBrwz)=0;3q-ektazTQy%_cYWJ2scSbcuX&VI<1>Y=u)U+};{U>DX%l`$
z@M*TbSP*ZQpX6?M=T-Fl@4?C5XPL6if900T^7N*xjas;3TIRYSJ~8tn%c5pWhg`4N
z{VFYD|Ev=;O^*EDlrQJ=YTc)#$^OUP3JtnAN>!Pd85tNC2N?Jn$O0ozmXAe@MI`!v
z0nf95If-%Bm7lH|?dgzN(&}j-50X}9kuVTzz^;G?q(GR3)qt6i@jr5y1Ctjp%o!P6
zR%kn!6+gCcJX;=cFaJrv@z?iiYMdPe_=CUIuvnGtzPfV%QpLzE4=ht&F1w`9b^7wD
z5Br{4@y$9jK~>CXlTTR2Yt4hf;cMA-PB83Y7iqh5=5BMv{L`Y`JKss#e3=`m`#e`G
zw7c^~PVqNBJ7o=<5aHR&HZR@J&R4PKq|=&^7dy)O?!PHJ-hRu)t6XyX>1|w$Q~%mq
zuM~NiqcQdQm-8G)b@}=1ldV}>dp^%@dY?N%T*ai^d}_d?HBkXVvJt*U{yPiAI+OYC
z@_x<HFSWnK#B<-j>ig_(8L#gPyKYXL7oKfjz9Q3d$tn@qjeov;Nm^L!RQd1E`w5;l
z`tG%hq$_0185y|18AG=uwYUVFT`T%CQM2n*V0N7d%&wKN?0RV8Wm9W$i#KTDX%J6&
zc9k)Zf@D`=gsZUUSpyR@<U9-F(%u1tGVX~p4<e+$NBZcdzfoS%U}hE6GxN==KmH*<
zYekttOhbNHKiv~^>xi*R#6Oq!JR-UQkNZSpZ4aGm=Ioz)YBKA$IYOV$%zYg4q^vdX
zVU1tfb;Aj3A7st?8Q<7&@XuPm;If>P=bPg<OW9^EU6l9xM9-`f++NFk?%8wJCCG{|
zPYlXlVwk|)ndOyqJ(zV?g}|;VhJsr<uBDT{KKZ89c4lXUI7^V@>4jev<Bzs(&5?JM
z+1(zl`?GMzbe>7Cr!TktF0VGjq9UfFx6k>Q(ER<!Yo>e-IQ>6f;o$FGDk4wr{7e<N
ztv}Q9!-ZU}f~cvn^*=hlyj(9h|JDn=xgts0*R9mn``#4AmT`kSehWWKJa2S`%idvC
z)vl@A@4n4O$+%b*5X`t{cLI}Mu<TxPMElf&C&%IsPG9FNzT%L~nYKQz&GpCr$-Ys&
zwktw1_3+$=*Hzah=v>Z_ey8%KI<M64OsQR-<mtmb`}kYKe3t9ae_|%Q`iQUYf<s&r
z4#!<H`_s4CVG7fW&fi=<k+X~XpZF+O@0>GNdf%hP&(l_YeYDKxTGY$?!k;hZm7G1*
z?J!a5pUR^d|8LBa5e|>vyZPeVJ6Eom*-ZSwHPd&m)uGCzJdCTAD|a!5)C3v}#a@ie
zVrva-*uH3$W7pfGj2b_jWty}8r%rD@F-zHf4M##GclO>p*=8?#)mPo~o}rq0{V*?!
zV~l61kc^oZ|Lh~%Zro8n_Ib-89yzb1`^gL!>{jty3edi2oe|biy`uNQ!I`tX0BWk-
ARR910

literal 0
HcmV?d00001

-- 
GitLab