From 7b0371ffb2fb2037058a9367dd40e199f919f085 Mon Sep 17 00:00:00 2001 From: Raditss <raditya.naufal.a@gmail.com> Date: Wed, 15 Nov 2023 20:37:29 +0700 Subject: [PATCH] fix output get transaction --- .../org/toco/model/transaction_model.java | 15 ++++ .../org/toco/publisher/gemsPublisher.java | 10 --- .../org/toco/publisher/testingPublisher.java | 8 -- .../toco/publisher/transactionPublisher.java | 15 ---- src/main/java/org/toco/service/testing.java | 16 ---- .../java/org/toco/service/toco_service.java | 2 +- .../org/toco/service/toco_service_impl.java | 15 ++-- .../java/org/toco/service/transaction.java | 87 ------------------ src/main/java/org/toco/service/userGems.java | 88 ------------------- 9 files changed, 26 insertions(+), 230 deletions(-) delete mode 100644 src/main/java/org/toco/publisher/gemsPublisher.java delete mode 100644 src/main/java/org/toco/publisher/testingPublisher.java delete mode 100644 src/main/java/org/toco/publisher/transactionPublisher.java delete mode 100644 src/main/java/org/toco/service/testing.java delete mode 100644 src/main/java/org/toco/service/transaction.java delete mode 100644 src/main/java/org/toco/service/userGems.java diff --git a/src/main/java/org/toco/model/transaction_model.java b/src/main/java/org/toco/model/transaction_model.java index fe08525..ee5fc7c 100644 --- a/src/main/java/org/toco/model/transaction_model.java +++ b/src/main/java/org/toco/model/transaction_model.java @@ -39,4 +39,19 @@ public class transaction_model { } } +// get transaction count by a user + public Integer getTransactionCount(Integer user_id){ + String sql = "select count(*) from transaction where user_id = (?)"; + try (Connection connection = connector.connect() ; + PreparedStatement command = connection.prepareStatement(sql)) { + command.setInt(1, user_id); + command.execute(); + ResultSet rs = command.getResultSet(); + rs.next(); + return rs.getInt(1); + } catch (SQLException exception) { + throw new RuntimeException("Error when getting transaction", exception); + } + } + } diff --git a/src/main/java/org/toco/publisher/gemsPublisher.java b/src/main/java/org/toco/publisher/gemsPublisher.java deleted file mode 100644 index 1329c64..0000000 --- a/src/main/java/org/toco/publisher/gemsPublisher.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.toco.publisher; -import javax.xml.ws.Endpoint; - -public class gemsPublisher { - public static void publish() { - System.out.println("publishing gems service"); - Endpoint.publish("http://0.0.0.0:8080/gems", new org.toco.service.userGems()); - System.out.println("gems service published"); - } -} diff --git a/src/main/java/org/toco/publisher/testingPublisher.java b/src/main/java/org/toco/publisher/testingPublisher.java deleted file mode 100644 index 01fe15d..0000000 --- a/src/main/java/org/toco/publisher/testingPublisher.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.toco.publisher; -import javax.xml.ws.Endpoint; - -public class testingPublisher { - public static void publish() { - Endpoint.publish("http://0.0.0.0:8080/testing", new org.toco.service.testing()); - } -} diff --git a/src/main/java/org/toco/publisher/transactionPublisher.java b/src/main/java/org/toco/publisher/transactionPublisher.java deleted file mode 100644 index 6e6d6d9..0000000 --- a/src/main/java/org/toco/publisher/transactionPublisher.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.toco.publisher; -import javax.xml.ws.Endpoint; - -public class transactionPublisher { - public static void publish() { - System.out.println("publishing transaction service"); - Endpoint.publish("http://0.0.0.0:8080/transaction", new org.toco.service.transaction()); - System.out.println("transaction service published"); - } - -} - - - - diff --git a/src/main/java/org/toco/service/testing.java b/src/main/java/org/toco/service/testing.java deleted file mode 100644 index 90fa789..0000000 --- a/src/main/java/org/toco/service/testing.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.toco.service; - -import org.toco.core.connector; - -import javax.jws.WebService; -import javax.jws.WebMethod; - -@WebService -public class testing { - @WebMethod - public String hello(String name) { - connector.connect(); - return "Hello " + name + "!"; - } - -} diff --git a/src/main/java/org/toco/service/toco_service.java b/src/main/java/org/toco/service/toco_service.java index 25a17bc..bd7bc6f 100644 --- a/src/main/java/org/toco/service/toco_service.java +++ b/src/main/java/org/toco/service/toco_service.java @@ -32,7 +32,7 @@ public interface toco_service { ); @WebMethod - public transaction_entity[] getTransactions( + public String getTransactions( @WebParam(name = "user_id") Integer user_id ); diff --git a/src/main/java/org/toco/service/toco_service_impl.java b/src/main/java/org/toco/service/toco_service_impl.java index e3bfb1c..c357cf7 100644 --- a/src/main/java/org/toco/service/toco_service_impl.java +++ b/src/main/java/org/toco/service/toco_service_impl.java @@ -5,7 +5,6 @@ import org.toco.entity.*; import javax.jws.WebService; -import javax.jws.WebMethod; import javax.annotation.Resource; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; @@ -70,12 +69,12 @@ public class toco_service_impl implements toco_service { userGemsModel.update(new userGems_Entity(user_id, userGems - amount)); transaction_model transactionModel = new transaction_model(); transactionModel.insert(new transaction_entity(user_id, amount, type, "accepted")); - addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and description ACCEPTED"); + addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and status ACCEPTED"); return "success"; } else { transaction_model transactionModel = new transaction_model(); transactionModel.insert(new transaction_entity(user_id, amount, type, "rejected")); - addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and description REJECTED"); + addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and status REJECTED"); return "insufficient gems"; } } @@ -86,12 +85,18 @@ public class toco_service_impl implements toco_service { } @Override - public transaction_entity[] getTransactions(Integer user_id) { + public String getTransactions(Integer user_id) { if(validateApiKey()){ transaction_model transactionModel = new transaction_model(); transaction_entity[] transactions = transactionModel.getTransaction(user_id); +// create transactions to a string with each transaction on a new line + String ret = ""; + int len = transactionModel.getTransactionCount(user_id); + for (int i = 0; i < len; i++) { + ret += transactions[i].toString() + "\n"; + } addLoggging("User with id " + user_id + " requested his transactions"); - return transactions; + return ret; } else { addLoggging("invalid api key for user"+user_id); diff --git a/src/main/java/org/toco/service/transaction.java b/src/main/java/org/toco/service/transaction.java deleted file mode 100644 index 239891d..0000000 --- a/src/main/java/org/toco/service/transaction.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.toco.service; - -import org.toco.model.*; -import org.toco.entity.*; - - -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.annotation.Resource; -import javax.xml.ws.WebServiceContext; -import javax.xml.ws.handler.MessageContext; -import com.sun.net.httpserver.HttpExchange; -import com.sun.xml.ws.developer.JAXWSProperties; -import java.net.InetAddress; -import java.net.InetSocketAddress; - -@WebService -public class transaction { - - @Resource - WebServiceContext wsctx; - - @WebMethod - public void createTransaction(Integer user_id, Integer amount, String image) { - if (validateApiKey()){ - userGems_model userGemsModel = new userGems_model(); - Integer userGems = userGemsModel.getUserGems(user_id); - if (userGems >= amount) { - userGemsModel.update(new userGems_Entity(user_id, userGems - amount)); - transaction_model transactionModel = new transaction_model(); - transactionModel.insert(new transaction_entity(user_id, amount, image, "accepted")); - addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and description ACCEPTED"); - } else { - transaction_model transactionModel = new transaction_model(); - transactionModel.insert(new transaction_entity(user_id, amount, image, "rejected")); - addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and description REJECTED"); - } - } - else { - addLoggging("User with id " + user_id + " tried to create a transaction with amount " + amount + " but failed because of invalid api key"); - } - } - - @WebMethod - public transaction_entity[] getTransactions(Integer user_id) { - if(validateApiKey()){ - transaction_model transactionModel = new transaction_model(); - transaction_entity[] transactions = transactionModel.getTransaction(user_id); - addLoggging("User with id " + user_id + " requested his transactions"); - return transactions; - } - else { - addLoggging("invalid api key for user"+user_id); - return null; - } - } - - - - - public void addLoggging(String description) { - MessageContext mctx = wsctx.getMessageContext(); - HttpExchange req = (HttpExchange) mctx.get(JAXWSProperties.HTTP_EXCHANGE); - InetSocketAddress remote = req.getRemoteAddress(); - InetAddress address = remote.getAddress(); - String ip = address.getHostAddress(); - String endpoint = req.getRequestURI().toString(); - logging logging_service = new logging(); - logging_service.addLogging(description, ip, endpoint); - } - - public Boolean validateApiKey() { - String[] API_KEYS = { "toco_rest", "Postman", "toco_php"}; - MessageContext mc = wsctx.getMessageContext(); - HttpExchange exchange = (HttpExchange) mc.get("com.sun.xml.ws.http.exchange"); - String apiKey = exchange.getRequestHeaders().getFirst("X-API-KEY"); - apiKey = apiKey.hashCode() + ""; - if (apiKey == null) { - return false; - } else if (apiKey.equals(API_KEYS[0]) || apiKey.equals(API_KEYS[1]) || apiKey.equals(API_KEYS[2])) { - return true; - } else { - return false; - } - } - -} diff --git a/src/main/java/org/toco/service/userGems.java b/src/main/java/org/toco/service/userGems.java deleted file mode 100644 index 52a7ccf..0000000 --- a/src/main/java/org/toco/service/userGems.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.toco.service; - -import org.toco.model.*; -import org.toco.entity.*; - - - -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.annotation.Resource; -import javax.xml.ws.WebServiceContext; -import javax.xml.ws.handler.MessageContext; -import com.sun.net.httpserver.HttpExchange; -import com.sun.xml.ws.developer.JAXWSProperties; -import java.net.InetAddress; -import java.net.InetSocketAddress; - - - - -@WebService -public class userGems { - - @Resource - WebServiceContext wsctx; - - - @WebMethod - public void addGems(Integer user_id, Integer gem) { - if (validateApiKey()){ - userGems_Entity userGems = new userGems_Entity(user_id, gem); - userGems_model userGemsModel = new userGems_model(); - if (userGemsModel.checkUser(user_id)) { - Integer currentGems = userGemsModel.getUserGems(user_id); - userGems.setGem(currentGems + gem); - userGemsModel.update(userGems); - addLoggging("User with id " + user_id + " added " + gem + " gems"); - } else { - userGemsModel.insert(userGems); - addLoggging("User with id " + user_id + " added " + gem + " gems"); - } - } - else { - addLoggging("User with id " + user_id + " tried to add " + gem + " gems but failed because of invalid api key"); - } - } - - @WebMethod - public Integer getGems(Integer user_id) { - if(validateApiKey()){ - userGems_model userGemsModel = new userGems_model(); - Integer gems = userGemsModel.getUserGems(user_id); - addLoggging("User with id " + user_id + " requested his gems"); - return gems; - } - else { - addLoggging("User with id " + user_id + " tried to get his gems but failed because of invalid api key"); - return -1; - } - } - - public void addLoggging(String description) { - MessageContext mctx = wsctx.getMessageContext(); - HttpExchange req = (HttpExchange) mctx.get(JAXWSProperties.HTTP_EXCHANGE); - InetSocketAddress remote = req.getRemoteAddress(); - InetAddress address = remote.getAddress(); - String ip = address.getHostAddress(); - String endpoint = req.getRequestURI().toString(); - logging logging_service = new logging(); - logging_service.addLogging(description, ip, endpoint); - } - - public Boolean validateApiKey() { - String[] API_KEYS = { "toco_rest", "Postman", "toco_php"}; - MessageContext mc = wsctx.getMessageContext(); - HttpExchange exchange = (HttpExchange) mc.get("com.sun.xml.ws.http.exchange"); - String apiKey = exchange.getRequestHeaders().getFirst("X-API-KEY"); - if (apiKey == null) { - return false; - } else if (apiKey.equals(API_KEYS[0]) || apiKey.equals(API_KEYS[1]) || apiKey.equals(API_KEYS[2])) { - return true; - } else { - return false; - } - } - - -} -- GitLab