From 618fa237d0e6705bfc5d8c8ac8c101245965b178 Mon Sep 17 00:00:00 2001 From: GME Date: Wed, 21 Nov 2018 20:19:43 +0100 Subject: [PATCH 1/2] Transaction api rest Added basic method for api rest transactions --- .../DatabaseTransactionImplementation.java | 38 +++++++++++++ .../DatabaseUserImplementation.java | 2 - .../DatabaseTransactionResource.java | 56 +++++++++++++++++++ .../restService/DatabaseUserResource.java | 2 +- 4 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 src/main/java/restImplementation/DatabaseTransactionImplementation.java diff --git a/src/main/java/restImplementation/DatabaseTransactionImplementation.java b/src/main/java/restImplementation/DatabaseTransactionImplementation.java new file mode 100644 index 0000000..556ccbc --- /dev/null +++ b/src/main/java/restImplementation/DatabaseTransactionImplementation.java @@ -0,0 +1,38 @@ +package restImplementation; + +import database.transaction.Transaction; +import database.transaction.TransactionDao; + +import java.time.Instant; +import java.util.List; + +public class DatabaseTransactionImplementation { + + public void saveTransaction(Transaction transaction) throws Exception{ + TransactionDao transactionDao = new TransactionDao(); + long now = Instant.now().toEpochMilli(); + transaction.setTransactionDate(now); + transactionDao.addTransaction(transaction); + } + + public Transaction getUserTransaction(int userId, String transactionHash)throws Exception{ + TransactionDao transactionDao = new TransactionDao(); + Transaction tx = transactionDao.getTransaction(userId,transactionHash); + if(tx != null){ + return tx; + }else { + return null; + } + } + + public List getAllUserTransactions(int userId)throws Exception{ + TransactionDao transactionDao = new TransactionDao(); + return transactionDao.getUserTransactions(userId); + } + + public List getLastTenTransactions(int userId)throws Exception{ + TransactionDao transactionDao = new TransactionDao(); + return transactionDao.getTenLastUserTransactions(userId); + } + +} diff --git a/src/main/java/restImplementation/DatabaseUserImplementation.java b/src/main/java/restImplementation/DatabaseUserImplementation.java index f62bc46..bdfa3ed 100644 --- a/src/main/java/restImplementation/DatabaseUserImplementation.java +++ b/src/main/java/restImplementation/DatabaseUserImplementation.java @@ -38,11 +38,9 @@ public class DatabaseUserImplementation { if(BCrypt.checkpw(password, hash)){ return user1; }else{ - System.out.println("Bcrypt nope"); return null; } }else { - System.out.println("nope"); return null; } } diff --git a/src/main/java/restService/DatabaseTransactionResource.java b/src/main/java/restService/DatabaseTransactionResource.java index 00bfa98..488a710 100644 --- a/src/main/java/restService/DatabaseTransactionResource.java +++ b/src/main/java/restService/DatabaseTransactionResource.java @@ -1,4 +1,60 @@ package restService; +import database.transaction.Transaction; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import restImplementation.DatabaseTransactionImplementation; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping(value = "/api/rest/transaction") public class DatabaseTransactionResource { + + @PostMapping("/save") + @ResponseStatus(HttpStatus.CREATED) + public ResponseEntity saveTransaction(@Valid @RequestBody Transaction transaction){ + try{ + DatabaseTransactionImplementation databaseTransactionImplementation = new DatabaseTransactionImplementation(); + databaseTransactionImplementation.saveTransaction(transaction); + return ResponseEntity.status(HttpStatus.OK).body(""); + }catch (Exception e){ + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage()); + } + } + + @GetMapping("/get") + @ResponseStatus(HttpStatus.OK) + public ResponseEntity getTransaction(@Valid @RequestBody Transaction transaction){ + try{ + DatabaseTransactionImplementation databaseTransactionImplementation = new DatabaseTransactionImplementation(); + Transaction tx = databaseTransactionImplementation.getUserTransaction(transaction.getUserId(),transaction.getTransactionHash()); + if(tx != null){ + return ResponseEntity.status(HttpStatus.OK).body(tx); + }else { + return new ResponseEntity("Error", HttpStatus.NOT_FOUND); + } + }catch (Exception e){ + return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST); + } + } + + @RequestMapping(value = "/getAll", method = RequestMethod.GET, params = {"userId"}, produces = "application/json") + @ResponseStatus(HttpStatus.OK) + public ResponseEntity> getAllTransaction(@RequestParam(value = "userId") int userId){ + try{ + DatabaseTransactionImplementation databaseTransactionImplementation = new DatabaseTransactionImplementation(); + List transactionList = databaseTransactionImplementation.getAllUserTransactions(userId); + if(!transactionList.isEmpty()){ + return ResponseEntity.status(HttpStatus.OK).body(transactionList); + }else { + return new ResponseEntity("Error", HttpStatus.NOT_FOUND); + } + }catch (Exception e){ + return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST); + } + } + } diff --git a/src/main/java/restService/DatabaseUserResource.java b/src/main/java/restService/DatabaseUserResource.java index 0d1eea6..a94072d 100644 --- a/src/main/java/restService/DatabaseUserResource.java +++ b/src/main/java/restService/DatabaseUserResource.java @@ -58,7 +58,7 @@ public class DatabaseUserResource { userResponse.setUserId(response.getUserId()); return ResponseEntity.status(HttpStatus.OK).body(userResponse); }else{ - return new ResponseEntity("Error", HttpStatus.CONFLICT); + return new ResponseEntity("Error", HttpStatus.NOT_FOUND); } }catch (Exception e){ return new ResponseEntity(e.getMessage(), HttpStatus.CONFLICT); From a50e07535cdced3290403e71622e63639fe6d67a Mon Sep 17 00:00:00 2001 From: GME Date: Wed, 21 Nov 2018 21:26:58 +0100 Subject: [PATCH 2/2] add a query, tested --- .../database/transaction/Transaction.java | 69 +++++++++++-------- src/main/java/database/user/User.java | 17 ++++- .../DatabaseTransactionResource.java | 19 ++++- 3 files changed, 75 insertions(+), 30 deletions(-) diff --git a/src/main/java/database/transaction/Transaction.java b/src/main/java/database/transaction/Transaction.java index 08769ee..442e827 100644 --- a/src/main/java/database/transaction/Transaction.java +++ b/src/main/java/database/transaction/Transaction.java @@ -3,55 +3,55 @@ package database.transaction; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; -import java.math.BigInteger; +import java.math.BigDecimal; @DatabaseTable(tableName = "T_TRANSACTION") public class Transaction { - @DatabaseField + @DatabaseField(generatedId = true) private int transactionId; @DatabaseField(canBeNull = false) private int userId; @DatabaseField(canBeNull = false) private long transactionDate; - @DatabaseField(columnName = "transactionFrom", canBeNull = false) - private String sourceAddress; - @DatabaseField(columnName = "transactionTo", canBeNull = false) - private String destAddress; + @DatabaseField(canBeNull = false) + private String transactionFrom; + @DatabaseField(canBeNull = false) + private String transactionTo; @DatabaseField(canBeNull = false) private String transactionHash; @DatabaseField(canBeNull = false) - private BigInteger amount; + private Double transactionAmount; @DatabaseField(canBeNull = false) - private String unit; + private String transactionUnit; public Transaction() { super(); } - public Transaction(long transactionDate, String sourceAddress, String destAddress, String transactionHash, BigInteger amount, String unit) { + public Transaction(long transactionDate, String transactionFrom, String transactionTo, String transactionHash, Double transactionAmount, String transactionUnit) { super(); this.transactionDate = transactionDate; - this.sourceAddress = sourceAddress; - this.destAddress = destAddress; + this.transactionFrom = transactionFrom; + this.transactionTo = transactionTo; this.transactionHash = transactionHash; - this.amount = amount; - this.unit = unit; + this.transactionAmount = transactionAmount; + this.transactionUnit = transactionUnit; } - public String getSourceAddress() { - return sourceAddress; + public String getTransactionFrom() { + return transactionFrom; } - public void setSourceAddress(String sourceAddress) { - this.sourceAddress = sourceAddress; + public void setTransactionFrom(String transactionFrom) { + this.transactionFrom = transactionFrom; } public String getDestAddress() { - return destAddress; + return transactionTo; } - public void setDestAddress(String destAddress) { - this.destAddress = destAddress; + public void setTransactionTo(String transactionTo) { + this.transactionTo = transactionTo; } public String getTransactionHash() { @@ -62,12 +62,12 @@ public class Transaction { this.transactionHash = transactionHash; } - public BigInteger getAmount() { - return amount; + public Double getTransactionAmount() { + return transactionAmount; } - public void setAmount(BigInteger amount) { - this.amount = amount; + public void setTransactionAmount(Double transactionAmount) { + this.transactionAmount = transactionAmount; } public int getTransactionId() { @@ -94,12 +94,25 @@ public class Transaction { this.transactionDate = transactionDate; } - public String getUnit() { - return unit; + public String getTransactionUnit() { + return transactionUnit; } - public void setUnit(String unit) { - this.unit = unit; + public void setTransactionUnit(String transactionUnit) { + this.transactionUnit = transactionUnit; } + @Override + public String toString() { + return "Transaction{" + + "transactionId=" + transactionId + + ", userId=" + userId + + ", transactionDate=" + transactionDate + + ", transactionFrom='" + transactionFrom + '\'' + + ", transactionTo='" + transactionTo + '\'' + + ", transactionHash='" + transactionHash + '\'' + + ", transactionAmount=" + transactionAmount + + ", transactionUnit='" + transactionUnit + '\'' + + '}'; + } } diff --git a/src/main/java/database/user/User.java b/src/main/java/database/user/User.java index 0b327c6..2e887c1 100644 --- a/src/main/java/database/user/User.java +++ b/src/main/java/database/user/User.java @@ -6,7 +6,7 @@ import com.j256.ormlite.table.DatabaseTable; //Class User which represent an User in the postgresDB @DatabaseTable(tableName = "T_USER") public class User { - @DatabaseField + @DatabaseField(generatedId = true) private int userId; @DatabaseField(canBeNull = false) private String name; @@ -127,4 +127,19 @@ public class User { this.approved = approved; } + @Override + public String toString() { + return "User{" + + "userId=" + userId + + ", name='" + name + '\'' + + ", firstname='" + firstname + '\'' + + ", email='" + email + '\'' + + ", password='" + password + '\'' + + ", creation_date=" + creation_date + + ", modification_date=" + modification_date + + ", verified=" + verified + + ", approved=" + approved + + ", user_hash='" + user_hash + '\'' + + '}'; + } } diff --git a/src/main/java/restService/DatabaseTransactionResource.java b/src/main/java/restService/DatabaseTransactionResource.java index 488a710..d4d9b5f 100644 --- a/src/main/java/restService/DatabaseTransactionResource.java +++ b/src/main/java/restService/DatabaseTransactionResource.java @@ -41,9 +41,26 @@ public class DatabaseTransactionResource { } } + @RequestMapping(value = "/getLatest", method = RequestMethod.GET, params = {"userId"}, produces = "application/json") + @ResponseStatus(HttpStatus.OK) + public ResponseEntity> getLatestTransactions(@RequestParam(value = "userId") int userId){ + try{ + DatabaseTransactionImplementation databaseTransactionImplementation = new DatabaseTransactionImplementation(); + List transactionList = databaseTransactionImplementation.getLastTenTransactions(userId); + if(!transactionList.isEmpty()){ + return ResponseEntity.status(HttpStatus.OK).body(transactionList); + }else { + return new ResponseEntity("Error", HttpStatus.NOT_FOUND); + } + }catch (Exception e){ + return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST); + } + } + + @RequestMapping(value = "/getAll", method = RequestMethod.GET, params = {"userId"}, produces = "application/json") @ResponseStatus(HttpStatus.OK) - public ResponseEntity> getAllTransaction(@RequestParam(value = "userId") int userId){ + public ResponseEntity> getAllTransactions(@RequestParam(value = "userId") int userId){ try{ DatabaseTransactionImplementation databaseTransactionImplementation = new DatabaseTransactionImplementation(); List transactionList = databaseTransactionImplementation.getAllUserTransactions(userId);