diff --git a/banking-client/src/main/java/ufrn/imd/controller/Controller.java b/banking-client/src/main/java/ufrn/imd/controller/Controller.java index 580d6e5bd0706569fec236bf1337a7adbf06e7f8..b096e53ac2b72da6bd16bab300631399a7a479f8 100644 --- a/banking-client/src/main/java/ufrn/imd/controller/Controller.java +++ b/banking-client/src/main/java/ufrn/imd/controller/Controller.java @@ -1,10 +1,13 @@ package ufrn.imd.controller; import ufrn.imd.domain.Client; +import ufrn.imd.utils.ServerResponse; import java.rmi.Remote; import java.rmi.RemoteException; public interface Controller extends Remote { public void registerClient(Client client) throws RemoteException; + + public ServerResponse getResponse(Object client) throws RemoteException; } diff --git a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java index 961c800225f721bcf2322dd1f46e137808598db9..975d268b2ebda092b909bd8c0bf19ef69a5bb142 100644 --- a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java +++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java @@ -2,7 +2,10 @@ package ufrn.imd.utils; import lombok.Data; import ufrn.imd.controller.Controller; +import ufrn.imd.domain.Account; import ufrn.imd.domain.Client; +import ufrn.imd.utils.message.DepositMessage; +import ufrn.imd.utils.message.WithdrawalMessage; import java.net.MalformedURLException; import java.rmi.Naming; @@ -10,6 +13,7 @@ import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.util.Scanner; +import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE; import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE; import static ufrn.imd.utils.NameSpace.HOST_WITHDRAWAL_SERVICE; @@ -17,14 +21,12 @@ import static ufrn.imd.utils.NameSpace.HOST_WITHDRAWAL_SERVICE; public class MachineState { public static final String INITIAL= "INITIAL"; - public static final String RENDER = "RENDER"; - public static final String UPDATE_STATE = "UPDATE_STATE"; public static final String READ = "READ"; public static final String DEPOSIT = "DEPOSIT"; public static final String BALANCE = "BALANCE"; public static final String WITHDRAWAL = "WITHDRAWAL"; - public static final String HELP = "HELP"; + public static final String START = "START"; public static final String INVALID_INPUT = "INVALID_INPUT"; public static final String QUIT = "QUIT"; @@ -44,40 +46,84 @@ public class MachineState { public void update() { if(state.equals(INITIAL)) { - state = HELP; - } else if(state.equals(HELP)) { + state = START; + } else if(state.equals(START)) { state = READ; } else if(state.equals(READ)) { state = inputValue; } else if(state.equals(INVALID_INPUT)) { - state = HELP; + state = START; } else if(state.equals(DEPOSIT)) { - state = HELP; + state = START; + } else if(state.equals(BALANCE)) { + state = START; } else if(state.equals(WITHDRAWAL)) { - state = HELP; + state = START; } } public void processEvents() throws MalformedURLException, NotBoundException, RemoteException { if(state.equals(READ)) { - inputValue = new String(); inputValue = sc.nextLine().trim().toUpperCase(); - System.out.println(String.format(">>> input value: %s", inputValue)); - if(!inputValue.equals(DEPOSIT) && !inputValue.equals(BALANCE) && !inputValue.equals(WITHDRAWAL) ){ + if(!inputValue.isEmpty() && + !inputValue.equals(QUIT) && + !inputValue.equals(DEPOSIT) && + !inputValue.equals(BALANCE) && + !inputValue.equals(WITHDRAWAL)) { inputValue = INVALID_INPUT; } } else if(state.equals(DEPOSIT)) { - double v = sc.nextDouble(); - System.out.println(String.format(">>> input value: %.2f", v)); + String v = sc.nextLine(); Client client = new Client(1); + DepositMessage depositMessage = new DepositMessage(client, Double.parseDouble(v)); Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE); - server.registerClient(client); + ServerResponse response = server.getResponse(depositMessage); + if(response.getStatus() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } else if(state.equals(BALANCE)) { + Client client = new Client(1); + Controller server = (Controller) Naming.lookup(HOST_BALANCE_SERVICE); + ServerResponse response = server.getResponse(client); + if(response.getStatus() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } else if(state.equals(WITHDRAWAL)) { - double v = sc.nextDouble(); - System.out.println(String.format(">>> input value: %.2f", v)); + String v = sc.nextLine(); Client client = new Client(1); + WithdrawalMessage withdrawalMessage = new WithdrawalMessage(client, Double.parseDouble(v)); Controller server = (Controller) Naming.lookup(HOST_WITHDRAWAL_SERVICE); - server.registerClient(client); + ServerResponse response = server.getResponse(withdrawalMessage); + if(response.getStatus() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance()) + ); + } else if(response.getStatus() == 500) { + System.out.println( + String.format(">>> %s", response.getMessage()) + ); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } } @@ -86,7 +132,7 @@ public class MachineState { if(state.equals(INITIAL)) { System.out.println(">>> Initializing..."); Thread.sleep(1000); - } else if(state.equals(HELP)) { + } else if(state.equals(START)) { System.out.println("These are the avaliable operations"); System.out.println("---------------------------------"); System.out.println(" - deposit \t - balance"); diff --git a/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java index 25c6d983740bed909d65dfff4eb3034af0524f61..68378ddd071645b9312f191151677cb136ac9273 100644 --- a/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java +++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java @@ -1,9 +1,10 @@ package ufrn.imd.utils; public class NameSpace { - public static final Integer PORT_DEPOSIT_SERVICE = 1907; - public static final String HOST_DEPOSIT_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_DEPOSIT_SERVICE, "deposit"); - public final static Integer PORT_WITHDRAWAL_SERVICE = 1906; + public static final Integer PORT_DEPOSIT_SERVICE = 1907; + public static final Integer PORT_BALANCE_SERVICE = 1908; public final static String HOST_WITHDRAWAL_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_WITHDRAWAL_SERVICE, "withdrawal"); + public static final String HOST_DEPOSIT_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_DEPOSIT_SERVICE, "deposit"); + public static final String HOST_BALANCE_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_BALANCE_SERVICE, "balance"); } diff --git a/banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java b/banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..4c1115b4648ee5503d0ebdb68cc5982e97f96794 --- /dev/null +++ b/banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java @@ -0,0 +1,20 @@ +package ufrn.imd.utils; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@NoArgsConstructor +@AllArgsConstructor +@Data +@Builder +public class ServerResponse implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer status; + private String message; + private Object body; +} diff --git a/banking-client/src/main/java/ufrn/imd/utils/message/DepositMessage.java b/banking-client/src/main/java/ufrn/imd/utils/message/DepositMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..4b6e3da72f55566ba318c15e0595d2329171c904 --- /dev/null +++ b/banking-client/src/main/java/ufrn/imd/utils/message/DepositMessage.java @@ -0,0 +1,17 @@ +package ufrn.imd.utils.message; + +import lombok.AllArgsConstructor; +import lombok.Data; +import ufrn.imd.domain.Client; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class DepositMessage implements Serializable { + + private static final long serialVersionUID = 2L; + + private Client client; + private Double value; +} diff --git a/banking-client/src/main/java/ufrn/imd/utils/message/WithdrawalMessage.java b/banking-client/src/main/java/ufrn/imd/utils/message/WithdrawalMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..fbf69894a42e545ed176cf34623b8ce26f12c3b8 --- /dev/null +++ b/banking-client/src/main/java/ufrn/imd/utils/message/WithdrawalMessage.java @@ -0,0 +1,16 @@ +package ufrn.imd.utils.message; + +import lombok.AllArgsConstructor; +import lombok.Data; +import ufrn.imd.domain.Client; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class WithdrawalMessage implements Serializable { + private static final long serialVersionUID = 2L; + + private Client client; + private Double value; +} diff --git a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java index 38a2056f1e54ebf485d815de51434dd4866283d8..4332c2c16d20ca96e4716a2b290aeb84f9bcc151 100644 --- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java +++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java @@ -15,14 +15,13 @@ import java.rmi.RemoteException; public class BankingServerApp { public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException { - - DepositServiceImpl depositService = new DepositServiceImpl(new ClientRepository()); - BalanceServiceImpl balanceService = new BalanceServiceImpl(new ClientRepository()); - WithdrawalServiceImpl withdrawalService = new WithdrawalServiceImpl(new ClientRepository()); + ClientRepository clientRepository = new ClientRepository(); + DepositServiceImpl depositService = new DepositServiceImpl(clientRepository); + BalanceServiceImpl balanceService = new BalanceServiceImpl(clientRepository); + WithdrawalServiceImpl withdrawalService = new WithdrawalServiceImpl(clientRepository); Controller depositController = new DepositControllerImpl(depositService); Controller balanceController = new BalanceControllerImpl(balanceService); Controller withdrawalController = new WithdrawalControllerImpl(withdrawalService); - } } diff --git a/banking-server/src/main/java/ufrn/imd/controller/Controller.java b/banking-server/src/main/java/ufrn/imd/controller/Controller.java index 824205a78effedd521e934e17809e5bfcc593a71..d5be018d3c01b6e18b13aa9d9028f66bb795589d 100644 --- a/banking-server/src/main/java/ufrn/imd/controller/Controller.java +++ b/banking-server/src/main/java/ufrn/imd/controller/Controller.java @@ -1,11 +1,12 @@ package ufrn.imd.controller; import ufrn.imd.domain.Client; +import ufrn.imd.utils.ServerResponse; import java.rmi.Remote; import java.rmi.RemoteException; public interface Controller extends Remote { - public void registerClient(Client client) throws RemoteException; + public ServerResponse getResponse(Object client) throws RemoteException; } diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java index 0c51991cd1d1c609e46d4192e603a6ab4b568b83..50d9cb87a9e624e039f790f7cad9bfdb09e97fb4 100644 --- a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java +++ b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java @@ -3,6 +3,7 @@ package ufrn.imd.controller.impl; import ufrn.imd.controller.Controller; import ufrn.imd.domain.Client; import ufrn.imd.service.impl.BalanceServiceImpl; +import ufrn.imd.utils.ServerResponse; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; @@ -19,6 +20,7 @@ import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE; public class BalanceControllerImpl extends UnicastRemoteObject implements Controller { private volatile Queue<Client> clients = new ArrayDeque<>(); + private final BalanceServiceImpl service; public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); @@ -26,57 +28,14 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro LocateRegistry.createRegistry(PORT_BALANCE_SERVICE); Naming.bind(HOST_BALANCE_SERVICE, this); log.info("Starting Deposit service!"); - - new Notify(service).start(); + this.service = service; log.info(String.format("Initializing server in %s", HOST_BALANCE_SERVICE)); } @Override - public void registerClient(Client client) throws RemoteException { - clients.add(client); - log.info("new client registred"); - log.info(String.format("total users: %d", clients.size())); - } - - - - - private class Notify extends Thread{ - - private final BalanceServiceImpl service; - - public Notify(BalanceServiceImpl service) { - super(); - this.service = service; - } - public void run() { - - for(;;) { - if(clients.size() > 0) { - - log.info("notyfing the clients!"); - int i = 0; - clients.stream().forEach(client -> { - try { - - log.info(String.format("Clients waiting %d", clients.size())); - this.service.balance(Optional.of(client)); - clients.remove(); - log.info(String.format("Clients waiting %d", clients.size())); - } catch (RemoteException e) { - e.printStackTrace(); - } - }); - - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - } + public ServerResponse getResponse(Object obj) throws RemoteException { + Client client = (Client) obj; + return this.service.balance(Optional.of(client)); } } diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java index d9b3df5950323de0002ab2dd569206be9d510578..1e37f28ff725ffc585139f7bfe6f20e937c9c352 100644 --- a/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java +++ b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java @@ -4,6 +4,8 @@ import lombok.extern.java.Log; import ufrn.imd.controller.Controller; import ufrn.imd.domain.Client; import ufrn.imd.service.impl.DepositServiceImpl; +import ufrn.imd.utils.ServerResponse; +import ufrn.imd.utils.message.DepositMessage; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; @@ -20,63 +22,22 @@ import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE; public class DepositControllerImpl extends UnicastRemoteObject implements Controller { private volatile Queue<Client> clients = new ArrayDeque<>(); + private final DepositServiceImpl service; + + private volatile Queue<ServerResponse> serverResponses = new ArrayDeque<>(); public DepositControllerImpl(DepositServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); log.info("Starting Deposit service!"); - new Notify(service).start(); log.info(String.format("Initializing server in %s", HOST_DEPOSIT_SERVICE)); - + this.service = service; LocateRegistry.createRegistry(PORT_DEPOSIT_SERVICE); - Naming.bind(HOST_DEPOSIT_SERVICE, this); } - @Override - public void registerClient(Client client) throws RemoteException { - clients.add(client); - log.info("new client registred"); - log.info(String.format("total users: %d", clients.size())); + public ServerResponse getResponse(Object obj) throws RemoteException { + DepositMessage depositMessage = (DepositMessage)obj; + return this.service.deposit(depositMessage.getValue(), Optional.of(depositMessage.getClient())); } - - - - private class Notify extends Thread{ - - private final DepositServiceImpl service; - - public Notify(DepositServiceImpl service) { - super(); - this.service = service; - } - public void run() { - - for(;;) { - - if(clients.size() > 0) { - - log.info("notyfing the clients!"); - int i = 0; - clients.stream().forEach(client -> { - try { - log.info(String.format("Clients waiting %d", clients.size())); - this.service.deposit(200.00, Optional.of(client)); - clients.remove(); - log.info(String.format("Clients waiting %d", clients.size())); - - } catch (RemoteException e) { - e.printStackTrace(); - } - }); - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - } - } } diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/WithdrawalControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/WithdrawalControllerImpl.java index 9bd03e2a55698094fe343716005ac804b4cf356b..986572becc26f20372aea2ce5193d21868bcd85b 100644 --- a/banking-server/src/main/java/ufrn/imd/controller/impl/WithdrawalControllerImpl.java +++ b/banking-server/src/main/java/ufrn/imd/controller/impl/WithdrawalControllerImpl.java @@ -2,8 +2,9 @@ package ufrn.imd.controller.impl; import lombok.extern.java.Log; import ufrn.imd.controller.Controller; -import ufrn.imd.domain.Client; import ufrn.imd.service.impl.WithdrawalServiceImpl; +import ufrn.imd.utils.ServerResponse; +import ufrn.imd.utils.message.WithdrawalMessage; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; @@ -11,65 +12,38 @@ import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; -import java.util.ArrayDeque; import java.util.Optional; -import java.util.Queue; import static ufrn.imd.utils.NameSpace.HOST_WITHDRAWAL_SERVICE; import static ufrn.imd.utils.NameSpace.PORT_WITHDRAWAL_SERVICE; @Log public class WithdrawalControllerImpl extends UnicastRemoteObject implements Controller { - private volatile Queue<Client> clients = new ArrayDeque<>(); + private final WithdrawalServiceImpl service; public WithdrawalControllerImpl(WithdrawalServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); log.info("Starting Withdrawal service!"); - new Notify(service).start(); + this.service = service; log.info(String.format("Initializing server in %s", HOST_WITHDRAWAL_SERVICE)); LocateRegistry.createRegistry(PORT_WITHDRAWAL_SERVICE); Naming.bind(HOST_WITHDRAWAL_SERVICE, this); } @Override - public void registerClient(Client client) throws RemoteException { - clients.add(client); - log.info("new client registred"); - log.info(String.format("total users: %d", clients.size())); - } - - private class Notify extends Thread { - private final WithdrawalServiceImpl service; - - public Notify(WithdrawalServiceImpl service) { - super(); - this.service = service; - } - - public void run() { - for(;;) { - if(clients.size() > 0) { - log.info("notyfing the clients!"); - int i = 0; - clients.stream().forEach(client -> { - try { - log.info(String.format("Clients waiting %d", clients.size())); - this.service.withdraw(50.00, Optional.of(client)); - } catch (RemoteException | RuntimeException e) { - e.printStackTrace(); - } finally { - clients.remove(); - log.info(String.format("Clients waiting %d", clients.size())); - } - }); - - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } + public ServerResponse getResponse(Object client) throws RemoteException { + WithdrawalMessage withdrawalMessage = (WithdrawalMessage) client; + ServerResponse response; + try { + response = this.service.withdraw(withdrawalMessage.getValue(), Optional.of(withdrawalMessage.getClient())); + } catch (RuntimeException e) { + e.printStackTrace(); + response = ServerResponse.builder() + .status(500) + .message(e.getMessage()) + .body(withdrawalMessage.getClient()) + .build(); } + return response; } } diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java index 469601d1bb75fb17afbd2fe1c3d9a98dcd3afb2e..95e9373b04f05a6a480bb1db696ea8dba9a12c6f 100644 --- a/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java +++ b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java @@ -6,6 +6,7 @@ import ufrn.imd.domain.Account; import ufrn.imd.domain.Client; import ufrn.imd.repository.Repository; import ufrn.imd.service.Service; +import ufrn.imd.utils.ServerResponse; import java.rmi.RemoteException; import java.util.Optional; @@ -17,7 +18,7 @@ public class BalanceServiceImpl implements Service { private final Repository<Client> clientRepository; - public void balance(Optional<Client> clientOptional) throws RemoteException { + public ServerResponse balance(Optional<Client> clientOptional) throws RemoteException { Client user = clientOptional .orElseThrow(() -> new RuntimeException("NULL USER")); Client client = clientRepository.find(user.getId()) @@ -25,5 +26,10 @@ public class BalanceServiceImpl implements Service { Account account = client.getAccount(); log.info(String.format("Account Balance: R$ %f", account.getBalance())); + return ServerResponse.builder() + .status(200) + .message("Operation sucessed!") + .body(account) + .build(); } } diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java index e7a86534678ccca34c0e0082c9bb92b2bfff00b5..83c894a8ff303a41d301feb7e19532417f07f66c 100644 --- a/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java +++ b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java @@ -6,6 +6,7 @@ import ufrn.imd.domain.Account; import ufrn.imd.domain.Client; import ufrn.imd.repository.Repository; import ufrn.imd.service.Service; +import ufrn.imd.utils.ServerResponse; import java.rmi.RemoteException; import java.util.Optional; @@ -17,7 +18,7 @@ public class DepositServiceImpl implements Service { private final Repository<Client> repository; - public void deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException { + public ServerResponse deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException { Client user = clientOptional .orElseThrow(() -> new RuntimeException("Null User!")); Client client = repository.find(user.getId()) @@ -26,6 +27,11 @@ public class DepositServiceImpl implements Service { account.setBalance(account.getBalance() + value); log.info(String.format("Deposit concluded!")); log.info(String.format("Total: %.2f", account.getBalance())); + return ServerResponse.builder() + .status(200) + .message("Operaiton sucessed!") + .body(account) + .build(); } } diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/WithdrawalServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/WithdrawalServiceImpl.java index a22397cda066cdef5c7f656c3218073c736ce7c1..ff9ae1421d11a609a0c6775844a94718af290e62 100644 --- a/banking-server/src/main/java/ufrn/imd/service/impl/WithdrawalServiceImpl.java +++ b/banking-server/src/main/java/ufrn/imd/service/impl/WithdrawalServiceImpl.java @@ -6,6 +6,7 @@ import ufrn.imd.domain.Account; import ufrn.imd.domain.Client; import ufrn.imd.repository.Repository; import ufrn.imd.service.Service; +import ufrn.imd.utils.ServerResponse; import java.rmi.RemoteException; import java.util.Optional; @@ -16,7 +17,7 @@ public class WithdrawalServiceImpl implements Service { private final Repository<Client> clientRepository; - public void withdraw(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException { + public ServerResponse withdraw(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException { Client user = clientOptional .orElseThrow(() -> new RuntimeException("Null user!")); Client client = clientRepository.find(user.getId()) @@ -28,5 +29,10 @@ public class WithdrawalServiceImpl implements Service { account.setBalance(account.getBalance() - value); log.info("Withdrawal concluded!"); log.info(String.format("Account balance: R$ %.2f", account.getBalance())); + return ServerResponse.builder() + .status(200) + .message("Operation sucessed!") + .body(account) + .build(); } } diff --git a/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java b/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..4c1115b4648ee5503d0ebdb68cc5982e97f96794 --- /dev/null +++ b/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java @@ -0,0 +1,20 @@ +package ufrn.imd.utils; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@NoArgsConstructor +@AllArgsConstructor +@Data +@Builder +public class ServerResponse implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer status; + private String message; + private Object body; +} diff --git a/banking-server/src/main/java/ufrn/imd/utils/message/DepositMessage.java b/banking-server/src/main/java/ufrn/imd/utils/message/DepositMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..2badcd3f628f1fceaf86549d8fe1b286b4738665 --- /dev/null +++ b/banking-server/src/main/java/ufrn/imd/utils/message/DepositMessage.java @@ -0,0 +1,16 @@ +package ufrn.imd.utils.message; + +import lombok.AllArgsConstructor; +import lombok.Data; +import ufrn.imd.domain.Client; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class DepositMessage implements Serializable { + private static final long serialVersionUID = 2L; + + private Client client; + private Double value; +} diff --git a/banking-server/src/main/java/ufrn/imd/utils/message/WithdrawalMessage.java b/banking-server/src/main/java/ufrn/imd/utils/message/WithdrawalMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..6b72920199f7eb060ba5f976cf2afc4c647d049e --- /dev/null +++ b/banking-server/src/main/java/ufrn/imd/utils/message/WithdrawalMessage.java @@ -0,0 +1,16 @@ +package ufrn.imd.utils.message; + +import lombok.AllArgsConstructor; +import lombok.Data; +import ufrn.imd.domain.Client; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class WithdrawalMessage implements Serializable { + private static final long serialVersionUID = 2L; + + private Client client; + private Double value; +} \ No newline at end of file diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class index 9507e12c0cbcbee3b1aa0bd24708c3ec90f1bb53..84bf69c80fd2cd8f90878db02bd5836285daeaba 100644 Binary files a/banking-server/target/classes/ufrn/imd/BankingServerApp.class and b/banking-server/target/classes/ufrn/imd/BankingServerApp.class differ diff --git a/banking-server/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class index f430dd8e588b7787d3b1e57839844a0ca969b2ba..d963fb57c51b2717ad5df0b7a9c8b917478a9e46 100644 Binary files a/banking-server/target/classes/ufrn/imd/controller/Controller.class and b/banking-server/target/classes/ufrn/imd/controller/Controller.class differ diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class deleted file mode 100644 index 6f1fd296957eb44ef8553d3843aed5dde42adc51..0000000000000000000000000000000000000000 Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class and /dev/null differ diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class index 9f55bf8b7d1a386ab7716d59ba2a4476c94238ce..e990c821bbca67e3753e9d7b7726bf02f8827d69 100644 Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class and b/banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl.class differ diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class deleted file mode 100644 index b8477ef07534ba6cd062501ed1b04324a2d61879..0000000000000000000000000000000000000000 Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class and /dev/null differ diff --git a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class index 47a33bc2bcf84a94279a49f43193a5456f898b72..78b16605a3148faa5588123ef88a11f98ff3a3ce 100644 Binary files a/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class and b/banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl.class differ diff --git a/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class b/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class index b4fa9209a9ee6e21b9c3435e2894b0809385ba08..57779ee31278c81ffb0caab53459b83b0f814be4 100644 Binary files a/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class and b/banking-server/target/classes/ufrn/imd/service/impl/BalanceServiceImpl.class differ diff --git a/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class b/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class index cf644482cf2f5b0e07d532cd3dfeb33d543e52c6..7663a247d03d86603195f6987564d6775fa06d0b 100644 Binary files a/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class and b/banking-server/target/classes/ufrn/imd/service/impl/DepositServiceImpl.class differ