diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index f959c36..db69f3e 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1245179..0e08622 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,7 +43,8 @@
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/monnethic/mobile/demoConfig/DemoConfig.java b/app/src/main/java/monnethic/mobile/demoConfig/DemoConfig.java
new file mode 100644
index 0000000..dc7e405
--- /dev/null
+++ b/app/src/main/java/monnethic/mobile/demoConfig/DemoConfig.java
@@ -0,0 +1,171 @@
+package monnethic.mobile.demoConfig;
+
+import android.app.ProgressDialog;
+import android.os.AsyncTask;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.Spinner;
+import android.widget.Switch;
+import android.widget.Toast;
+
+import com.example.monnthic.monnethicmobile.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import monnethic.mobile.history.HistoryActivity;
+import monnethic.mobile.restApi.ConfigApiHandler;
+
+public class DemoConfig extends AppCompatActivity {
+ private Spinner cSpinner;
+ private Switch cSwitch;
+ private Button btnValidateConf;
+ private Button btnCloseConf;
+ private Button btnCheckConf;
+ private String ENV;
+ private String CHAINCODE;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_demo_config);
+
+ initView();
+ }
+
+ private void initView(){
+ buttonInit();
+ switchInit();
+ spinnerInit();
+ }
+
+ public void switchInit(){
+ cSwitch = findViewById(R.id.switchEnv);
+ cSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+ if(cSwitch.isChecked()){
+ ENV = "1";
+ }else{
+ ENV = "0";
+ }
+ }
+ });
+ }
+
+ public void spinnerInit(){
+ cSpinner = findViewById(R.id.spinnerConfig);
+ List listOptions = new ArrayList<>();
+ listOptions.add("CHAINCODE - PROD");
+ listOptions.add("CHAINCODE - QA");
+ listOptions.add("CHAINCODE - TEST");
+ ArrayAdapter adapterOptions = new ArrayAdapter<>(this,android.R.layout.simple_spinner_dropdown_item,listOptions);
+ adapterOptions.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ cSpinner.setAdapter(adapterOptions);
+ }
+
+ public void buttonInit(){
+ btnValidateConf = findViewById(R.id.buttonValidateConfig);
+ btnValidateConf.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ switch (String.valueOf(cSpinner.getSelectedItem())){
+ case "CHAINCODE - PROD":
+ CHAINCODE = "0";
+ break;
+ case "CHAINCODE - QA":
+ CHAINCODE = "1";
+ break;
+ case "CHAINCODE - TEST":
+ CHAINCODE = "2";
+ break;
+ }
+ new updateConfigTask().execute(ENV,CHAINCODE);
+ }
+ });
+
+ btnCheckConf = findViewById(R.id.buttonCheckConfig);
+ btnCheckConf.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new checkConfigTask().execute();
+ }
+ });
+
+ btnCloseConf = findViewById(R.id.buttonCloseConfig);
+ btnCloseConf.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ finish();
+ }
+ });
+ }
+
+ private class updateConfigTask extends AsyncTask {
+ ProgressDialog progDailog = new ProgressDialog(DemoConfig.this);
+ @Override
+ protected void onPreExecute() {
+ super.onPreExecute();
+ progDailog.setMessage("Updating Config...");
+ progDailog.setIndeterminate(false);
+ progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+ progDailog.setCancelable(true);
+ progDailog.show();
+ }
+
+ @Override
+ protected String doInBackground(String... strings) {
+ try{
+ String e = strings[0];
+ String c = strings[1];
+
+ ConfigApiHandler configApiHandler = new ConfigApiHandler();
+ configApiHandler.updateEnvironment(e);
+ configApiHandler.updateChaincode(c);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+ progDailog.dismiss();
+ }
+ }
+
+ private class checkConfigTask extends AsyncTask{
+ ProgressDialog progDailog = new ProgressDialog(DemoConfig.this);
+ @Override
+ protected void onPreExecute() {
+ super.onPreExecute();
+ progDailog.setMessage("Check Config...");
+ progDailog.setIndeterminate(false);
+ progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+ progDailog.setCancelable(true);
+ progDailog.show();
+ }
+
+ @Override
+ protected String doInBackground(String... strings) {
+ try{
+ ConfigApiHandler configApiHandler = new ConfigApiHandler();
+ String r = configApiHandler.getConfiguration();
+ return r;
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+ progDailog.dismiss();
+ Toast.makeText(DemoConfig.this, result,Toast.LENGTH_SHORT).show();
+ }
+ }
+}
diff --git a/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java b/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java
index c1e3061..6186b00 100644
--- a/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java
+++ b/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java
@@ -11,6 +11,8 @@ import android.view.View;
import android.widget.Button;
import com.example.monnthic.monnethicmobile.R;
+import monnethic.mobile.demoConfig.DemoConfig;
+
public class HomepageActivity extends AppCompatActivity {
@Override
@@ -19,6 +21,7 @@ public class HomepageActivity extends AppCompatActivity {
setContentView(R.layout.activity_homepage);
Button bRegister = findViewById(R.id.register);
Button bLogin = findViewById(R.id.login);
+ Button bConfig = findViewById(R.id.buttonConfig);
bRegister.setOnClickListener(new View.OnClickListener() {
@Override
@@ -32,6 +35,12 @@ public class HomepageActivity extends AppCompatActivity {
launchLoginActivity();
}
});
+ bConfig.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ launchConfActivity();
+ }
+ });
}
public void launchRegisterActivity(){
@@ -50,4 +59,9 @@ public class HomepageActivity extends AppCompatActivity {
HomepageActivity.this.startActivity(loginIntent);
}
+ public void launchConfActivity(){
+ Intent confIntent = new Intent(HomepageActivity.this, DemoConfig.class);
+ HomepageActivity.this.startActivity(confIntent);
+ }
+
}
diff --git a/app/src/main/java/monnethic/mobile/homepage/RegisterActivity.java b/app/src/main/java/monnethic/mobile/homepage/RegisterActivity.java
index 3447afa..c301881 100644
--- a/app/src/main/java/monnethic/mobile/homepage/RegisterActivity.java
+++ b/app/src/main/java/monnethic/mobile/homepage/RegisterActivity.java
@@ -143,6 +143,7 @@ public class RegisterActivity extends AppCompatActivity {
walletHomeIntent.putExtra("USER_HASH", jsonObject.getString("user_hash"));
walletHomeIntent.putExtra("USER_PWD",password.getText().toString());
walletHomeIntent.putExtra("SESSION_ID",jsonObject.getString("session_id"));
+ walletHomeIntent.putExtra("email",email.getText().toString());
RegisterActivity.this.startActivity(walletHomeIntent);
finish();
}else{
diff --git a/app/src/main/java/monnethic/mobile/restApi/Config.java b/app/src/main/java/monnethic/mobile/restApi/Config.java
index f2df96c..efba9d9 100644
--- a/app/src/main/java/monnethic/mobile/restApi/Config.java
+++ b/app/src/main/java/monnethic/mobile/restApi/Config.java
@@ -14,6 +14,8 @@ public class Config {
static public String USER_LOGIN = BASE_URL_USER+"login";
static public String USER_REGISTER = BASE_URL_USER+"register";
static public String USER_GET = BASE_URL_USER+"get";
+ static public String USER_APPROVAL = BASE_URL_USER+"getApproval";
+ static public String USER_APPROVE = BASE_URL_USER+"approve";
//Search
static public String FIND_BY_EMAIL= BASE_URL_USER+"findByEmail";
static public String FIND_BY_PHONE = BASE_URL_USER+"findByPhone";
@@ -22,6 +24,13 @@ public class Config {
static public String START_SESSION = BASE_URL_SESSION+"start";
static public String END_SESSION = BASE_URL_SESSION+"end";
+ //Config
+ static private String CONFIG_BASE_URL = BASE_URL+"/api/rest/demo/conf";
+ static public String CONFIG_ENVIRONMENT = CONFIG_BASE_URL+"/env";
+ static public String CONFIG_CHAINCODE = CONFIG_BASE_URL+"/chaincode";
+ static public String CONFIG_DB = CONFIG_BASE_URL+"/db";
+
+
//TRANSACTION
static public String TRANSACTION_SEND = BASE_URL_TRANSACTION+"send";
static public String TRANSACTION_GET = BASE_URL_TRANSACTION+"get";
diff --git a/app/src/main/java/monnethic/mobile/restApi/ConfigApiHandler.java b/app/src/main/java/monnethic/mobile/restApi/ConfigApiHandler.java
new file mode 100644
index 0000000..3bc41f0
--- /dev/null
+++ b/app/src/main/java/monnethic/mobile/restApi/ConfigApiHandler.java
@@ -0,0 +1,48 @@
+package monnethic.mobile.restApi;
+
+import org.json.JSONObject;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ConfigApiHandler {
+ public void updateEnvironment(String environment){
+ HttpCallHandler httpCallHandler = new HttpCallHandler();
+ try{
+ String url = Config.CONFIG_ENVIRONMENT;
+ Map map = new HashMap<>();
+ map.put("env",environment);
+ httpCallHandler.postHttp(new URL(url), map);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ public void updateChaincode(String chaincode){
+ HttpCallHandler httpCallHandler = new HttpCallHandler();
+ try{
+ String url = Config.CONFIG_CHAINCODE;
+ Map map = new HashMap<>();
+ map.put("chaincode",chaincode);
+ httpCallHandler.postHttp(new URL(url), map);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ public String getConfiguration(){
+ HttpCallHandler httpCallHandler = new HttpCallHandler();
+ String result="";
+ try{
+ String chaincode = new JSONObject(httpCallHandler.getHttp(new URL(Config.CONFIG_CHAINCODE))).getString("chaincode");
+ String environment = new JSONObject(httpCallHandler.getHttp(new URL(Config.CONFIG_ENVIRONMENT))).getString("env");
+ String db = new JSONObject(httpCallHandler.getHttp(new URL(Config.CONFIG_DB))).getString("db");
+ result = environment+" - "+chaincode+" - "+db;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+}
diff --git a/app/src/main/java/monnethic/mobile/restApi/UserApiHandler.java b/app/src/main/java/monnethic/mobile/restApi/UserApiHandler.java
index aaaddfa..fe89bcb 100644
--- a/app/src/main/java/monnethic/mobile/restApi/UserApiHandler.java
+++ b/app/src/main/java/monnethic/mobile/restApi/UserApiHandler.java
@@ -92,6 +92,29 @@ public class UserApiHandler {
}
+ public Boolean checkApproval(String user_hash, String email){
+ HttpCallHandler httpCallHandler = new HttpCallHandler();
+ try{
+ String responseCall = httpCallHandler.getHttp(new URL(Config.USER_APPROVAL+"?user_hash="+user_hash+"&user_email="+email));
+ return new JSONObject(responseCall).getBoolean("approval");
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public void approveUser(String user_hash, String email){
+ HttpCallHandler httpCallHandler = new HttpCallHandler();
+ try{
+ Map map = new HashMap<>();
+ map.put("user_hash",user_hash);
+ map.put("email",email);
+ httpCallHandler.postHttp(new URL(Config.USER_APPROVE),map);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
public User getUser(int method, String email, String phone){
HttpCallHandler httpCallHandler = new HttpCallHandler();
User returnUser = new User();
@@ -113,6 +136,7 @@ public class UserApiHandler {
returnUser.setName(jsonObject.getString("name"));
returnUser.setFirstname(jsonObject.getString("firstname"));
returnUser.setUser_hash(jsonObject.getString("user_hash"));
+ returnUser.setApproved(jsonObject.getBoolean("approved"));
return returnUser;
}else{
diff --git a/app/src/main/java/monnethic/mobile/wallet/HomeWalletActivity.java b/app/src/main/java/monnethic/mobile/wallet/HomeWalletActivity.java
index 2a50c78..67e15f8 100644
--- a/app/src/main/java/monnethic/mobile/wallet/HomeWalletActivity.java
+++ b/app/src/main/java/monnethic/mobile/wallet/HomeWalletActivity.java
@@ -1,18 +1,27 @@
package monnethic.mobile.wallet;
+import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
+import android.widget.Toast;
+
import com.example.monnthic.monnethicmobile.R;
+
+import org.json.JSONObject;
+
+import monnethic.mobile.database.User;
import monnethic.mobile.restApi.SessionApiHandler;
+import monnethic.mobile.restApi.UserApiHandler;
public class HomeWalletActivity extends AppCompatActivity {
private String user_hash;
private String user_password;
private String session_id;
+ private String email;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -20,11 +29,13 @@ public class HomeWalletActivity extends AppCompatActivity {
setContentView(R.layout.activity_home_wallet);
Button buttonCreateWallet = findViewById(R.id.buttonCreateWallet);
Button buttonSelectWallet = findViewById(R.id.buttonSelectWallet);
+ Button buttonApproveUser = findViewById(R.id.buttonApproveUser);
Intent intent = getIntent();
user_hash = intent.getStringExtra("USER_HASH");
user_password = intent.getStringExtra("USER_PWD");
session_id = intent.getStringExtra("SESSION_ID");
+ email = intent.getStringExtra("email");
buttonCreateWallet.setOnClickListener(new View.OnClickListener() {
@Override
@@ -39,22 +50,52 @@ public class HomeWalletActivity extends AppCompatActivity {
launchSelectWalletActivity();
}
});
+
+ buttonApproveUser.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ approveUser();
+ }
+ });
}
public void launchCreateWalletActivity() {
- Intent createWalletIntent = new Intent(HomeWalletActivity.this, CreateWalletActivity.class);
- createWalletIntent.putExtra("USER_HASH",user_hash);
- createWalletIntent.putExtra("USER_PWD",user_password);
- createWalletIntent.putExtra("SESSION_ID",session_id);
- HomeWalletActivity.this.startActivity(createWalletIntent);
+ try{
+ Boolean approved = new CheckApprovalTask().execute(user_hash,email).get();
+
+ if(approved){
+ Intent createWalletIntent = new Intent(HomeWalletActivity.this, CreateWalletActivity.class);
+ createWalletIntent.putExtra("USER_HASH",user_hash);
+ createWalletIntent.putExtra("USER_PWD",user_password);
+ createWalletIntent.putExtra("SESSION_ID",session_id);
+ HomeWalletActivity.this.startActivity(createWalletIntent);
+ }else{
+ Toast.makeText(HomeWalletActivity.this,"You are not approved",Toast.LENGTH_SHORT).show();
+ }
+ } catch (Exception e){
+ e.printStackTrace();
+ }
}
public void launchSelectWalletActivity() {
- Intent selectWalletIntent = new Intent(HomeWalletActivity.this, SelectWalletActivity.class);
- selectWalletIntent.putExtra("USER_HASH",user_hash);
- selectWalletIntent.putExtra("USER_PWD",user_password);
- selectWalletIntent.putExtra("SESSION_ID",session_id);
- HomeWalletActivity.this.startActivity(selectWalletIntent);
+ try{
+ Boolean approved = new CheckApprovalTask().execute(user_hash,email).get();
+ if(approved){
+ Intent selectWalletIntent = new Intent(HomeWalletActivity.this, SelectWalletActivity.class);
+ selectWalletIntent.putExtra("USER_HASH",user_hash);
+ selectWalletIntent.putExtra("USER_PWD",user_password);
+ selectWalletIntent.putExtra("SESSION_ID",session_id);
+ HomeWalletActivity.this.startActivity(selectWalletIntent);
+ }else {
+ Toast.makeText(HomeWalletActivity.this,"You are not approved",Toast.LENGTH_SHORT).show();
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ public void approveUser(){
+ new ApproveTask().execute(user_hash,email);
}
@Override
@@ -75,4 +116,62 @@ public class HomeWalletActivity extends AppCompatActivity {
return null;
}
}
+
+ private class CheckApprovalTask extends AsyncTask{
+ ProgressDialog progDailog = new ProgressDialog(HomeWalletActivity.this);
+ @Override
+ protected void onPreExecute() {
+ super.onPreExecute();
+ progDailog.setMessage("Loading...");
+ progDailog.setIndeterminate(false);
+ progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+ progDailog.setCancelable(true);
+ progDailog.show();
+ }
+
+ @Override
+ protected Boolean doInBackground(String... strings) {
+ try{
+ UserApiHandler userApiHandler = new UserApiHandler();
+ return userApiHandler.checkApproval(strings[0],strings[1]);
+ }catch (Exception e){
+ return null;
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Boolean result) {
+ progDailog.dismiss();
+ }
+ }
+
+ private class ApproveTask extends AsyncTask{
+ ProgressDialog progDailog = new ProgressDialog(HomeWalletActivity.this);
+ @Override
+ protected void onPreExecute() {
+ super.onPreExecute();
+ progDailog.setMessage("Loading...");
+ progDailog.setIndeterminate(false);
+ progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+ progDailog.setCancelable(true);
+ progDailog.show();
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+ progDailog.dismiss();
+ }
+
+ @Override
+ protected String doInBackground(String... strings) {
+ try{
+ UserApiHandler userApiHandler = new UserApiHandler();
+ userApiHandler.approveUser(strings[0],strings[1]);
+ return null;
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_demo_config.xml b/app/src/main/res/layout/activity_demo_config.xml
new file mode 100644
index 0000000..13f5a68
--- /dev/null
+++ b/app/src/main/res/layout/activity_demo_config.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_home_wallet.xml b/app/src/main/res/layout/activity_home_wallet.xml
index d73c5a2..d427d4f 100644
--- a/app/src/main/res/layout/activity_home_wallet.xml
+++ b/app/src/main/res/layout/activity_home_wallet.xml
@@ -6,9 +6,23 @@
android:layout_height="match_parent"
tools:context="monnethic.mobile.wallet.HomeWalletActivity">
+
+
+
+
+
+
+
\ No newline at end of file