From f16ec4c8fc4836da08a430f097eb566abef5420f Mon Sep 17 00:00:00 2001 From: GME Date: Sat, 20 Oct 2018 15:20:05 +0200 Subject: [PATCH 1/4] Clean project from blockchain --- .../mobile/test/blockchain/TestQuery.java | 97 ------------ .../test/blockchain/Utility/UtilTest.java | 63 -------- .../blockchain/client/CAClientWrapper.java | 149 ------------------ .../client/ChannelClientWrapper.java | 51 ------ .../blockchain/client/FabriClientWrapper.java | 32 ---- .../mobile/blockchain/network/Config.java | 27 ---- .../blockchain/network/LoadConfigInfo.java | 86 ---------- .../blockchain/participant/UserContext.java | 72 --------- .../mobile/blockchain/utility/Util.java | 105 ------------ .../mobile/test/blockchain/TestQuery.java | 36 ----- 10 files changed, 718 deletions(-) delete mode 100644 app/src/androidTest/java/monnethic/mobile/test/blockchain/TestQuery.java delete mode 100644 app/src/androidTest/java/monnethic/mobile/test/blockchain/Utility/UtilTest.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/client/CAClientWrapper.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/client/ChannelClientWrapper.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/client/FabriClientWrapper.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/network/Config.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/network/LoadConfigInfo.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/participant/UserContext.java delete mode 100644 app/src/main/java/monnethic/mobile/blockchain/utility/Util.java delete mode 100644 app/src/test/java/monnethic/mobile/test/blockchain/TestQuery.java diff --git a/app/src/androidTest/java/monnethic/mobile/test/blockchain/TestQuery.java b/app/src/androidTest/java/monnethic/mobile/test/blockchain/TestQuery.java deleted file mode 100644 index c233919..0000000 --- a/app/src/androidTest/java/monnethic/mobile/test/blockchain/TestQuery.java +++ /dev/null @@ -1,97 +0,0 @@ -package monnethic.mobile.test.blockchain; - -import android.content.Context; -import android.support.test.InstrumentationRegistry; - -import org.hyperledger.fabric.sdk.ProposalResponse; -import org.junit.Test; - -import java.util.Collection; -import java.util.logging.Level; -import java.util.logging.Logger; - -import monnethic.mobile.blockchain.client.CAClientWrapper; -import monnethic.mobile.blockchain.client.ChannelClientWrapper; -import monnethic.mobile.blockchain.client.FabriClientWrapper; -import monnethic.mobile.blockchain.network.Config; -import monnethic.mobile.blockchain.participant.UserContext; -import monnethic.mobile.test.blockchain.Utility.UtilTest; - - -public class TestQuery { - - @Test - public void TestAEnrollAdmin() throws Exception { - try{ - Context appContext = InstrumentationRegistry.getTargetContext(); - String caUrl = Config.CA_ORG1_URL; - CAClientWrapper caClientWrapper = new CAClientWrapper(caUrl,null,null,null); - UserContext adminContext = new UserContext(); - adminContext.setName(Config.ADMIN); - adminContext.setAffiliation(Config.ORG1); - adminContext.setMspId(Config.ORG1_MSP); - caClientWrapper.setAdminContext(adminContext); - adminContext = caClientWrapper.enrollAdmin(appContext,Config.ADMIN,Config.ADMIN_PASSWORD,Config.ORG1); - Logger.getLogger(TestQuery.class.getName()).log(Level.INFO, "adminContext Enrollement : "+adminContext.getEnrollment().toString()); - - }catch (Exception e){ - e.printStackTrace(); - } - } - - /* - @Test - public void TestAQueryChainCode() throws Exception { - // Test query for user a on blockchain - try{ - String query = "query"; - String[] args1 = {"a"}; - Context appContext = InstrumentationRegistry.getTargetContext(); - - String caUrl = Config.CA_ORG1_URL; - CAClientWrapper caClientWrapper = new CAClientWrapper(caUrl,null,null,null); - - UserContext adminContext = new UserContext(); - adminContext.setName(Config.ADMIN); - adminContext.setAffiliation(Config.ORG1); - adminContext.setMspId(Config.ORG1_MSP); - - caClientWrapper.setAdminContext(adminContext); - adminContext = caClientWrapper.enrollAdmin(appContext,Config.ADMIN,Config.ADMIN_PASSWORD,Config.ORG1); - - FabriClientWrapper fabriClientWrapper = new FabriClientWrapper(adminContext); - ChannelClientWrapper channelClientWrapper = fabriClientWrapper.createChannelClient(Config.CHANNEL_NAME); - - Logger.getLogger(TestQuery.class.getName()).log(Level.INFO, "Querying for USER A ..."); - - Collection responsesQuery = channelClientWrapper.queryByChainCode(Config.CHAINCODE_NAME,query,args1); - - for(ProposalResponse pres : responsesQuery){ - String stringResponse = new String(pres.getChaincodeActionResponsePayload()); - Logger.getLogger(TestQuery.class.getName()).log(Level.INFO, stringResponse); - } - - } catch (Exception e){ - e.printStackTrace(); - } - } - */ - - - /* - @Test - public void TestBQuery() throws Exception { - try{ - UserContext userContext = new UserContext(); - userContext.setName(Config.ADMIN); - userContext.setAffiliation(Config.ORG1); - userContext.setMspId(Config.ORG1_MSP); - - FabriClientWrapper client = new FabriClientWrapper(userContext); - - }catch (Exception e){ - e.printStackTrace(); - } - } - */ -} diff --git a/app/src/androidTest/java/monnethic/mobile/test/blockchain/Utility/UtilTest.java b/app/src/androidTest/java/monnethic/mobile/test/blockchain/Utility/UtilTest.java deleted file mode 100644 index 91297e8..0000000 --- a/app/src/androidTest/java/monnethic/mobile/test/blockchain/Utility/UtilTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package monnethic.mobile.test.blockchain.Utility; - -import android.content.Context; -import android.support.test.InstrumentationRegistry; - -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -import java.util.logging.Level; -import java.util.logging.Logger; - - -import monnethic.mobile.blockchain.participant.UserContext; -import monnethic.mobile.blockchain.utility.Util; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class UtilTest { - /* - @Test - public void readEmptyUserContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - - }*/ - - @Test - public void testAreadNonUserContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - UserContext uc = Util.readUserContext(appContext,"tata","abdel"); - if(uc!=null){ - Logger.getLogger(UtilTest.class.getName()).log(Level.INFO, "UserContext is : "+uc.toString()); - }else{ - Logger.getLogger(UtilTest.class.getName()).log(Level.INFO, "UserContext doesn't exist"); - } - } - - - @Test - public void testBwriteUserContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - UserContext user = new UserContext(); - user.setName("abdel"); - user.setAffiliation("toto"); - user.setEnrollment(null); - user.setMspId("test"); - - Util.writeUserContext(appContext, user); - } - - @Test - public void testCreadUserContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - UserContext uc = Util.readUserContext(appContext,"toto","abdel"); - Logger.getLogger(UtilTest.class.getName()).log(Level.INFO, "UserContext is : "+uc.toString()); - } - - -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/client/CAClientWrapper.java b/app/src/main/java/monnethic/mobile/blockchain/client/CAClientWrapper.java deleted file mode 100644 index 2189106..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/client/CAClientWrapper.java +++ /dev/null @@ -1,149 +0,0 @@ -package monnethic.mobile.blockchain.client; - -import android.content.Context; - -import org.hyperledger.fabric.sdk.Enrollment; -import org.hyperledger.fabric.sdk.exception.CryptoException; -import org.hyperledger.fabric.sdk.security.CryptoSuite; -import org.hyperledger.fabric_ca.sdk.HFCAClient; -import org.hyperledger.fabric_ca.sdk.RegistrationRequest; -import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; -import java.lang.reflect.InvocationTargetException; -import java.net.MalformedURLException; -import java.util.Properties; -import java.util.logging.Level; -import java.util.logging.Logger; - -import monnethic.mobile.blockchain.participant.UserContext; -import monnethic.mobile.blockchain.utility.Util; - -public class CAClientWrapper { - - private String caUrl; - private HFCAClient hfcaClient; - private Properties properties; - private String org; - private String mspId; - private UserContext adminContext; - - public UserContext getAdminContext() { - return adminContext; - } - - public void setAdminContext(UserContext adminContext){ - this.adminContext=adminContext; - } - - - public CAClientWrapper(String caUrl, Properties properties, String org, String mspId) throws MalformedURLException, IllegalAccessException, InstantiationException, ClassNotFoundException, CryptoException, InvalidArgumentException, NoSuchMethodException, InvocationTargetException { - this.caUrl=caUrl; - this.properties=properties; - this.org=org; - this.mspId=mspId; - init(); - } - - public void init() throws MalformedURLException, IllegalAccessException, InstantiationException, ClassNotFoundException, CryptoException, InvalidArgumentException, NoSuchMethodException, InvocationTargetException { - CryptoSuite cryptoSuite = CryptoSuite.Factory.getCryptoSuite(); - hfcaClient = HFCAClient.createNewInstance(caUrl,properties); - hfcaClient.setCryptoSuite(cryptoSuite); - } - - public HFCAClient getHfcaClient(){ - return hfcaClient; - } - - /* - public CAClientWrapper(String url, String org){ - this.org=org; - init(url); - } - - private void init(String url){ - try{ - this.hfcaClient = HFCAClient.createNewInstance(url,null); - }catch (Exception e){ - e.printStackTrace(); - } - } - */ - - - //Method to enroll admin and save his info - public UserContext enrollAdmin(Context context, String name, String secret, String org) throws Exception { - UserContext adminContext; - adminContext = Util.readUserContext(context,org,name); - if(adminContext!=null){ - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.WARNING, "Admin already enrolled, skip"); - return adminContext; - } - - Enrollment enrollment = hfcaClient.enroll(name,secret); - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.INFO, "Admin enrolled"); - - //adminContext = new UserContext(); - //adminContext.setName(name); - //adminContext.setAffiliation(org); - //adminContext.setMspId(mspId); - adminContext.setEnrollment(enrollment); - - Util.writeUserContext(context,adminContext); - return adminContext; - } - - //Method to register and enroll user - public void regiserUser(Context context, String userName, String registrarAdmin) throws Exception{ - UserContext userContext; - userContext = Util.readUserContext(context,org,userName); - if(userContext!=null){ - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.WARNING, "User already registered"); - return; - } - RegistrationRequest registrationRequest = new RegistrationRequest(userName,org); - UserContext registrarContext = Util.readUserContext(context,org,registrarAdmin); - if(registrarAdmin==null){ - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.SEVERE, "Registar not enrolled"); - throw new Exception("registrar context not found"); - } - - String enrollSecret = hfcaClient.register(registrationRequest, registrarContext); - - Enrollment enrollment = hfcaClient.enroll(userName,enrollSecret); - - userContext = new UserContext(); - userContext.setMspId(mspId); - userContext.setAffiliation(org); //TODO GET MSPID IN ORGANIZATIONS, ORGNAME - userContext.setEnrollment(enrollment); - userContext.setName(userName); - - Util.writeUserContext(context,userContext); - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.INFO, "User has been successfully registered"); - } - - - //Method to get userContext - public static UserContext getUserContext(Context context, String userName, String org){ - UserContext userContext; - userContext = Util.readUserContext(context,org,userName); - if(userContext!=null){ - return userContext; - } - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.SEVERE, "User context not found : "+userName+" - "+org); - return userContext; - } - - //Method to enroll user. - public UserContext enrollUser(Context context, String userName, String enrollSecret, String org) throws Exception { - Enrollment enrollment = hfcaClient.enroll(userName,enrollSecret); - - UserContext userContext = new UserContext(); - userContext.setMspId(mspId); - userContext.setAffiliation(this.org); - userContext.setEnrollment(enrollment); - userContext.setName(userName); - - Util.writeUserContext(context, userContext); - Logger.getLogger(CAClientWrapper.class.getName()).log(Level.INFO, "UserName - "+userName+" enrolled"); - return userContext; - } -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/client/ChannelClientWrapper.java b/app/src/main/java/monnethic/mobile/blockchain/client/ChannelClientWrapper.java deleted file mode 100644 index ebab5e2..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/client/ChannelClientWrapper.java +++ /dev/null @@ -1,51 +0,0 @@ -package monnethic.mobile.blockchain.client; - -import org.hyperledger.fabric.sdk.ChaincodeID; -import org.hyperledger.fabric.sdk.Channel; -import org.hyperledger.fabric.sdk.ProposalResponse; -import org.hyperledger.fabric.sdk.QueryByChaincodeRequest; -import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; -import org.hyperledger.fabric.sdk.exception.ProposalException; - -import java.util.Collection; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class ChannelClientWrapper { - FabriClientWrapper fabriClientWrapper; - Channel channel; - String name; - - public Channel getChannel() { - return channel; - } - - public String getName() { - return name; - } - - public FabriClientWrapper getFabriClientWrapper() { - return fabriClientWrapper; - } - - public ChannelClientWrapper(String name, Channel channel, FabriClientWrapper fabriClientWrapper){ - this.name=name; - this.channel=channel; - this.fabriClientWrapper=fabriClientWrapper; - } - - public Collection queryByChainCode(String chaincodeName, String functionName, String[] args) throws InvalidArgumentException, ProposalException { - Logger.getLogger(ChannelClientWrapper.class.getName()).log(Level.INFO, "Querying "+chaincodeName+" with "+functionName); - - QueryByChaincodeRequest request = fabriClientWrapper.getHfClient().newQueryProposalRequest(); - ChaincodeID chaincodeId = ChaincodeID.newBuilder().setName(chaincodeName).build(); - request.setChaincodeID(chaincodeId); - request.setFcn(functionName); - - if(args != null){ - request.setArgs(args); - } - Collection response = channel.queryByChaincode(request); - return response; - } -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/client/FabriClientWrapper.java b/app/src/main/java/monnethic/mobile/blockchain/client/FabriClientWrapper.java deleted file mode 100644 index 2608273..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/client/FabriClientWrapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package monnethic.mobile.blockchain.client; - -import org.hyperledger.fabric.sdk.Channel; -import org.hyperledger.fabric.sdk.HFClient; -import org.hyperledger.fabric.sdk.exception.CryptoException; -import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; -import org.hyperledger.fabric.sdk.security.CryptoSuite; - -import java.lang.reflect.InvocationTargetException; - -import monnethic.mobile.blockchain.participant.UserContext; - -public class FabriClientWrapper { - private HFClient hfClient; - - public HFClient getHfClient() { - return hfClient; - } - - public FabriClientWrapper(UserContext userContext) throws CryptoException, InvalidArgumentException, IllegalAccessException, InstantiationException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException { - CryptoSuite cryptoSuite = CryptoSuite.Factory.getCryptoSuite(); - hfClient = HFClient.createNewInstance(); - hfClient.setCryptoSuite(cryptoSuite); - hfClient.setUserContext(userContext); - } - - public ChannelClientWrapper createChannelClient(String name) throws InvalidArgumentException { - Channel channel = hfClient.newChannel(name); - ChannelClientWrapper client = new ChannelClientWrapper(name, channel, this); - return client; - } -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/network/Config.java b/app/src/main/java/monnethic/mobile/blockchain/network/Config.java deleted file mode 100644 index 672dc66..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/network/Config.java +++ /dev/null @@ -1,27 +0,0 @@ -package monnethic.mobile.blockchain.network; - -public class Config { - //TODO SET STATIC FINAL VAR FOR NETWORK CONFIG, REPLACE LOADCONFIGINFO - public static final String ORG1_MSP = "Org1MSP"; - - public static final String ORG1 = "org1"; - - public static final String ADMIN = "AdminOrg1"; - - public static final String ADMIN_PASSWORD = "AdminOrg1Pwd"; - - public static final String CA_ORG1_URL = "http://vps577432.ovh.net:7054"; - - public static final String ORDERER_URL = "vps577432.ovh.net:7050"; - - public static final String ORDERER_NAME = "orderer.example.com"; - - public static final String CHANNEL_NAME = "mychannel"; - - public static final String CHAINCODE_NAME = "mycc"; - - public static final String ORG1_PEER_0 = "peer0.org1.example.com"; - - public static final String ORG1_PEER_0_URL = "vps577432.ovh.net:7051"; - -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/network/LoadConfigInfo.java b/app/src/main/java/monnethic/mobile/blockchain/network/LoadConfigInfo.java deleted file mode 100644 index a869683..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/network/LoadConfigInfo.java +++ /dev/null @@ -1,86 +0,0 @@ -package monnethic.mobile.blockchain.network; - -import android.content.Context; - -import com.example.monnthic.monnethicmobile.R; - -//import org.hyperledger.fabric.sdk.NetworkConfig; -import org.json.JSONObject; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringWriter; -import java.io.Writer; -import java.util.logging.XMLFormatter; - -import javax.json.JsonObject; - -public class LoadConfigInfo { - private static final Integer lock = 0; - private static JSONObject jsonObject; - - //Generate JSONObject from configFile - private LoadConfigInfo(Context context) { - - InputStream is = context.getResources().openRawResource(R.raw.config); - Writer writer = new StringWriter(); - char[] buffer = new char[1024]; - try { - Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); - int n; - while ((n = reader.read(buffer)) != -1) { - writer.write(buffer, 0, n); - } - } catch (Exception e){ - e.getMessage(); - } finally { - try{ - if(is!=null) { - is.close(); - } - }catch (Exception e){ - e.getMessage(); - } - } - - String jsonString = writer.toString(); - try{ - jsonObject = new JSONObject(jsonString); - }catch (Exception e){ - e.getMessage(); - } - } - - private static void getInstanceFile(Context context){ - try{ - synchronized (lock){ - if(jsonObject == null){ - new LoadConfigInfo(context); - } - } - }catch (Exception e){ - e.printStackTrace(); - } - } - - //TODO GET ORGANIZATION INFOS - public static String getOrgInfo(Context context, String org) { - getInstanceFile(context); - return ""; - } - - - //TODO GET ORGANIZATION NAME - public static String getOrgName(Context context){ - getInstanceFile(context); - return ""; - } - - //TODO GET MSPID IN ORG NAME - public static String getMspId(Context context,String orgName){ - getInstanceFile(context); - return ""; - } -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/participant/UserContext.java b/app/src/main/java/monnethic/mobile/blockchain/participant/UserContext.java deleted file mode 100644 index 671a138..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/participant/UserContext.java +++ /dev/null @@ -1,72 +0,0 @@ -package monnethic.mobile.blockchain.participant; - -import org.hyperledger.fabric.sdk.Enrollment; -import org.hyperledger.fabric.sdk.User; - -import java.io.Serializable; -import java.util.Set; - -public class UserContext implements User, Serializable { - - private static final long serialVersionUID = 1L; - protected String name; - protected Set roles; - protected String account; - protected String affiliation; - protected Enrollment enrollment; - protected String mspId; - - @Override - public String getName() { - return name; - } - - public void setName(String name){ - this.name=name; - } - - @Override - public Set getRoles() { - return roles; - } - - public void setRoles(Set roles){ - this.roles=roles; - } - - @Override - public String getAccount() { - return account; - } - - public void setAccount(String account){ - this.account=account; - } - - @Override - public String getAffiliation() { - return affiliation; - } - - public void setAffiliation(String affiliation){ - this.affiliation=affiliation; - } - - @Override - public Enrollment getEnrollment() { - return enrollment; - } - - public void setEnrollment(Enrollment enrollment){ - this.enrollment=enrollment; - } - - @Override - public String getMspId() { - return mspId; - } - - public void setMspId(String mspId){ - this.mspId=mspId; - } -} diff --git a/app/src/main/java/monnethic/mobile/blockchain/utility/Util.java b/app/src/main/java/monnethic/mobile/blockchain/utility/Util.java deleted file mode 100644 index 59708f9..0000000 --- a/app/src/main/java/monnethic/mobile/blockchain/utility/Util.java +++ /dev/null @@ -1,105 +0,0 @@ -package monnethic.mobile.blockchain.utility; - -import android.content.Context; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.logging.Level; -import java.util.logging.Logger; - -import monnethic.mobile.blockchain.participant.UserContext; - -public class Util { - - private Context context; - - public Util(Context context){ - this.context=context; - } - - //Method which write user info into a directory - public static void writeUserContext(Context context, UserContext userContext){ - ObjectOutputStream out = null; - FileOutputStream fileOutputStream = null; - try{ - String filename = userContext.getName()+".context"; - String dirPath = context.getFilesDir()+"userInfos/"+userContext.getAffiliation(); - String pathFile = dirPath+"/"+filename; - Logger.getLogger(Util.class.getName()).log(Level.INFO, "pathFile is : "+pathFile); - File dir = new File(dirPath); - if(!dir.exists()){ - Boolean res = dir.mkdirs(); - if(res){ - Logger.getLogger(Util.class.getName()).log(Level.INFO, "RESPONSE IS TRUE"); - }else{ - Logger.getLogger(Util.class.getName()).log(Level.SEVERE, "RESPONSE IS FALSE"); - } - } - - File file = new File(pathFile); - fileOutputStream = new FileOutputStream(file); - out = new ObjectOutputStream(fileOutputStream); - Logger.getLogger(Util.class.getName()).log(Level.INFO, "out is : "+out); - out.writeObject(userContext); - }catch (Exception e){ - e.printStackTrace(); - } finally { - try { - if (out != null){ - out.close(); - } - }catch (Exception e){ - e.printStackTrace(); - } - try{ - if(fileOutputStream != null){ - fileOutputStream.close(); - } - }catch (Exception e){ - e.printStackTrace(); - } - } - } - - //Method to read user in file - public static UserContext readUserContext(Context context, String affiliation, String username){ - UserContext userContext = null; - FileInputStream fileInputStream = null; - ObjectInputStream in = null; - - try{ - String filename = username+".context"; - String dirPath = context.getFilesDir()+"userInfos/"+affiliation; - String pathFile = dirPath+"/"+filename; - - File file = new File(pathFile); - - if(file.exists()){ - fileInputStream = new FileInputStream(pathFile); - in = new ObjectInputStream(fileInputStream); - userContext = (UserContext) in.readObject(); - } - } catch (Exception e){ - e.printStackTrace(); - } finally { - try { - if(in != null){ - in.close(); - } - }catch (Exception e){ - e.printStackTrace(); - } - try { - if(fileInputStream!=null){ - fileInputStream.close(); - } - }catch (Exception e){ - e.printStackTrace(); - } - } - return userContext; - } -} diff --git a/app/src/test/java/monnethic/mobile/test/blockchain/TestQuery.java b/app/src/test/java/monnethic/mobile/test/blockchain/TestQuery.java deleted file mode 100644 index 7ec2870..0000000 --- a/app/src/test/java/monnethic/mobile/test/blockchain/TestQuery.java +++ /dev/null @@ -1,36 +0,0 @@ -package monnethic.mobile.test.blockchain; - -import android.content.Context; - -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -import monnethic.mobile.blockchain.client.CAClientWrapper; -import monnethic.mobile.blockchain.network.Config; -import monnethic.mobile.blockchain.participant.UserContext; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class TestQuery { - @Test - void TestAQueryChainCode(){ - try{ - //context appContext = InstrumentationRegistry.getTargetContext(); - - String caUrl = Config.CA_ORG1_URL; - CAClientWrapper caClientWrapper = new CAClientWrapper(caUrl,null,null,null); - - UserContext adminContext = new UserContext(); - adminContext.setName(Config.ADMIN); - adminContext.setAffiliation(Config.ORG1); - adminContext.setMspId(Config.ORG1_MSP); - - caClientWrapper.setAdminContext(adminContext); - //adminContext = caClientWrapper.enrollAdmin(appContext); - } catch (Exception e){ - e.printStackTrace(); - } - - - } -} From e806c990ff825745ff49aacee713188fe5484b13 Mon Sep 17 00:00:00 2001 From: GME Date: Sun, 18 Nov 2018 10:01:38 +0100 Subject: [PATCH 2/4] clean --- .idea/caches/build_file_checksums.ser | Bin 535 -> 535 bytes app/build.gradle | 39 ++++++------------ .../monnethic/mobile/test/LearningTest.java | 10 ----- app/src/main/AndroidManifest.xml | 2 - .../main/res/layout/activity_demo_wallet.xml | 1 - app/src/main/res/layout/activity_login.xml | 1 - .../res/layout/activity_qr_code_scanner.xml | 1 - .../main/res/layout/activity_transaction.xml | 1 - .../mobile/test/user/UserDaoTest.java | 4 -- 9 files changed, 12 insertions(+), 47 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index c7b8f2e6aec3a8189b14bb2f051760da94901554..a39985af31bf5604fd52cefda571672295a8b4f9 100644 GIT binary patch delta 35 tcmV+;0NnqV1eXMmm;{lZos*HAcMv#rvO0qed+_h((L;oL6DE@*0rVJK57z(y delta 35 tcmV+;0NnqV1eXMmm;{j7IlhsccM$kuw*uox+m_e+8fvn=@Gp}i0rW3j5w!pS diff --git a/app/build.gradle b/app/build.gradle index d69538f..faf6245 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { - applicationId "com.example.monnthic.monnthicmobile" + applicationId 'com.monnethic.appmobile' multiDexEnabled true minSdkVersion 19 targetSdkVersion 26 @@ -21,38 +21,23 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - packagingOptions { - exclude 'META-INF/INDEX.LIST' - exclude 'META-INF/DEPENDENCIES' - exclude 'META-INF/io.netty.versions.properties' + buildToolsVersion '28.0.3' + productFlavors { } } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.1.0' - implementation 'com.android.support:design:26.1.0' - implementation 'com.android.support:multidex:1.0.3' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' - //implementation 'org.glassfish:javax.json:1.0.4' - implementation 'com.google.code.gson:gson:2.8.5' - implementation ('org.hyperledger.fabric-sdk-java:fabric-sdk-java:1.0.0'){ - //exclude group:'org.glassfish', module:'javax.json' - exclude group:'log4j', module:'log4j' - exclude group:'org.jacoco', module:"jacoco-maven-plugin" - } testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test:rules:1.0.1' - androidTestImplementation 'com.android.support:support-annotations:26.1.0' - androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', { - exclude group: 'com.android.support', module: 'support-annotations' - }) - implementation 'com.j256.ormlite:ormlite-core:5.1' - implementation 'com.j256.ormlite:ormlite-jdbc:5.1' - implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.5' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.google.zxing:core:3.2.1' implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar' - implementation 'com.google.android.gms:play-services-vision:11.8.0' - implementation group: 'com.madgag.spongycastle', name: 'core', version: '1.54.0.0' + implementation 'com.google.android.gms:play-services-vision:17.0.2' + implementation 'com.j256.ormlite:ormlite-core:5.1' + implementation 'com.j256.ormlite:ormlite-jdbc:5.1' + implementation 'org.postgresql:postgresql:42.2.5' } diff --git a/app/src/androidTest/java/monnethic/mobile/test/LearningTest.java b/app/src/androidTest/java/monnethic/mobile/test/LearningTest.java index 0b86eba..e700131 100644 --- a/app/src/androidTest/java/monnethic/mobile/test/LearningTest.java +++ b/app/src/androidTest/java/monnethic/mobile/test/LearningTest.java @@ -5,19 +5,9 @@ import android.support.test.InstrumentationRegistry; import com.example.monnthic.monnethicmobile.R; -import org.json.JSONObject; import org.junit.Test; - -import java.io.BufferedReader; import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringWriter; -import java.io.Writer; -import javax.json.Json; -import javax.json.JsonObject; -import javax.json.JsonReader; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f61d86..31e5f56 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,8 +7,6 @@ - - diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index b254886..e7c2bae 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/layout/activity_qr_code_scanner.xml b/app/src/main/res/layout/activity_qr_code_scanner.xml index e08f9c2..f049470 100644 --- a/app/src/main/res/layout/activity_qr_code_scanner.xml +++ b/app/src/main/res/layout/activity_qr_code_scanner.xml @@ -1,6 +1,5 @@ diff --git a/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java b/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java index 1471e4e..630ed4a 100644 --- a/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java +++ b/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java @@ -3,15 +3,11 @@ package monnethic.mobile.test.user; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.table.TableUtils; -import org.junit.FixMethodOrder; import org.junit.Test; -import org.junit.runners.MethodSorters; - import java.sql.Timestamp; import monnethic.mobile.user.User; import monnethic.mobile.user.UserDao; -@FixMethodOrder(MethodSorters.NAME_ASCENDING) public class UserDaoTest { private UserDao udao = new UserDao(); private final String USER_EMAIL = "thomas.marshal@gmail.com"; From e547852d79a109c60b2e4884646f7b0e387625c7 Mon Sep 17 00:00:00 2001 From: GME Date: Sun, 18 Nov 2018 15:16:59 +0100 Subject: [PATCH 3/4] setup async for user balance --- .idea/caches/build_file_checksums.ser | Bin 535 -> 541 bytes .idea/misc.xml | 12 ++- .idea/vcs.xml | 2 +- app/build.gradle | 6 +- app/src/main/AndroidManifest.xml | 1 + .../mobile/blockchainApi/UrlApi.java | 5 + .../mobile/homepage/HomepageActivity.java | 6 +- .../mobile/homepage/LoginActivity.java | 7 +- .../mobile/user/UserAccountActivity.java | 91 ++++++++++++++++-- app/src/main/res/layout/activity_homepage.xml | 4 +- app/src/main/res/layout/activity_login.xml | 4 +- .../res/layout/activity_make_payement.xml | 13 ++- .../main/res/layout/activity_user_account.xml | 65 +++++++++---- app/src/main/res/values/strings.xml | 2 +- 14 files changed, 173 insertions(+), 45 deletions(-) create mode 100644 app/src/main/java/monnethic/mobile/blockchainApi/UrlApi.java diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index a39985af31bf5604fd52cefda571672295a8b4f9..f0067cfc05906dfef81784ee22dd1811bb771922 100644 GIT binary patch delta 92 zcmV-i0Hgnx1f2wsmj!1gf@biMoOcis1yLS=s?hTq%L*p!>3j8)BLOZGEJHe6RdZ!> yb6iJtX>4p^b!}ynv;j7gQ2|5~$qtAbYSi+sZCEyZdooSVbN~^Py#X7O1_BYN9wSTu delta 93 zcmV-j0HXh$1eXMmmjz~#pPiGDoOcj7b+S5x4SVqK=FvlhdlM#;BLOaxngK*8dv;3M zYmG)#f35NhEw)UpbO0tpI$TwAWpZ;|M@>asE@yIKWNc+zlkou?lZXKllkfp8CjKQ+ diff --git a/.idea/misc.xml b/.idea/misc.xml index 2827fab..b0c7b20 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,27 +5,33 @@ - + + + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index faf6245..ef38851 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 26 + compileSdkVersion 27 defaultConfig { applicationId 'com.monnethic.appmobile' multiDexEnabled true minSdkVersion 19 - targetSdkVersion 26 + targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -28,7 +28,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:26.1.0' + implementation 'com.android.support:appcompat-v7:27.1.1' testImplementation 'junit:junit:4.12' implementation 'com.android.support.constraint:constraint-layout:1.1.3' androidTestImplementation 'com.android.support.test:runner:1.0.2' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 31e5f56..2284222 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + diff --git a/app/src/main/java/monnethic/mobile/blockchainApi/UrlApi.java b/app/src/main/java/monnethic/mobile/blockchainApi/UrlApi.java new file mode 100644 index 0000000..64d53dc --- /dev/null +++ b/app/src/main/java/monnethic/mobile/blockchainApi/UrlApi.java @@ -0,0 +1,5 @@ +package monnethic.mobile.blockchainApi; + +public class UrlApi { + static public String URL_BALANCE = "http://10.0.2.2:8083/balance?name="; +} diff --git a/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java b/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java index 4d3ea29..4ba326d 100644 --- a/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java +++ b/app/src/main/java/monnethic/mobile/homepage/HomepageActivity.java @@ -22,7 +22,7 @@ public class HomepageActivity extends AppCompatActivity { setContentView(R.layout.activity_homepage); Button bRegister = findViewById(R.id.register); Button bLogin = findViewById(R.id.login); - Button bDemo = findViewById(R.id.demo); + //Button bDemo = findViewById(R.id.demo); bRegister.setOnClickListener(new View.OnClickListener() { @Override @@ -36,11 +36,13 @@ public class HomepageActivity extends AppCompatActivity { launchLoginActivity(); } }); + /* bDemo.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ launchDemoActivity(); } }); + */ } public void launchRegisterActivity(){ @@ -51,8 +53,10 @@ public class HomepageActivity extends AppCompatActivity { Intent loginIntent = new Intent(HomepageActivity.this, LoginActivity.class); HomepageActivity.this.startActivity(loginIntent); } + /* public void launchDemoActivity(){ Intent demoIntent = new Intent(HomepageActivity.this, DemoActivity.class); HomepageActivity.this.startActivity(demoIntent); } + */ } diff --git a/app/src/main/java/monnethic/mobile/homepage/LoginActivity.java b/app/src/main/java/monnethic/mobile/homepage/LoginActivity.java index 819a60f..ea36137 100644 --- a/app/src/main/java/monnethic/mobile/homepage/LoginActivity.java +++ b/app/src/main/java/monnethic/mobile/homepage/LoginActivity.java @@ -10,6 +10,7 @@ import android.widget.Toast; import com.example.monnthic.monnethicmobile.R; +import monnethic.mobile.user.UserAccountActivity; import monnethic.mobile.wallet.WalletActivity; public class LoginActivity extends AppCompatActivity { @@ -64,9 +65,9 @@ public class LoginActivity extends AppCompatActivity { } public void launchWalletActivity(int ldapId){ //LAUNCH APP WALLET WITH ID USER - Intent walletIntent = new Intent(LoginActivity.this, WalletActivity.class); - walletIntent.putExtra("idUser", ldapId); - LoginActivity.this.startActivity(walletIntent); + Intent accountIntent = new Intent(LoginActivity.this, UserAccountActivity.class); + accountIntent.putExtra("idUser", ldapId); + LoginActivity.this.startActivity(accountIntent); finish(); } } diff --git a/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java b/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java index a5eee8a..043788b 100644 --- a/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java +++ b/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java @@ -1,6 +1,7 @@ package monnethic.mobile.user; import android.content.Intent; +import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; @@ -10,23 +11,34 @@ import android.widget.Toast; import com.example.monnthic.monnethicmobile.R; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +import monnethic.mobile.blockchainApi.UrlApi; import monnethic.mobile.transaction.MakePayementActivity; import monnethic.mobile.transaction.ReceivePayementActivity; public class UserAccountActivity extends AppCompatActivity { - private TextView solde; + + private TextView balance; + private String strUrl = UrlApi.URL_BALANCE+"b"; + private String result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_account); - solde = findViewById(R.id.viewSolde); + balance = findViewById(R.id.balanceView); Button buttonPayement = findViewById(R.id.buttonPayement); Button buttonReceive = findViewById(R.id.buttonReceive); Button buttonSettings = findViewById(R.id.buttonSettings); + Button buttonRefresh = findViewById(R.id.buttonRefreshBalance); + - //refreshSolde(); buttonPayement.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -45,13 +57,21 @@ public class UserAccountActivity extends AppCompatActivity { settings(); } }); + buttonRefresh.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + refreshBalance("b"); + } + }); + + new GetUserBalanceTask().execute(strUrl); } + public void sendPayement(){ Intent payementIntent = new Intent(UserAccountActivity.this, MakePayementActivity.class); UserAccountActivity.this.startActivity(payementIntent); } public void receivePayement(){ - Intent receivePayementIntent = new Intent(UserAccountActivity.this, ReceivePayementActivity.class); UserAccountActivity.this.startActivity(receivePayementIntent); } @@ -59,7 +79,66 @@ public class UserAccountActivity extends AppCompatActivity { Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show(); } - public void refreshSolde(){ - solde.setText("0.00"); + public void refreshBalance(String userHash){ + String url = UrlApi.URL_BALANCE+userHash; + new GetUserBalanceTask().execute(url); + } + + public void setBalance(String value){ + balance.setText(value); + } + + + public class GetUserBalanceTask extends AsyncTask + { + @Override + protected void onPreExecute() { + super.onPreExecute(); + } + + @Override + protected void onPostExecute(String s) { + balance.setText(s); + } + + @Override + protected String doInBackground(String... params) { + System.out.println(params[0]); + InputStream inputStream = null; + HttpURLConnection conn = null; + try{ + URL url = new URL(params[0]); + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.connect(); + + int response = conn.getResponseCode(); + if(response != 200){ + return "Error response"; + } + + inputStream = conn.getInputStream(); + if(inputStream == null){ + return "Error inputStream"; + } + + BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); + StringBuffer buffer = new StringBuffer(); + String line; + + while ((line = reader.readLine())!=null){ + buffer.append(line); + } + + String value = new String(buffer); + + System.out.println("result is "+value); + result = value; + + } catch (Exception e){ + System.out.println("Exception : "+e); + } + return result; + } } } diff --git a/app/src/main/res/layout/activity_homepage.xml b/app/src/main/res/layout/activity_homepage.xml index 86faf34..14baf3e 100644 --- a/app/src/main/res/layout/activity_homepage.xml +++ b/app/src/main/res/layout/activity_homepage.xml @@ -43,7 +43,7 @@ android:layout_gravity="center" android:text="version v0.1" android:textAlignment="center" /> - + + android:inputType="textPassword" /> + app:layout_constraintHorizontal_bias="0.502" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.905" /> diff --git a/app/src/main/res/layout/activity_user_account.xml b/app/src/main/res/layout/activity_user_account.xml index 2c0c4a0..76368f3 100644 --- a/app/src/main/res/layout/activity_user_account.xml +++ b/app/src/main/res/layout/activity_user_account.xml @@ -13,8 +13,8 @@