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 @@ + + + + + + + + + + + + + + + + + + + + +