diff --git a/src/main/java/database/user/User.java b/src/main/java/database/user/User.java index 2e887c1..2fc0703 100644 --- a/src/main/java/database/user/User.java +++ b/src/main/java/database/user/User.java @@ -20,6 +20,10 @@ public class User { private long creation_date; @DatabaseField(canBeNull = false) private long modification_date; + @DatabaseField + private long phone; + @DatabaseField + private String association; @DatabaseField(canBeNull = false) private boolean verified; @DatabaseField(canBeNull = false) @@ -51,6 +55,14 @@ public class User { this.approved = approved; } + public User(String name, String firstname, String user_hash, int phone, String association){ + this.name = name; + this.firstname = firstname; + this.user_hash = user_hash; + this.phone = phone; + this.association = association; + } + //Getters and Setters public int getUserId() { @@ -111,6 +123,10 @@ public class User { this.modification_date = modification_date; } + public long getPhone(){return phone;} + + public void setPhone(int phone){this.phone=phone;} + public boolean isVerified() { return verified; } diff --git a/src/main/java/restImplementation/BlockchainQueryImplementation.java b/src/main/java/restImplementation/BlockchainQueryImplementation.java index f64ad70..6f15089 100644 --- a/src/main/java/restImplementation/BlockchainQueryImplementation.java +++ b/src/main/java/restImplementation/BlockchainQueryImplementation.java @@ -1,15 +1,104 @@ package restImplementation; import blockchain.query.QueryWrapper; +import blockchain.query.TransactionWrapper; +import org.hyperledger.fabric.sdk.BlockEvent; + +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; +import javax.json.JsonReader; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; public class BlockchainQueryImplementation { - /* - public Double getUserBalance(String userHash){ + public Double getWalletSold(String walletHash){ QueryWrapper queryWrapper = new QueryWrapper(); - String result = queryWrapper.getUserBalance(userHash); - Double balance = Double.parseDouble(result); - return balance; + Double sold = 0.0; + + String result = queryWrapper.sendQuery("readWallet", new String[]{walletHash}); + if(result != null) { + JsonReader reader = Json.createReader(new StringReader(result)); + JsonObject walletInfo = reader.readObject(); + sold = walletInfo.getJsonNumber("sold").doubleValue(); + } + return sold; } - */ + + + public String getUserAssociation(String userHash){ + QueryWrapper queryWrapper = new QueryWrapper(); + String result = queryWrapper.sendQuery("readUser", new String[]{userHash}); + String association = null; + if(result != null){ + JsonReader reader = Json.createReader(new StringReader(result)); + JsonObject userInfo = reader.readObject(); + association = userInfo.getString("userAssociation"); + } + return association; + } + + + public List getUserWallets(String userHash){ + List wallets = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper(); + String response = queryWrapper.sendQuery("queryWalletsByOwner",new String[]{userHash}); + + if(response != null){ + JsonReader reader = Json.createReader(new StringReader(response)); + JsonArray walletInfo = reader.readArray(); + + for(Object obj : walletInfo){ + HashMap wallet = new HashMap(); + JsonObject o = (JsonObject) obj; + o = o.get("Record").asJsonObject(); + wallet.put("walletHash",o.getString("id")); + wallet.put("walletType",o.getString("walletType")); + wallet.put("sold",o.getJsonNumber("sold").toString()); + wallets.add(wallet); + } + } + return wallets; + } + + + public String sendTransaction(String sourceWallet, String destinationWallet, Double amount){ + TransactionWrapper transactionWrapper = new TransactionWrapper(); + BlockEvent.TransactionEvent transactionEvent = transactionWrapper.sendTransaction("transaction",new String[]{sourceWallet,destinationWallet,amount.toString()}); + return transactionEvent.getTransactionID(); + } + + + public void registerUser(List userInfo){ + TransactionWrapper transactionWrapper = new TransactionWrapper(); + transactionWrapper.sendTransaction("registerUser",new String[]{userInfo.get(0),userInfo.get(1),userInfo.get(2),userInfo.get(3),userInfo.get(4)}); + } + + + public void deleteWallet(String walletHash){ + TransactionWrapper transactionWrapper = new TransactionWrapper(); + transactionWrapper.sendTransaction("deleteWallet",new String[]{walletHash}); + } + + public void setPermission(String userHash){ + TransactionWrapper transactionWrapper = new TransactionWrapper(); + transactionWrapper.sendTransaction("setUserPermission",new String[]{userHash}); + } + + public void transferWallet(String walletHash, String userHash){ + TransactionWrapper transactionWrapper = new TransactionWrapper(); + transactionWrapper.sendTransaction("transferWallet", new String[]{walletHash,userHash}); + } + + + + + + + + + } diff --git a/src/main/java/restService/BlockchainQueryResource.java b/src/main/java/restService/BlockchainQueryResource.java index 2543059..ca64760 100644 --- a/src/main/java/restService/BlockchainQueryResource.java +++ b/src/main/java/restService/BlockchainQueryResource.java @@ -1,30 +1,41 @@ package restService; +import database.user.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import restImplementation.BlockchainQueryImplementation; +import javax.validation.Valid; + @RestController @RequestMapping(value = "/api/rest/query") public class BlockchainQueryResource { - /* - @RequestMapping(value = "/balance", method = RequestMethod.GET ,params = {"userHash"},produces = "application/json") + + @RequestMapping(value = "/balance", method = RequestMethod.GET ,params = {"walletHash"},produces = "application/json") @ResponseStatus(HttpStatus.OK) - public ResponseEntity getUserBalance(@RequestParam(value = "userHash") String userHash){ + public ResponseEntity getUserBalance(@RequestParam(value = "walletHash") String walletHash){ try{ BlockchainQueryImplementation blockchainQueryImplementation = new BlockchainQueryImplementation(); - Double result = blockchainQueryImplementation.getUserBalance(userHash); + Double result = blockchainQueryImplementation.getWalletSold(walletHash); StringResponse response = new StringResponse("Ok",result); return ResponseEntity.status(HttpStatus.OK).body(response); }catch (Exception e){ StringResponse response = new StringResponse("Error"); return ResponseEntity.status(HttpStatus.OK).body(response); } + } + + /* + @RequestMapping(value = "/registerUser", method = RequestMethod.POST, produces = "application/json") + @ResponseStatus(HttpStatus.OK) + public ResponseEntity login(@Valid @RequestBody User user){ } */ + + } diff --git a/src/test/java/blockchain/query/Transaction/TransactionTest.java b/src/test/java/blockchain/query/Transaction/TransactionTest.java index 33403c9..4cd19b2 100644 --- a/src/test/java/blockchain/query/Transaction/TransactionTest.java +++ b/src/test/java/blockchain/query/Transaction/TransactionTest.java @@ -21,7 +21,8 @@ public class TransactionTest { String functionName = "transaction"; String[] args = new String[]{"qerh654d5f5h46q4fdh6h65fh00","qerh654d5f5hdsf1515","200"}; BlockEvent.TransactionEvent responseEvent = transactionWrapper.sendTransaction(functionName,args); - logger.info("Event transaction id : "+responseEvent.getTransactionID()); //print transaction id + String txID = responseEvent.getTransactionID(); + logger.info("Event transaction id : "+txID); //print transaction id }catch (Exception e){ e.printStackTrace(); } diff --git a/src/test/java/blockchain/query/Wallet/DeleteWalletTest.java b/src/test/java/blockchain/query/Wallet/DeleteWalletTest.java index 06f51c5..815b73b 100644 --- a/src/test/java/blockchain/query/Wallet/DeleteWalletTest.java +++ b/src/test/java/blockchain/query/Wallet/DeleteWalletTest.java @@ -19,7 +19,7 @@ public class DeleteWalletTest { try{ TransactionWrapper transactionWrapper = new TransactionWrapper(); String functionName = "deleteWallet"; - String[] args = new String[]{"qerh654d5f5hdsf1515"}; + String[] args = new String[]{"qerh654d5f5hdsf16"}; BlockEvent.TransactionEvent responseEvent = transactionWrapper.sendTransaction(functionName,args); logger.info("Event transaction id : "+responseEvent.getTransactionID()); //print transaction id }catch (Exception e){ diff --git a/src/test/java/blockchain/query/Wallet/InitWalletTest.java b/src/test/java/blockchain/query/Wallet/InitWalletTest.java index ea2c44d..c99a790 100644 --- a/src/test/java/blockchain/query/Wallet/InitWalletTest.java +++ b/src/test/java/blockchain/query/Wallet/InitWalletTest.java @@ -19,7 +19,8 @@ public class InitWalletTest { try{ TransactionWrapper transactionWrapper = new TransactionWrapper(); String functionName = "initWallet"; - String[] args = new String[]{"qerh654d5f5hdsf1515","client","usera"}; + //String[] args = new String[]{"qerh654d5f5hdsf1515","client","usera"}; + String[] args = new String[]{"qerh654d5f5hdsf16","fournisseur","bitman"}; BlockEvent.TransactionEvent responseEvent = transactionWrapper.sendTransaction(functionName,args); logger.info("Event transaction id : "+responseEvent.getTransactionID()); //print transaction id }catch (Exception e){ diff --git a/src/test/java/blockchain/query/Wallet/QueryWalletByOwnerTest.java b/src/test/java/blockchain/query/Wallet/QueryWalletByOwnerTest.java index a85c38c..7757616 100644 --- a/src/test/java/blockchain/query/Wallet/QueryWalletByOwnerTest.java +++ b/src/test/java/blockchain/query/Wallet/QueryWalletByOwnerTest.java @@ -7,6 +7,12 @@ import org.apache.log4j.Logger; import org.junit.Ignore; import org.junit.Test; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; +import javax.json.JsonReader; +import java.io.StringReader; + @Ignore public class QueryWalletByOwnerTest { @@ -18,10 +24,24 @@ public class QueryWalletByOwnerTest { try{ QueryWrapper queryWrapper = new QueryWrapper(); String functionName = "queryWalletsByOwner"; - String[] args = new String[]{"usera"}; - //String[] args = new String[]{"bitman"}; + //String[] args = new String[]{"usera"}; + String[] args = new String[]{"bitman"}; String response = queryWrapper.sendQuery(functionName,args); logger.info("response : "+response); + + if(response != null) { + JsonReader reader = Json.createReader(new StringReader(response)); + JsonArray walletInfo = reader.readArray(); + logger.info("walletInfo : "+walletInfo); + + for(Object obj : walletInfo){ + JsonObject o = (JsonObject) obj; + o = o.get("Record").asJsonObject(); + logger.info("JsonObject : "+o); + logger.info("walletInfo ID : "+o.getString("id")); + } + + } }catch (Exception e){ e.printStackTrace(); } diff --git a/src/test/java/blockchain/query/Wallet/ReadWalletTest.java b/src/test/java/blockchain/query/Wallet/ReadWalletTest.java index b60bd75..f91a73b 100644 --- a/src/test/java/blockchain/query/Wallet/ReadWalletTest.java +++ b/src/test/java/blockchain/query/Wallet/ReadWalletTest.java @@ -18,7 +18,7 @@ public class ReadWalletTest { try{ QueryWrapper queryWrapper = new QueryWrapper(); String functionName = "readWallet"; - String[] args = new String[]{"qerh654d5f5hdsf1515"}; + String[] args = new String[]{"qerh654d5f5h46q4fdh6h65fh00"}; String response = queryWrapper.sendQuery(functionName,args); logger.info("response : "+response); }catch (Exception e){ diff --git a/src/test/java/restImplementation/GetUserAssociationTest.java b/src/test/java/restImplementation/GetUserAssociationTest.java new file mode 100644 index 0000000..82d253c --- /dev/null +++ b/src/test/java/restImplementation/GetUserAssociationTest.java @@ -0,0 +1,20 @@ +package restImplementation; + +import org.apache.log4j.Logger; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.HashMap; +import java.util.List; + +@Ignore +public class GetUserAssociationTest { + private static Logger logger = Logger.getLogger(GetUserAssociationTest.class); + + @Test + public void GetUserAssociationTest() { + BlockchainQueryImplementation queryImplementation = new BlockchainQueryImplementation(); + String association = queryImplementation.getUserAssociation("bitman"); + logger.info("association : "+association); + } +} diff --git a/src/test/java/restImplementation/GetUserWalletsTest.java b/src/test/java/restImplementation/GetUserWalletsTest.java new file mode 100644 index 0000000..9f750f7 --- /dev/null +++ b/src/test/java/restImplementation/GetUserWalletsTest.java @@ -0,0 +1,22 @@ +package restImplementation; + +import org.apache.log4j.Logger; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.HashMap; +import java.util.List; + +@Ignore +public class GetUserWalletsTest { + private static Logger logger = Logger.getLogger(GetWalletSoldTest.class); + + @Test + public void GetUserWalletsTest() { + BlockchainQueryImplementation queryImplementation = new BlockchainQueryImplementation(); + List wallets = queryImplementation.getUserWallets("bitman"); + for(HashMap w : wallets){ + logger.info("walletHash : "+w.get("walletHash")+". walletType : "+w.get("walletType")+". sold : "+w.get("sold")); + } + } +} diff --git a/src/test/java/restImplementation/GetWalletSoldTest.java b/src/test/java/restImplementation/GetWalletSoldTest.java new file mode 100644 index 0000000..8914a07 --- /dev/null +++ b/src/test/java/restImplementation/GetWalletSoldTest.java @@ -0,0 +1,20 @@ +package restImplementation; + + +import org.apache.log4j.Logger; +import org.junit.Ignore; +import org.junit.Test; + + +@Ignore +public class GetWalletSoldTest { + private static Logger logger = Logger.getLogger(GetWalletSoldTest.class); + + @Test + public void GetWalletSold() { + BlockchainQueryImplementation queryImplementation = new BlockchainQueryImplementation(); + Double sold = queryImplementation.getWalletSold("qerh654d5f5h46q4fdh6h65fh00"); + logger.info("result sold : "+sold); + } + +}