From 3191c5d61ad717b1e95af2ec758372af587e5d9d Mon Sep 17 00:00:00 2001 From: Fernando Ferreira de Lima Filho Date: Tue, 19 Apr 2022 12:57:37 -0300 Subject: [PATCH 1/3] initial commit --- .gitignore | 4 +- banking-client/banking-client.iml | 11 - banking-client/pom.xml | 23 + .../main/java/ufrn/imd/BankingClientApp.java | 30 ++ .../java}/ufrn/imd/controller/Controller.java | 2 +- .../java}/ufrn/imd/domain/Account.java | 0 .../src/main/java/ufrn/imd/domain/Client.java | 17 + .../java/ufrn/imd/utils/MachineState.java | 101 ++++ .../java/ufrn/imd/utils}/NameSpace.java | 2 +- .../src/ufrn/imd/BankingClientApp.java | 27 - .../impl/DepositControllerImpl.java | 67 --- .../src/ufrn/imd/domain/Client.java | 23 - banking-client/src/ufrn/imd/log/Log.java | 10 - .../src/ufrn/imd/service/BalanceService.java | 11 - .../src/ufrn/imd/service/DepositService.java | 13 - .../src/ufrn/imd/service/WidthawService.java | 12 - .../imd/service/impl/DepositServiceImpl.java | 25 - banking-server/.idea/dbnavigator.xml | 461 ++++++++++++++++++ banking-server/.idea/misc.xml | 2 +- .../.idea/uiDesigner.xml | 0 banking-server/pom.xml | 4 +- .../main/java/ufrn/imd/BankingServerApp.java | 7 +- .../impl/BalanceControllerImpl.java | 33 +- .../impl/DepositControllerImpl.java | 34 +- .../java/ufrn/imd/repository/Repository.java | 3 +- .../imd/repository/impl/ClientRepository.java | 11 +- .../java/ufrn/imd/service/BalanceService.java | 12 - .../java/ufrn/imd/service/DepositService.java | 13 - .../main/java/ufrn/imd/service/Service.java | 5 + .../java/ufrn/imd/service/WidthawService.java | 12 - .../imd/service/impl/BalanceServiceImpl.java | 19 +- .../imd/service/impl/DepositServiceImpl.java | 27 +- .../classes/ufrn/imd/BankingServerApp.class | Bin 1114 -> 1259 bytes .../ufrn/imd/controller/Controller.class | Bin 252 -> 252 bytes .../impl/BalanceControllerImpl$Notify.class | Bin 2082 -> 2838 bytes .../impl/BalanceControllerImpl.class | Bin 2358 -> 2389 bytes .../impl/DepositControllerImpl$Notify.class | Bin 2181 -> 2927 bytes .../impl/DepositControllerImpl.class | Bin 2358 -> 2389 bytes .../classes/ufrn/imd/domain/Account.class | Bin 2901 -> 2901 bytes .../classes/ufrn/imd/domain/Client.class | Bin 2918 -> 2918 bytes .../ufrn/imd/repository/Repository.class | Bin 349 -> 373 bytes .../repository/impl/ClientRepository.class | Bin 2131 -> 1693 bytes .../ufrn/imd/service/BalanceService.class | Bin 319 -> 0 bytes .../ufrn/imd/service/DepositService.class | Bin 389 -> 0 bytes .../ufrn/imd/service/WidthawService.class | Bin 269 -> 0 bytes .../imd/service/impl/BalanceServiceImpl.class | Bin 2117 -> 2841 bytes .../imd/service/impl/DepositServiceImpl.class | Bin 2300 -> 3115 bytes .../classes/ufrn/imd/utils/NameSpace.class | Bin 849 -> 849 bytes 48 files changed, 712 insertions(+), 309 deletions(-) delete mode 100644 banking-client/banking-client.iml create mode 100644 banking-client/pom.xml create mode 100644 banking-client/src/main/java/ufrn/imd/BankingClientApp.java rename banking-client/src/{ => main/java}/ufrn/imd/controller/Controller.java (86%) rename banking-client/src/{ => main/java}/ufrn/imd/domain/Account.java (100%) create mode 100644 banking-client/src/main/java/ufrn/imd/domain/Client.java create mode 100644 banking-client/src/main/java/ufrn/imd/utils/MachineState.java rename banking-client/src/{ufrn/imd/nameSpace => main/java/ufrn/imd/utils}/NameSpace.java (88%) delete mode 100644 banking-client/src/ufrn/imd/BankingClientApp.java delete mode 100644 banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java delete mode 100644 banking-client/src/ufrn/imd/domain/Client.java delete mode 100644 banking-client/src/ufrn/imd/log/Log.java delete mode 100644 banking-client/src/ufrn/imd/service/BalanceService.java delete mode 100644 banking-client/src/ufrn/imd/service/DepositService.java delete mode 100644 banking-client/src/ufrn/imd/service/WidthawService.java delete mode 100644 banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java create mode 100644 banking-server/.idea/dbnavigator.xml rename {banking-client => banking-server}/.idea/uiDesigner.xml (100%) delete mode 100644 banking-server/src/main/java/ufrn/imd/service/BalanceService.java delete mode 100644 banking-server/src/main/java/ufrn/imd/service/DepositService.java create mode 100644 banking-server/src/main/java/ufrn/imd/service/Service.java delete mode 100644 banking-server/src/main/java/ufrn/imd/service/WidthawService.java delete mode 100644 banking-server/target/classes/ufrn/imd/service/BalanceService.class delete mode 100644 banking-server/target/classes/ufrn/imd/service/DepositService.class delete mode 100644 banking-server/target/classes/ufrn/imd/service/WidthawService.class diff --git a/.gitignore b/.gitignore index 8bad563..5367715 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -/banking-server/target/ +banking-server/target/ +banking-client/target/ +banking-client/.idea/ diff --git a/banking-client/banking-client.iml b/banking-client/banking-client.iml deleted file mode 100644 index c90834f..0000000 --- a/banking-client/banking-client.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/banking-client/pom.xml b/banking-client/pom.xml new file mode 100644 index 0000000..2f45cf6 --- /dev/null +++ b/banking-client/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + org.example + banking-client + 1.0-SNAPSHOT + + + 11 + 11 + + + + org.projectlombok + lombok + 1.18.24 + provided + + + \ No newline at end of file diff --git a/banking-client/src/main/java/ufrn/imd/BankingClientApp.java b/banking-client/src/main/java/ufrn/imd/BankingClientApp.java new file mode 100644 index 0000000..bf72420 --- /dev/null +++ b/banking-client/src/main/java/ufrn/imd/BankingClientApp.java @@ -0,0 +1,30 @@ +package ufrn.imd; + +import lombok.extern.java.Log; +import ufrn.imd.controller.Controller; +import ufrn.imd.domain.Account; +import ufrn.imd.domain.Client; +import ufrn.imd.utils.MachineState; + +import java.net.MalformedURLException; +import java.rmi.Naming; +import java.rmi.NotBoundException; +import java.rmi.RemoteException; + +import static ufrn.imd.utils.MachineState.*; +import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE; + +@Log +public class BankingClientApp { + public static void main(String[] args) throws MalformedURLException, NotBoundException, RemoteException { + + MachineState mS = new MachineState(); + + while(mS.quit()) { + mS.render(); + mS.processEvents(); + mS.update(); + } + + } +} diff --git a/banking-client/src/ufrn/imd/controller/Controller.java b/banking-client/src/main/java/ufrn/imd/controller/Controller.java similarity index 86% rename from banking-client/src/ufrn/imd/controller/Controller.java rename to banking-client/src/main/java/ufrn/imd/controller/Controller.java index ebdc052..580d6e5 100644 --- a/banking-client/src/ufrn/imd/controller/Controller.java +++ b/banking-client/src/main/java/ufrn/imd/controller/Controller.java @@ -1,6 +1,6 @@ package ufrn.imd.controller; -import ufrn.imd.message.Client; +import ufrn.imd.domain.Client; import java.rmi.Remote; import java.rmi.RemoteException; diff --git a/banking-client/src/ufrn/imd/domain/Account.java b/banking-client/src/main/java/ufrn/imd/domain/Account.java similarity index 100% rename from banking-client/src/ufrn/imd/domain/Account.java rename to banking-client/src/main/java/ufrn/imd/domain/Account.java diff --git a/banking-client/src/main/java/ufrn/imd/domain/Client.java b/banking-client/src/main/java/ufrn/imd/domain/Client.java new file mode 100644 index 0000000..b5c241b --- /dev/null +++ b/banking-client/src/main/java/ufrn/imd/domain/Client.java @@ -0,0 +1,17 @@ +package ufrn.imd.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import ufrn.imd.domain.Account; + +import java.io.Serializable; +import java.util.Optional; + +@Data +@AllArgsConstructor +public class Client implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer id; + +} diff --git a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java new file mode 100644 index 0000000..b7a227b --- /dev/null +++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java @@ -0,0 +1,101 @@ +package ufrn.imd.utils; + +import lombok.Data; +import ufrn.imd.controller.Controller; +import ufrn.imd.domain.Client; + +import java.net.MalformedURLException; +import java.rmi.Naming; +import java.rmi.NotBoundException; +import java.rmi.RemoteException; +import java.util.Scanner; + +import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE; + +@Data +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 HELP = "HELP"; + public static final String INVALID_INPUT = "INVALID_INPUT"; + public static final String QUIT = "QUIT"; + + private String state; + private Scanner sc; + private String inputValue; + + public MachineState() { + state = INITIAL; + inputValue = new String(); + sc = new Scanner(System.in); + } + + public Boolean quit() { + return !state.equals(QUIT); + } + + public void update() { + if(state.equals(INITIAL)) { + state = HELP; + } else if(state.equals(HELP)) { + state = READ; + } else if(state.equals(READ)) { + state = inputValue; + } else if(state.equals(INVALID_INPUT)) { + state = HELP; + } else if(state.equals(DEPOSIT)) { + state = HELP; + } + } + + 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(DEPOSIT) && !inputValue.equals(BALANCE)){ + inputValue = INVALID_INPUT; + } + } else if(state.equals(DEPOSIT)) { + double v = sc.nextDouble(); + System.out.println(String.format(">>> input value: %.2f", v)); + Client client = new Client(1); + Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE); + server.registerClient(client); + } + } + + public void render() { + try { + if(state.equals(INITIAL)) { + System.out.println(">>> Initializing..."); + Thread.sleep(1000); + } else if(state.equals(HELP)) { + System.out.println("These are the avaliable operations"); + System.out.println("---------------------------------"); + System.out.println(" - deposit \t - balance"); + System.out.println(" - quit"); + + System.out.println("---------------------------------"); + Thread.sleep(1000); + } else if(state.equals(READ)) { + System.out.println(">>> Please enter with wich operation do you want"); + } else if(state.equals(INVALID_INPUT)) { + System.out.println(">>> Please enter with a VALID operation"); + Thread.sleep(3000); + } else if(state.equals(DEPOSIT)) { + System.out.println(">>> Starting deposit operation"); + System.out.println(">>> Please enter with the value that you want deposit"); + } + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/banking-client/src/ufrn/imd/nameSpace/NameSpace.java b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java similarity index 88% rename from banking-client/src/ufrn/imd/nameSpace/NameSpace.java rename to banking-client/src/main/java/ufrn/imd/utils/NameSpace.java index b30b2d1..c379354 100644 --- a/banking-client/src/ufrn/imd/nameSpace/NameSpace.java +++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java @@ -1,4 +1,4 @@ -package ufrn.imd.nameSpace; +package ufrn.imd.utils; public class NameSpace { public static final Integer PORT_DEPOSIT_SERVICE = 1907; diff --git a/banking-client/src/ufrn/imd/BankingClientApp.java b/banking-client/src/ufrn/imd/BankingClientApp.java deleted file mode 100644 index 72fe820..0000000 --- a/banking-client/src/ufrn/imd/BankingClientApp.java +++ /dev/null @@ -1,27 +0,0 @@ -package ufrn.imd; - -import ufrn.imd.controller.Controller; -import ufrn.imd.domain.Account; -import ufrn.imd.log.Log; -import ufrn.imd.message.Client; - -import java.net.MalformedURLException; -import java.rmi.Naming; -import java.rmi.NotBoundException; -import java.rmi.RemoteException; - -import static ufrn.imd.nameSpace.NameSpace.HOST_DEPOSIT_SERVICE; - -public class BankingClientApp { - public static void main(String[] args) throws MalformedURLException, NotBoundException, RemoteException { - final Integer PORT = 1097; - Log.info(BankingClientApp.class, - String.format("connecting with server in host %s", HOST_DEPOSIT_SERVICE) - ); - Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE); - - Client client = new Client(new Account(1, "222", 10.00)); - Log.info(BankingClientApp.class, "registring user in the server"); - server.registerClient(client); - } -} diff --git a/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java b/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java deleted file mode 100644 index a70dcb0..0000000 --- a/banking-client/src/ufrn/imd/controller/impl/DepositControllerImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -package ufrn.imd.controller.impl; - -import ufrn.imd.controller.Controller; -import ufrn.imd.log.Log; -import ufrn.imd.message.Client; -import ufrn.imd.service.DepositService; - -import java.rmi.RemoteException; -import java.rmi.server.UnicastRemoteObject; -import java.util.ArrayList; -import java.util.List; - -public class DepositControllerImpl extends UnicastRemoteObject implements Controller { - - private volatile List clients = new ArrayList<>(); - - public DepositControllerImpl(DepositService service) throws RemoteException{ - super(); - Log.info(DepositControllerImpl.class, "Starting Deposit service!"); - new Notify(service).start(); - } - public void registerClient(Client client) throws RemoteException { - - clients.add(client); - System.out.println("Novo cliente registrado com sucesso! Total: "+clients.size()); - } - - - private class Notify extends Thread{ - - private final DepositService service; - - public Notify(DepositService service) { - super(); - this.service = service; - } - public void run() { - - for(;;) { - - if(clients.size() > 0) { - - System.out.println("Notificando clientes"); - - int i = 0; - for (Client client : clients) { - - try { - this.service.deposit(client.getBalance(), client.getAccount()); - } catch (RemoteException e) { - e.printStackTrace(); - } - } - - - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - } - - } - } -} diff --git a/banking-client/src/ufrn/imd/domain/Client.java b/banking-client/src/ufrn/imd/domain/Client.java deleted file mode 100644 index d1ca070..0000000 --- a/banking-client/src/ufrn/imd/domain/Client.java +++ /dev/null @@ -1,23 +0,0 @@ -package ufrn.imd.domain; - -import ufrn.imd.domain.Account; - -import java.io.Serializable; -import java.util.Optional; - -public class Client implements Serializable { - private static final long serialVersionUID = 1L; - - private Account account; - - public Client(Account account) { - this.account = account; - } - - public Double getBalance() { - return account.getBalance(); - } - public Optional getAccount() { - return Optional.of(account); - } -} diff --git a/banking-client/src/ufrn/imd/log/Log.java b/banking-client/src/ufrn/imd/log/Log.java deleted file mode 100644 index c193705..0000000 --- a/banking-client/src/ufrn/imd/log/Log.java +++ /dev/null @@ -1,10 +0,0 @@ -package ufrn.imd.log; - -public class Log { - - public static void info(Class path, String text) { - System.out.println( - String.format("[LOG] %s - %s", path , text) - ); - } -} diff --git a/banking-client/src/ufrn/imd/service/BalanceService.java b/banking-client/src/ufrn/imd/service/BalanceService.java deleted file mode 100644 index 2d9315c..0000000 --- a/banking-client/src/ufrn/imd/service/BalanceService.java +++ /dev/null @@ -1,11 +0,0 @@ -package ufrn.imd.service; - -import ufrn.imd.domain.Account; - -import java.rmi.Remote; -import java.rmi.RemoteException; - -public interface BalanceService extends Remote { - - public void balance(Account account) throws RemoteException; -} diff --git a/banking-client/src/ufrn/imd/service/DepositService.java b/banking-client/src/ufrn/imd/service/DepositService.java deleted file mode 100644 index f85f98f..0000000 --- a/banking-client/src/ufrn/imd/service/DepositService.java +++ /dev/null @@ -1,13 +0,0 @@ -package ufrn.imd.service; - -import ufrn.imd.domain.Account; - -import java.rmi.Remote; -import java.rmi.RemoteException; -import java.util.Optional; - -public interface DepositService extends Remote { - - public void deposit(Double value, Optional account) throws RemoteException; - -} diff --git a/banking-client/src/ufrn/imd/service/WidthawService.java b/banking-client/src/ufrn/imd/service/WidthawService.java deleted file mode 100644 index 8a5ed3b..0000000 --- a/banking-client/src/ufrn/imd/service/WidthawService.java +++ /dev/null @@ -1,12 +0,0 @@ -package ufrn.imd.service; - -import ufrn.imd.domain.Account; - -import java.rmi.Remote; -import java.rmi.RemoteException; - -public interface WidthawService extends Remote { - - public void widthaw(Double value, Account account) throws RemoteException; - -} diff --git a/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java b/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java deleted file mode 100644 index 7dfa731..0000000 --- a/banking-client/src/ufrn/imd/service/impl/DepositServiceImpl.java +++ /dev/null @@ -1,25 +0,0 @@ -package ufrn.imd.service.impl; - -import ufrn.imd.domain.Account; -import ufrn.imd.log.Log; -import ufrn.imd.service.DepositService; - -import java.rmi.RemoteException; -import java.util.Optional; - -public class DepositServiceImpl implements DepositService { - - public DepositServiceImpl() { - super(); - } - - public void deposit(Double value, Optional acOp) throws RemoteException, RuntimeException { - Account account = acOp.orElseThrow(() -> new RuntimeException("Null User!")); - if(account.getBalance() < value) - throw new RuntimeException("There's no money!"); - account.setBalance(account.getBalance() - value); - Log.info(DepositServiceImpl.class, "deposit"); - - } - -} diff --git a/banking-server/.idea/dbnavigator.xml b/banking-server/.idea/dbnavigator.xml new file mode 100644 index 0000000..4c97bdf --- /dev/null +++ b/banking-server/.idea/dbnavigator.xml @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/banking-server/.idea/misc.xml b/banking-server/.idea/misc.xml index 82dbec8..accd629 100644 --- a/banking-server/.idea/misc.xml +++ b/banking-server/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/banking-client/.idea/uiDesigner.xml b/banking-server/.idea/uiDesigner.xml similarity index 100% rename from banking-client/.idea/uiDesigner.xml rename to banking-server/.idea/uiDesigner.xml diff --git a/banking-server/pom.xml b/banking-server/pom.xml index 24fae72..f428c68 100644 --- a/banking-server/pom.xml +++ b/banking-server/pom.xml @@ -9,8 +9,8 @@ 1.0-SNAPSHOT - 17 - 17 + 11 + 11 diff --git a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java index 4fed739..7acd207 100644 --- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java +++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java @@ -3,8 +3,7 @@ package ufrn.imd; import ufrn.imd.controller.Controller; import ufrn.imd.controller.impl.BalanceControllerImpl; import ufrn.imd.controller.impl.DepositControllerImpl; -import ufrn.imd.service.BalanceService; -import ufrn.imd.service.DepositService; +import ufrn.imd.repository.impl.ClientRepository; import ufrn.imd.service.impl.BalanceServiceImpl; import ufrn.imd.service.impl.DepositServiceImpl; @@ -15,8 +14,8 @@ import java.rmi.RemoteException; public class BankingServerApp { public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException { - DepositService depositService = new DepositServiceImpl(); - BalanceService balanceService = new BalanceServiceImpl(); + DepositServiceImpl depositService = new DepositServiceImpl(new ClientRepository()); + BalanceServiceImpl balanceService = new BalanceServiceImpl(new ClientRepository()); Controller depositController = new DepositControllerImpl(depositService); Controller balanceController = new BalanceControllerImpl(balanceService); 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 a856ad8..0c51991 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 @@ -2,7 +2,7 @@ package ufrn.imd.controller.impl; import ufrn.imd.controller.Controller; import ufrn.imd.domain.Client; -import ufrn.imd.service.BalanceService; +import ufrn.imd.service.impl.BalanceServiceImpl; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; @@ -10,9 +10,7 @@ import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE; import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE; @@ -20,9 +18,9 @@ import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE; @lombok.extern.java.Log public class BalanceControllerImpl extends UnicastRemoteObject implements Controller { - private volatile List clients = new ArrayList<>(); + private volatile Queue clients = new ArrayDeque<>(); - public BalanceControllerImpl(BalanceService service) throws RemoteException, MalformedURLException, AlreadyBoundException { + public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); LocateRegistry.createRegistry(PORT_BALANCE_SERVICE); @@ -46,9 +44,9 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro private class Notify extends Thread{ - private final BalanceService service; + private final BalanceServiceImpl service; - public Notify(BalanceService service) { + public Notify(BalanceServiceImpl service) { super(); this.service = service; } @@ -59,29 +57,24 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro log.info("notyfing the clients!"); int i = 0; - for (Client client : clients) { - + clients.stream().forEach(client -> { try { - this.service.balance(Optional.of(client.getAccount())); + 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(); } - } else { - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - log.info("No there's clients!"); } - } } 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 958ac87..d9b3df5 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 @@ -3,7 +3,7 @@ package ufrn.imd.controller.impl; import lombok.extern.java.Log; import ufrn.imd.controller.Controller; import ufrn.imd.domain.Client; -import ufrn.imd.service.DepositService; +import ufrn.imd.service.impl.DepositServiceImpl; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; @@ -11,9 +11,7 @@ import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE; import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE; @@ -21,8 +19,8 @@ import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE; @Log public class DepositControllerImpl extends UnicastRemoteObject implements Controller { - private volatile List clients = new ArrayList<>(); - public DepositControllerImpl(DepositService service) throws RemoteException, MalformedURLException, AlreadyBoundException { + private volatile Queue clients = new ArrayDeque<>(); + public DepositControllerImpl(DepositServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); log.info("Starting Deposit service!"); @@ -46,9 +44,9 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro private class Notify extends Thread{ - private final DepositService service; + private final DepositServiceImpl service; - public Notify(DepositService service) { + public Notify(DepositServiceImpl service) { super(); this.service = service; } @@ -60,31 +58,23 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro log.info("notyfing the clients!"); int i = 0; - for (Client client : clients) { - + clients.stream().forEach(client -> { try { - this.service.deposit(200.00, Optional.of(client.getAccount())); + 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(); } - } else { - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - log.info("No there's clients!"); - - } - } } diff --git a/banking-server/src/main/java/ufrn/imd/repository/Repository.java b/banking-server/src/main/java/ufrn/imd/repository/Repository.java index 636bf2b..589bec3 100644 --- a/banking-server/src/main/java/ufrn/imd/repository/Repository.java +++ b/banking-server/src/main/java/ufrn/imd/repository/Repository.java @@ -1,9 +1,10 @@ package ufrn.imd.repository; import java.util.List; +import java.util.Optional; public interface Repository { - public T find(Integer id); + public Optional find(Integer id); public List findAll(); } diff --git a/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java index bce53da..83963f7 100644 --- a/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java +++ b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java @@ -1,20 +1,21 @@ package ufrn.imd.repository.impl; +import ufrn.imd.domain.Account; import ufrn.imd.domain.Client; import ufrn.imd.repository.Repository; import java.util.List; +import java.util.Optional; public class ClientRepository implements Repository { List clients = List.of( - new Client(), - new Client() - + new Client(1, "Fernando Feirreira", new Account(1, "321456789", 200.00)), + new Client(2, "Maria Eduarda", new Account(2, "987654321", 100.00)) ); @Override - public Client find(Integer id) { - return (Client) clients.stream().filter(c -> c.getId().equals(id)); + public Optional find(Integer id) { + return Optional.of(clients.get(id)); } @Override diff --git a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java b/banking-server/src/main/java/ufrn/imd/service/BalanceService.java deleted file mode 100644 index b82470c..0000000 --- a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java +++ /dev/null @@ -1,12 +0,0 @@ -package ufrn.imd.service; - -import ufrn.imd.domain.Account; - -import java.rmi.Remote; -import java.rmi.RemoteException; -import java.util.Optional; - -public interface BalanceService extends Remote { - - public void balance(Optional account) throws RemoteException; -} diff --git a/banking-server/src/main/java/ufrn/imd/service/DepositService.java b/banking-server/src/main/java/ufrn/imd/service/DepositService.java deleted file mode 100644 index aab39ac..0000000 --- a/banking-server/src/main/java/ufrn/imd/service/DepositService.java +++ /dev/null @@ -1,13 +0,0 @@ -package ufrn.imd.service; - -import ufrn.imd.domain.Account; - -import java.rmi.Remote; -import java.rmi.RemoteException; -import java.util.Optional; - -public interface DepositService extends Remote { - - public void deposit(Double value, Optional account) throws RemoteException, RuntimeException; - -} diff --git a/banking-server/src/main/java/ufrn/imd/service/Service.java b/banking-server/src/main/java/ufrn/imd/service/Service.java new file mode 100644 index 0000000..16fc5e1 --- /dev/null +++ b/banking-server/src/main/java/ufrn/imd/service/Service.java @@ -0,0 +1,5 @@ +package ufrn.imd.service; + +public interface Service { + +} diff --git a/banking-server/src/main/java/ufrn/imd/service/WidthawService.java b/banking-server/src/main/java/ufrn/imd/service/WidthawService.java deleted file mode 100644 index 8a5ed3b..0000000 --- a/banking-server/src/main/java/ufrn/imd/service/WidthawService.java +++ /dev/null @@ -1,12 +0,0 @@ -package ufrn.imd.service; - -import ufrn.imd.domain.Account; - -import java.rmi.Remote; -import java.rmi.RemoteException; - -public interface WidthawService extends Remote { - - public void widthaw(Double value, Account account) throws RemoteException; - -} 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 8ae835e..469601d 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 @@ -1,19 +1,28 @@ package ufrn.imd.service.impl; +import lombok.RequiredArgsConstructor; import lombok.extern.java.Log; import ufrn.imd.domain.Account; -import ufrn.imd.service.BalanceService; +import ufrn.imd.domain.Client; +import ufrn.imd.repository.Repository; +import ufrn.imd.service.Service; import java.rmi.RemoteException; import java.util.Optional; @Log -public class BalanceServiceImpl implements BalanceService { +@RequiredArgsConstructor +public class BalanceServiceImpl implements Service { - @Override - public void balance(Optional accOP) throws RemoteException { - Account account = accOP.orElseThrow(() -> new RuntimeException("Invalid account")); + private final Repository clientRepository; + + public void balance(Optional clientOptional) throws RemoteException { + Client user = clientOptional + .orElseThrow(() -> new RuntimeException("NULL USER")); + Client client = clientRepository.find(user.getId()) + .orElseThrow(() -> new RuntimeException("Invalid user!")); + Account account = client.getAccount(); log.info(String.format("Account Balance: R$ %f", account.getBalance())); } 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 a371112..e7a8653 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 @@ -1,24 +1,31 @@ package ufrn.imd.service.impl; +import lombok.RequiredArgsConstructor; import lombok.extern.java.Log; import ufrn.imd.domain.Account; -import ufrn.imd.service.DepositService; +import ufrn.imd.domain.Client; +import ufrn.imd.repository.Repository; +import ufrn.imd.service.Service; import java.rmi.RemoteException; import java.util.Optional; @Log -public class DepositServiceImpl implements DepositService { +@RequiredArgsConstructor +public class DepositServiceImpl implements Service { - public DepositServiceImpl() { - super(); - } - public void deposit(Double value, Optional acOp) throws RemoteException, RuntimeException { - Account account = acOp.orElseThrow(() -> new RuntimeException("Null User!")); - if(account.getBalance() < value) throw new RuntimeException("There's no money!"); - account.setBalance(account.getBalance() - value); - log.info("deposit"); + private final Repository repository; + + public void deposit(Double value, Optional clientOptional) throws RemoteException, RuntimeException { + Client user = clientOptional + .orElseThrow(() -> new RuntimeException("Null User!")); + Client client = repository.find(user.getId()) + .orElseThrow(() -> new RuntimeException("Invalid user!")); + Account account = client.getAccount(); + account.setBalance(account.getBalance() + value); + log.info(String.format("Deposit concluded!")); + log.info(String.format("Total: %.2f", account.getBalance())); } } diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class index e981c23cd377d28abc4078145c4d6009f4c2c7e6..e7bc89caf443850f74b54ca56cfedf3e1bb21797 100644 GIT binary patch delta 584 zcmZvY&uSA<6vlsdCdr*lW7?(~ja6%mZDx|zacZ?-MFqD}L9q~ArE!!gF)1+?TorfS z4&xK(6Sx{MAh`7r1fRf15X3W6FdOgUob!F>&v(xKVf`w0zW@3171(Cm<`iq1rpB=` zS+g;4H7%P$>f1IJ>zWN4n`;_Rb6rum6Ar`4U4`kmyYaF5WVAZbJ*T>(DDU+Ky#ottINwKisJM4L~$t&;i-hR-Z z#6OMY__tAySImana612!n`!L0yNV4bJ<6KJ=@~}?sZ)|~OP_(9%)HnIL7sReKHo}E zpR@F$*g{5@sYqNpDPW1yf{L7>Dnrud59G*;-<)D}rVE`#G-6e;gU!+MZo7=CcSksp0k3HiUu{#%Q|V@G8bfxCUaaAY)X$} WMWP&+rPdOr&K2oU7FUHZSp5s$S7!47 literal 1114 zcmaKsTTc@~6vzM578XjOH(EguL93RFT{S+5no!ilWWj_gN#oOYcc_DVX{KAEU%>C< zQxlu`0sK(LGuyJuHsC(Y?3~O0cg~#b{`vdsH-J}omPHC_4VfHfFw0OlH!n=xF}<$- zp>xiyfMNEf@I>&MAzj}-)iB3UADl@~7p|@Mxx5e-r}v(tzu`TD2pdjvMObXp%GCm-wUMgI9w(`hmm>AT0}v0QDmsqjVSrD#AJ2*s+IEpAd}Lj zAth84qrVOWidX`0?w;dNENTpsj#44FgU<_vj5c>H+acDVd#b{w*l4Bs-H zQ&S3co)|O17tv=}i`$!4+$Txb6dpsh{@IA9*$O0qsUq^5vP&Z6YupS=c4CSQTQTc~ ztE8k(Vvg4)ObYfhI(Jy0^!hs{XX@76}1J90P2-)%n(&F!gnpI_b z3Jrz87H-kkrJfX+`o3sgrISuOqkU#)2=+5{-=8j(g;ze*utuukN^Mx diff --git a/banking-server/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class index 4707c271c661d159f8019f881ffc3f31e61a85d3..f430dd8e588b7787d3b1e57839844a0ca969b2ba 100644 GIT binary patch delta 154 zcmeyv_=i#W)W2Q(7#JAL8Ti;4xY!xE*%^2yM%pRxGBR)l=a&{Gr@Ce4q%tz_JLl(> z6y@jSq!#IAC6*;l#!y0P*yTax?XVQgic5fJ!CML|iM9QwvHm^Yhpk85kLu ffS4I*AtMVT0}BHykjDn(u>fgyAm#wFnHV?$wzDFQ delta 170 zcmeyv_=l1A)W2Q(7#J9A8Ti;4m?jn~YO^!2Ffs^aC6*=X=OpH(>-#5Vr6!lKGq5o- z@PkE*ax?XVQgic5QYQ-ArE)VeNT3P3RwSnulw{`TF*0xk=a&{Gr@Ce4qyn`&=jW9a s<>%z27U_Ys08M0MU0%9H@n~8xJ02DSS`2YX_ 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 index 7f067992c8a00c6fd8c3203ad80e171f7a42fb6b..6f1fd296957eb44ef8553d3843aed5dde42adc51 100644 GIT binary patch literal 2838 zcmb7GU2_v<6n-{oyKTCX5DSH(Sg>FSND6{LQ~78qQb=2&wFp>ryLr7_7fnMb$QEiP*Up*cVlK4t zzGCHubW67lF&X%c(v(-w=FOYczJ3M$jVQyhJ=d`;;Wh;h*Uc-jgQjhIhZW3Z9yhq* z|1gL|}6Y~1n8(vkvg)V75? zZ0Xgip#4B&??)oq7v!N6H+pX6fbGqTa`hQv6L30gFyqH|^Z8WeVHN%e{JnecZB{J1feL zC!#yF8NQ=}4Gmt+DHJ3ootkTi6Q_32&%)Q-h9K4F-w|*4d7?R5IvN_wj*-5AhM@^W#?0Si%1Kd3v0NX@W8}?+Tsh zc0XP!9_vt41#5#YsClN9J5v)i!S+h}pc^J0m8yA-MP`$->*AI(S8pHRi-tKWl`C)+ zE;9tQS9!-&rd@Ja<4mN@Cq0+pepj}!q(U#t=G_s27Fct1TK`}qo6w~W<8k{tQ%Z(=$-*Ah9<1Exzr$3@B!vw(yI;q=5OH}&;&;0%3MJ!E$Q%e;Qb$|4i z!Ilq>jkZUad04lsNz)T~72hh@cAp@t@oAc$O$bBYoasIM)Bs{g%h3*`QgYbS5(ke0 zw(z=@PZRWrb4_M<-hz_-39;<1TZrHAL!ad}jTT<_pcQ-3ffuj_`_MgmzxNvx_Txny;x=(eSlbB({NhSt0Nu!ABL?X)N}mF~PSJWAhcV_u?PbgW zY3#%<0@_H(&to?;f?sL@{2cGQ=yi`7V=8+1lddB94_Z<&*{30$KhfrEWk~#MTYg6R ze7sJ8%$D)wv4C1?L_b7*gJN!-sbPGyDJy2yaC@K^|e@j*`YP zk{rSXjL>74KikJKixYLSmwd8&{R$cN3K^{4KIWBVI}rODGb%Q;&~-lzF)DY!Uk~Cr eu4!6&sK$1#U*KzeN!^aqt}(#~A)Ua>IQbucg8l~p literal 2082 zcmb7FT~iZh7(H(YY>3N80YR`;XrYD=3AQ4IfL0JnFa(7(R;ATtc>{}^-LSi{=tb}R z5A95+w_LZQDD6z!>)!U?Fw@erOGrY83(ZXS-F^1?IL~=L_OE|`{T;v*oO*;%qaduJ z7Igxn#hhcsjr@9Cw=K`HO;b92EST|W&D1Pi&XmPTN_*3`XXKs<)OnkR+dCpKl6p4} zi6|ndR}fWk2C6{wmiAPOGt@>rv*}1}oxUdx%kZuX)WrI;KHf$ZO=uQST&I2((m!9;=Y1P0dZq9WO}tfp2kD#VD>3h!u$2j(rD6me#hU z?j;m_#;E0ztlN3bu;McT<57%ZLPY|T0?`fW-PCovXfeQfdiuXf=_Q-$I&LWVT*XaH zpMbhl@C@71Oo5P{6NpvwQbJRm{INQdzlB)^b1J^TyuihBzM$j>3 zhy7Uv3&*8%@c~rOxlaW$u}YENYNaG9`lnONcuaD}Ugu0Tr3_1^ zi}^L_WPB_vb;{N?Gpjj<|6CG={p}<$R&o7SP)ge^!De=fmVluD(!8EhFsjuZ%_o_v zL^{#T)akAo#M7!m6=Cq76le%4zNi&SX+&4-qNB?>!%wv9)P+3kSCYe=maaE%yBrfW zX<5>lF*Vnf3~SJN`geYq5Z$grJ#sE~=-Th)7XvRL zUgEudbO`)}hri&1mYzL)R5MwA(J!z#w2#XIKVX12p9=hmu{7T|T;9X@8%*tECWKu? zC&HcKJ>1?s{JRb5H@LHl$l}l*vb%>r9t#>$zv15f!PmI|haYN{p>_|yBbaf2==jfK zmDy*ofjkO4Yw(yb(`e;2!9=Fe!41=i8?>0F{v54t@%=1TxF52VtWxp_3$(k) ziN2QU?GCna7tg8b({!Djr%8fDjzo^5i<+B3yf9@33G1YXEj%G*+a%bR3EI6V5o_}P z3ZnQ2eL}(TA^H$j5c2O8R)S~p0Cfil%`3F;#SM(XcW?e~9v z`UM!^OPiw%Tb#2o7_Ot4kvh(E!R9qaZN?anwi7lNc|FR$k>pLANv15`vT0yCTHa1F zV{ysm9WK}NF8L(yC3!z`XQPAWEUwth^Fj3HhZY|lwYaKC%#=fKVNKyo`o3EkFBO8o z4Icj0Iij$NCC~N4K(T*%sjyneRYR|oyIggv?y#aR?=AX;uv&2yJEN

u(dCddg_kDwfrQu`az7 zo7F|*r2aEDrrXp|OmS6zqsBY_<8usm&nn_U)UtkTTuBMfo{HO(pnJ_WOJN4yJy(Bi zcIw~E)7prS)I`{3nQKL>O!bjSJQ?<}NN$OBif?d&nD|}1DE>XMe!#dBOpMx%Hah929^E>(CBXlzzft#THHZ=kZbkhGi_@% delta 1219 zcmZ9LU0WMP6vzLwyV(iL6hgofX?QD8lhBfuYQ=`6Hnl2kN-JrhXsvF;f{V!pcQ;V# z3)K&xkIr4cg{UF5k9zODAHZ85FZ={Po{30{dogq7%sF#@^PjW7#hdZ|U;qB`X8?J8 zVL^k=VF*NEeq*F^=B(?vVSzzUr58D(48802rk!nsZZ&(+_wDVH8-x}(^bT}Fa2yfn zLN~*d?9r!QVBnRi>v&k$fDVMqG(rbui}&)f77ivx%8q6JT5Q>lOYm> zwjV|@A#do(0tb=B+BlT6mc4#&-Km5fNF&2BDR2^}sB&Y~_p)wnrG48VJ8##V@`hb; zSFS( zk*(na=wwIWlD$rzM=;3(u4MMWGEcyl_t5bJtX;(7eN7yFg5+{$at}jIj4I!_@e_7V zEbF^Sm0Osih+Vwc#7ql?CGurjcfvF`5NMICIgF!9 z5l8<;Kn)(P2nKa*5avf@M+w+Rh)r7G$F{=WA-BKJJ)QX;*5qSc(LnWM@f&TTSbTvv z2~+Jp#!ZG6miBp{;>8IJNReh~QYwQpn0y9j`T%Dd5Ag9mjzRO1PgI`}0BcJ)PP6(% qyt9dSTCl%EOch~J8mK6sk8bfP%^E&~!dJ&6@sKR5ZFS;vX#W7kuJU~V 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 index 9697b9b922e597e1104c36d785b29568877a9002..b8477ef07534ba6cd062501ed1b04324a2d61879 100644 GIT binary patch literal 2927 zcmb7GYjYD-7=AWsyKTCf63exM1q-I-l8PYEa4T(rLfQ(gMMRWsa?&o{?8egfrzw#LeurQ-D`qA+h_&c0&#t-6icDKn!IzTg%J!jwZUY_@P-*e9X{_pKy0PMkc zEm)8J32eXtIXl>bEDp8eF#6@}NHYc!7{rj298J+8*NPF0Hgd*a-}lmROvN(^Byp-4 zr&Ww6Fo9=R zcn1}nPcPTFrhh+(-IEF$2J8Y8OXdtqj8;lh!kN&gOiEHYJFlCQx?{-qP}m?-VrHYZ zXB6iZXv3BzoB>mJT|xPtTI>f(v@7sKuHsI`;xjEFDU9BkyQt6U8B@2WGsBiA9H&zD zL}BQ1UX(qX8Y-C6a0!UeoY8-ca$Te1A*D+Zx`%yDHw(@IF4!@F6}TjlTU7 zTr1dJ-B-(LoH|GoGmg-Sa>w#qaeIg4Dp(P8L&Y=9%&Cf~2)0?$2VE0!%eclB7Msn= z?u(oDbhV9qEefW|SSH6&IP?&ty~G+_8CKC|t<#ZqANL%Z``y{Z(h9vKo47jyEs$oY z$i-{|ALEn%`3TBG9|<0upK`d6t*Akw;|jr@`m;wtInWZx3(pNkY^k<5rF@WI+f{0`a`|KMDi9*klL z#8gey7#j1>Fx^xTvxzz#1yCQ&r)p81PSVxpzR%%KRtmwTq@X+MKg1Jhr>c9&c$33p zaE?T`FSeY|WQa<|XBs}oR~nweE(M!v#W1Wndsbv}{@KgJNH6Mn&vtl6w3cdbD!yTe zoNdomSmZyVxIzcPId)vP3Z`(o0?q8*%ts`3h7KG-1+NAG^Ny=XpZl%F0}B|=r$6-Ewska4s8JsUq$oCwwq|XdgnJf z?8VdA$1rgp))s<+|DMHa?8jOhpvEwDa+IDxA5P*Rzvd*=PTKS_jUC7k&|2o*%Y+oJ z^oQ_wa^6m@JJ^euiuL?1P?7ux4Q(;mr(rsOqRHpVkoZ?L{EXDucr^iLwtz>*7tqec zD2=ycIkkN~rxn8j5ZCD4`*=5E-dxU6MDjbh8_GH+=NM z@!oq!Z@lGNr=_4X>a{ceA!ZbxcN0i(xM(wzeRt2EbDnda^Ra*Z`|Ixj?&3uQLa5OY z)=`T(fm_9#YsbudHkNU0-*qfYx_m5Hu?bmlJkuXP7AGj}Njbim+ZL$v*G#WxNMI=W zb{^sp)T2Q|M8_HE0?q5jh7q$2do`9`bET1`?@`k>{V{=>Xz!wm_pFX4Gz(~+bT`b5 z6zHy?mSsorE|gT_4QN5DhBh7N&@M3ec2N>5W0}(SJw})eLM-~G6-%0)A3uW&=+Mxq z<09S_ID7K7K-e>1Fh)k7P*GgcaT#5FwwzUg&MI#dteQ+b$y2)Vdb}@i&UXCm9Hm|U zn(QhE(H%h#u4wpB$5liHE>s{-`XIPz=N!6;mT&@M7krlvKl;zBG5HSryI*12k?$aq zxs`R9@#7jkChBoXvQFMG?bvw0c-=jdoyuPXqqwVKOvfj zN_V21LI6`zV5<$|fsS!Z2t-z;e?OCPiZ)}t$e{j@UVcfVDLm9Lts{Y%6Iss{eABTF zOCaPBGg?h?Ik9RUkJQOy60;goI_B_L;PNr@>8;DWvZdJ*=&i;mXH`|IV~E~G4f98R z;pWZQyv#ekoZQODAm|95Ag$w5HE~S^c7wm*8=2>6*T~4)65V%xP?Nc&<0(EDsP!x< z3#?*vM*03i;8IZjfZl}77IBLOUuLTimXX%*6+675I8V0Ce03Plu%ZS(!&s|RL3wxv668J;J} zL0#!{fG#fSdbUxB>yDcmXl_=Ymp~#|?i>VG`820KK0KTH`d>lxy@u8|@CuDT2a0RF zwjj*w4I1A>1NX>T+=f~Q?KGqr*72ODx>GPAy0xH}oQrShTJ`dGeJ>$i;+=h*7x)Rr zFL{-jq^*P6E^P(v8UmS6#Fgpwd4HYj_a9sl z8U_#fy$EXvse6qZmFJTK)Eyu+tzr29;oxi_K#_(ahO-%*E!g52A&6>=ZG`><_!KgR 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 c429275f5abb1141d6e6335ce6730b9f9c18c9d7..47a33bc2bcf84a94279a49f43193a5456f898b72 100644 GIT binary patch delta 1167 zcma)+-BTM?7>A#;*<{1ANE<32{Y*$v2tq8a5=&|2qZSaU6{W@6+B98oX&Tb(hL-w4 z>y6i)Gu}8}c<+^{klNAlrZ*iOul#p9z8f;)IOB|aao*p)=gj*)=eOtVR^rdZ#?xm% z{Q?a0xy=DaEKb=Nj5N{7XgHjXbH?U%#w^Bd;!K3YWSp}WZ!~d^DVu3#LiMK2EN|J& zao*-_E;REF^Kssd^Ij+y!s&|^muwb!KP-9K;)4SgR}`_i)xcX?S2)w9l3ST5=6&Dw zAO4XZRak|h=avFrv3GVQzn0Hd1Fx99P<5;Bh@xrUTQ22;YQ6TZ0FPPuSO-oAu8oe`?`QOWh!#;br;Fbe# zwd7k|wfNBDn*J?z&5ZQ+E$EDun{nu2Sg~(+4`Y=|etputU3DE&bUPd&spy&y@|D0V zEhigX$p&o7BJXgWg1)SBc3AF)gUhgPG7e5D_S6d(^QGnN`RglgA+T6-Smq-O&tZj| z4n=NRlpIzmTikZ2Ah3Z$l{Jey4tH7Cb7sd8MQgAc>#n_84UQ5K-NOr_UzE&O#6-bNW*e1xjIp>)wy?uov-va5Vq}w+`5Mp3f=ybt*i&Qg#mx;`GBpz4)f@H7*ey2&K{9Ell`c92 zE-i354hvRN?oEn5S<$|OK!$#K6Bu4%KrjbI#|1dc%N&#UA&xh&D-GPXSV^E;g3^ds68H98u=yLbr!L%e7fH`>IFWAy$5XXtO7Ax`j01ILt@6{uI` zhoR~Y9+enAPU1}G7F{*=e@`@QqNE(c8BVv!E^-nLUgM<1uuNQB0K2X_IfU^S!bIvc delta 1202 zcmZ9KU3(Kn6vzLw+3cj-p~O^ZC~ZiZwlt}9p(s?+R%v;$5I`GfsUo_h+qyN`)ZI;? z_)_#9ePHhR7FJDzJnFsoegH1K@Ok_UKAs5?sCzMU=FEBd?SIZ6iAJL5_kVu=6~Gj} zF`*&Cp$kM|Jk&=D#-!`H;WR^JB)7m3W9VM9H*BjOx)tlR@7tS2HwaB|L^{w3!Ldi6 z3ws&Ht!+}z0`=RTtrq4L*wZIM2 zf#YwuWhY~z2T6_t0=+oMkd*g$QvRkNBHVuYmo~A-L>~?*@HE3!`Ba}BZkH%Mt5C=- zsE`4HEDVNdpgP4cBu68CSq?&txA-cyw`yIvwdRz=4&;#M7!`O8N94Kad1_+eD915@ zaU7TTqt{Ip^M=3)oRoh?k5IsyIK@#An8cJ!7(?WF3vY9r7MQ`TJZUVD=Pb@~oELZp zbMn41lj_7p6ge&lT*eiKuH8b(r$#Cg!+Y|(NYBw2N(_6$T4-0&brL5yl^$AF`PT#% zFvXw;?p;S=To+iv`_kZ9>UaYma@-X72p`KFKW-{HZwZvKEN}2B5^+Ti>)HN}lDq2J zVcmBa^8b6UNja@0qtgY3L78FQUAyI#7uoHtOtHS=dzM>Ww%YGz?T(^k^X#3nvmUxN zFW{iDNVa~~ue#Q}Q>}&0^J|VeL#lP_IiYpQuB_Djsi8J4~8huLZ0AjTELPwGi4$`~y(}bolfiz(aV2(}|irD`Q0abW(A{f-L zPMDvO9V1{LAvWlI2b&6ei`;&jdp!Rm%+bfVpn>|w6YsW&;)!|UBusVt7*`pZSZwpY zz)KJqaF{e3A*FIShWtx7TQ244$AMTN5wyaKk4eejeHt|dV diff --git a/banking-server/target/classes/ufrn/imd/domain/Account.class b/banking-server/target/classes/ufrn/imd/domain/Account.class index 2a7ef8cf0adf2d1042b8a7ee3f230660df58ffeb..06c1afe87e3de366a0157786e0a200a2309ba51b 100644 GIT binary patch literal 2901 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 BDS7|^ diff --git a/banking-server/target/classes/ufrn/imd/domain/Client.class b/banking-server/target/classes/ufrn/imd/domain/Client.class index 38d7a3658a88a4078ee7e0545a2e76bfe87708c6..e09b310a54921733a8906a5ffc2612b07666c2b6 100644 GIT binary patch literal 2918 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 S7Jr}POU`76xQA6#kogx=Mlm1& diff --git a/banking-server/target/classes/ufrn/imd/repository/Repository.class b/banking-server/target/classes/ufrn/imd/repository/Repository.class index edf96faf080b1cb13de2680e95de0075fff887fd..1a11f1ee8fe4d9f5937cf449985bd127fe02bb02 100644 GIT binary patch delta 158 zcmcc1^p#2K)W2Q(7#JAL8Ti>5c-a~F7#Ud7GV@Xx88j#QNz0a&WajAm7nEe?=OyM? zGcs@nXQt;RmXsEyGBW4^6$qgyun7sVwwpM+Wg@TQL_=XaHbw?U1}3243=B*xj10^S dEI>Xhh{wPN5m?kqbDk`uuurM+RWF?j*>gOcprR)1AWu+#UFfy>D zW#*+YGN@0Kk~Tt;ux4c749-l?ODriZN@Zk_(C|TM^~@_tO;0Vd)(i=mSl?pD#>l|P ozznpFfq@BV2P*>`kk1a{F>nC+oD5uWJ~vPdBE!SL3s%7g01ss$wg3PC diff --git a/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class b/banking-server/target/classes/ufrn/imd/repository/impl/ClientRepository.class index d5200a1291f7edff2158f8e3b6c0276cee9f31ea..155a44b5c55392b0c43f96fcd159f827359a5777 100644 GIT binary patch literal 1693 zcma)6Yg5`l6g@#8fYB-f_Fel1v{GN7VyzUV(xS9to$+IYNY{yp6BB3p2l{*3nYPk8 z)9L5_s7~)D5u#)P}|NQs~AcuDmBrq-_6TwqVgfJ;$Dun6a5+gVL zBA7uof&g+6_%Iv7TnO{QrESOCi#!&>h~pWDFY@K{2$oO~@j^sV#IgXft};b44+RWV z_T(cuW0_3NRM?@J7Z9$orY4(~p$JHyb1zh^T|>*T{YIvt@5@Zf6m6#bA_0R7Ok?Jv zfSzP(OMt(qH;Cd&g=xyVwZEenoAQoImS{z<%j%YFFurz;e)Bz}d`3F~4CO#SWTtL> zpm+zW8)>6$rHKArrZohll1`ectTi)b%~YC-kxzM2uO668*JPC-K1P6{F8c)(FH3V_ z6-1s>K~?FTNpB8rb;tfOUdUGQWLn+XQ|e~EYlS*xxsWbW(=DT}lo;hCWhKm|@Ug7BGAsRjAi>OEXDTQE|lN0!X?4&W4ia&ZA_kX^q+kL=#uDkw5*r;RC}FbxRx#w z4>8T$;svr_f-;Rwg%l7!TPhb%Lh3|6y{7__U4nZ&@)44~r;BB%b^QwF$0S literal 2131 zcmbVNU3U{z6x}yXGtG3Mq1aMDt6-5Pg-#JgaZ0sBk?Qavsa4RI+vFx(n9RhP32X76 ze9*NN1lMBu?D99cJa=Z2xk*DGe8|U~xqF{|_BnIr?|)yu0&opKnkZn(K+(c9N(_}p z{0X-`?sx1v`;SC3W+-h+U&dPuQ>)cI12YVZ{dVZvvfHv-L6=M4u6t7Wu?YiHvzUct z;E08zm}5Aa@bzQq*{+O;tq`;suB^J_d7OihY8o1XoidJL-oSASZ(xC;I+PKLUJ%JR z2%nOwo|oylH;ghE%|v2E6^^qi#V0H*;Uv`>#i8I`hSRHh_B3iYlAF#vId|H^n|O<% z7zA!^`1ajUv}BXV!kNX}c*npQ3uo~z!-?Ffk#r=gExlNT z3|F%(i6avj^@JlFj!Dj)v+y3yljOGaTMQQ`OCEYU(pn-gP_?zQ&Q4H4;-^0Ms22;mhIHPX>H`Cp8J34awC3s^EjMJx=W#z2 z47IVIZn{JCXc=1$)n5-2(JfT&>!yllfuIvb=?d7G^ere%KT@q-xAUx?ghWx*95a zl&=RtOoPsQw?zCfXhm}+d}ZQmxCU-nxQ#muXY=`!{*&Obu-(K6Lhv?ks-3|w+tsiB z(XGiqX@Z;FZ+RkGaf9G-zo)M(S`E_g=#dfN?$e(5e>c;Vhhz1IXKCx)^BR)2Oa+(7 zm3wLdG%Rf6dIjIA^_Dm1V5_Yi-xp!s<546c1K%^8JK*9ZLk!TIEFXT9p8nK5oFPdC zFuYG6sEtm)AJD%7KBRXMtr?W)`wB&FqL`dHReKIr`xD0f=O|}Cf57}5m0uIwNA#`U zXTS_0%J`W6St$}%@d;fqwE{C%mrkm)OSRund4WZG$Y0_V@B+&P`~~9|x>tbWR60Ov z72jft$@mBj2b*-C(aUs;?kT-?at%x?=5d-uP1bZqla~EyWt-%EMqov%I|h9;9CG WU06i5S)G5M(u}!2Yc(aUJUeVD^zGtg5U%1F{ToEFDWsR{2?+xI}I zcvzU7WoLHw@bmQz;2AxEjBuacgOj#g%bf{(tBsthLOE^nx)o>=dRw(ulIe|{ueL@< zflETSVnb==!jwK5f>_nNgu%nCnx<$AIsb^(J5`K_OG4-MQ=5v|30x8GPE?L#LOZt` zr(y~${di9BX?DDR?Mr2ye9_t`7sr#@EB7gA^JWWH=>HEk`t#)!ga+3Izl1ocKnoe# S+%=i);F?i}8^*U4>iz<$R8|!L diff --git a/banking-server/target/classes/ufrn/imd/service/DepositService.class b/banking-server/target/classes/ufrn/imd/service/DepositService.class deleted file mode 100644 index e417806b1752cd381b3bce46f34ff2a4c8e3b3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcma)&O-{ow5QX0asA>6Wfem8AmTvF?0!T=KRi#Re#NKsG(pH6ROue<*$joefV?*AJ0{eu?T5Xjqm0QXA za&2@F7!by-T31#sOyz?ih@!hCOmAkpo6N^$Y0^%K!IpBq3D!GRrqdU~=;=+HR%ir{ z2$z3+`?bIc;cDl*h%VU5^n1cEw=1VYtT{~fzX*4;ob=&!fgdbdl$)s^l$x7glFG=yUJlXA$e^d;gV5uWUz(JY zYV8BJDkVQRF*8r!F*!NEG_S;3GmMde%e5jowV)(3Kd+dbft!&*0?lx^G*D@9erZv1 ws#|6b&`M!c=jws90o}&PzzoE!K#wv4-OtXz0pxK4c`QJh3y67uY$gU?0EMJT{r~^~ 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 a5e1a4d127fd1ae794f2509bcd0e3fed486f2dbe..b4fa9209a9ee6e21b9c3435e2894b0809385ba08 100644 GIT binary patch literal 2841 zcma)8YgZFj6y2AE3=9LLsq)aOQPBb_kycwJh*iW&8_^Q9we~e6lQ1xuNhcH3zTc03 z(^VdI*{{-+NzE5#^NyQ~xRxsO*J-DJG zhPfVG#mgxO$%|oLGG6Jzs|s=|u46&P4ct`m8WvUbAg^Gl3%67xak~qzD|kc29lR;| zcNM%P5VM@Jz`oq7zOHBLo@r%BD4TXUljCZ*S%GB1G7Z~XG^$R`^c?qrKsr}1xpu~^ z6f&<#kplfW(>50Bm1VUMM(q+Y=bxCVeSj(eXfQ z1P`j4QB1S}uwx?Cx%&mf&st5v+X9pA(z$~Lndro{X`9}Rz|qkNbNdpI;um(4+QnVc z(kshFeIzV_kx7ArqhmqfEQ)ewk@+(#Mk6vNY^%;`fv#!hJir|rmAKTrQ+Er-Ra4f; z;PwljknKQImmSBed9Gf)Zg?wBvDTl!J4w9D<-H`%YS6K)prD}$+8Jo{M9YH>(O_bg>T4P-R5T1>n2OBW)su@e3JUFipUV|mpmcnWL{4yp>?*WiNp z=xL~9UBe{Kv5h17t%(unowwI@%Pgj4g&vj~>+I5nTe)2NR(@_#V6=gMmv&HaPs4pY z(C`61WUX)03tNXQACOxyIU6dD7u}PJkMJ>@sO2()7_%xT+9#Y$WrMA8Xj8(UO{KbB zkZqsI*Q-^I2sxfoz7L-rb!U&`&RI2MX~lK!ZK?F_Hku16#30Z~_wz-8y_*31YnZn^ zBbbT@8&S6{e@=puX;XhJ?6Ma1&|?c|KkiRin{*r&gus4!Z#W9eDw++0|G^53gw?b) z%U7H_N1<$#s9N%#%aPCaE;(*RXWGv;}>Q-3%zS7fh0C zx?Qx4+DM?7-JXsnN{iwWAAn}@|IZ9u?yTEIUTK*AwH_-PZ?Zk)yv`-c6rR@Rq z63roEIZiYuiDi~Zj*xpM@Qb4u;fV-vj4~Xk{7HKjqr`fgcE-4iQEv$2IDt5KfF_ap z@~60);6BbZ6GnKN`$;@U{WLi@xpr_>#~-49{KT(_M<^4%ojxDUKp@pXqlQ_F{7K3I zY6N+FKB>ym=2?0ZylF{lJs(a}jtMqCESdt^Ct% Ao&W#< delta 939 zcmYjPOHUI~6#j0fo!brr9all;)ro5=uA@)%@S$)&Lu+Yi)7G==8NFa_Ze>kNA2q0G(@Gy*MS^8SHH$QRh(0yL zP%~9-OsSa7>8XukHg6lbr1;53m@aaz4ly9}U~(|YpiI0pt+GRbV@iB;H~ATS>Fly? z6ib^HL$6qKbvphY@{i4mA*oh`q&AkYF5D<<~bHrJi=qK%@b~h?@=-0 zZ4tltn_&%4NmMj;B9zq6)DVUAo1#?ZCjgTIipapNL7ZRLm1wA@x#l- zZ_Z_oB}Q{NhIVM=Q~CT_X#;J<;{rpH{zhkzG<`Rn>8a2GBGV;IF4q;l{!`ALLDx(>jBT~r*RdV1$Qf`JD2C%6`*?p-vc_tCnG z4u@PSlUJ34G*r?P3L{uf5;`I}PC}Fz#{?y-B-J-?lVsgGk>c1U$#$C%rP_v7R`?&f6K}YoI2!%NB d6Xrr14;){zJ|yf3p25H(Aqsp9CM+zY;XiVToUi}@ 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 8a7bee88adf7fc8e715e5f685cc3ca200269eec5..cf644482cf2f5b0e07d532cd3dfeb33d543e52c6 100644 GIT binary patch literal 3115 zcma)8`BxKH6#j+;28KasDhSvrC|W=zY8NX(TMbxgBUpm8*4lQMOki*_lTIe6-S>Up zmw%#bwDz>8Klk(x>Q6oW-pr6pB%;a5ym{~4<-7OY`@Q`A-?cvh9K!br4kr{mgp)F+ z+t7=L6~ypJJ2E(xfF$-}m{o8Zk1Ci$Ry^j#^o$T*XvJeP9#?P{PbfHtCtGn|K_{M) z@pLPmQLq_WD;8zw3UV-nNM6R0gqY><*`Ha_R<&f=Gp!^SmP~sonc---DG7>e6rGak zIqqc%1DSH(wUcHcm#i%(=c*EvZ_AoXw&s;xL&Eq?#3yR|Ij5kRb~0_5hV7+}(vX}B z%t{y;4ggvjflWH)MaxJKbrW}8mR4BIX+vQR4IPlMZFnS7 zMsv)lSum=xGKJUc?3d6w!BYru$A$$iCF_)3-8f;2lG?JqKE^~%(A06q@k*Yn6;B!7 zvXd)yw!rMd3Wp0_NU5+;kYTHEP~_QFo2sq|RBXd`70<$zQBvWdO!ZY27ja3(Wfjli zc^NOLco8qDcp0y#conayxC3{x+Cyjqx?}5BIcMYsiK-0~5*1(VEEaJ|a593EzjmU2Eoc$DOiD#{9DDT$FGiY>XS&h*n#Of#gB= z(>V#0gBV?V`U!UcWmg|ZvSYuJ;e9m47c$1AZNmlb&bT%(iF&Rx&)sRv$ysESA z1|%f_HzH5KwDXRD9WfQ^ z2}GT>c1c@WiMNZ))X!*zbt$VlYokDL-%1#3WHv(K^=MKuK2z~IzE&|IXk{EM-5oUq zroHN1Fp?Rc3`s>=Uekk{yuDDH$@rFO%Q()3GTBI-wr#`pu^UAHPZUsSFCev(nw_(Z z(omon-pGDEhml1RRHr!4+bJr3>zjegjdi2v8Cp(jmX$RJIqyXn6N9oRyYy|@c~7$f#HW0+$ECS%x5siOf(?hkWDycof# zK+Ly2*vrT|a31@p8>37bNxsGTo4|e?V9W<8saEChru;ozY2kP;|B4Rqy$Sbm{}Ary zo5;**j!hhu(JQ!pbkDDd*O0gPmNxmwdIG5`G9}D+&7)Wuq(|#D&kvljBKQov^irOk)KGp)1Nk1b;t2B<*dO93K5C-3g1)Qh{}~-3j;MzY lVt9aSO?VJraa6eb1-`+TJd0zTiwKWXCXGoN&M`X7iXM@;|# delta 1117 zcmYjQS#J|p6#mZGo*7TC6UT%srXh>tWD=4ZNCTzWAPIYxf=wtbP$te`Cb7qkm#94D z9rdNUFCg&`Dpf3!fgl0Th$sF4@H3DQ;>;L9M!IwFIrp6Jd}q1;b$n`>d;NLm1%N43 z4JZg`2nvLt5~AzYmX*p|ZZ5UFx^8Ey1a;DJo$53pU=FRs*h?1(!;qUHGh#p>qM=Ek z8BuvJbXnC9BecsyO1oj81+4;m(I)>_``NYwof_f-`|zWDs}8d5enMPs2I6x%dI&9< zTXxwVtn|3WoG+jkEYle7YgZ z3$!K&X(Sxlvhp>X5RXb=khEnpGl9d0b`oi=CA(F0I*^Nc3l(AOx z>|vbzJ8PG!PSLGs_?^(<*P~o;QWxz)v1)(2CWO;Y&b6wwGP})7lLq7)CFTLkOrVVp z%8fuGtWRe1erx4}z*N(!fh^WE*aA0^lNo(1NO)t)cY23>p+7zzg+pjHhjulgF(DJp zDmDx*bY9?3T#e!?L7a76yF8b-Dixc#mIz7tUTY&5ZS#OF6pI_R5_%a! z0pTRCxYsbAwIH8)F!_I)r7_-#_t5YY&_g~bIKzK$hJhwFZpK+YiG~r*;XF&kZVL$b z06Pp8WZmq@4m6;SAGTkiWofjIJ$1An;C1&tBG1uvCD#1}y)Q?1-Q=F4zYg;eMq-ES z_}L2|^uxC?C=f#gdw338ag0a)1loKm!;NrXsc>K{V#%jBi)H)ZVVYqY z+`Y>TXLX4+I_MJyG=5AgEUB!$%&+1KpB4NOHN2WLpjVzg#_&GFPv96Q@PH-qNqQyp zNb0!ut(^U=Tl5@6jPsm$iW849;^np5#bD6utW)q8Zg{qQYq9PY)=_}V8iO@OY@&kB EFUd8_(*OVf diff --git a/banking-server/target/classes/ufrn/imd/utils/NameSpace.class b/banking-server/target/classes/ufrn/imd/utils/NameSpace.class index 84c708c4860b4dc11f4b780a762e8ab3b3db8aa2..4352c7ac97153fc0ffa5de6fbc6076a0ad780fa8 100644 GIT binary patch delta 445 zcmYL^%}N4M7>3{D=$z4xrlyvamDQA*H5r5;5=2S4QdA^Y;vc1y{U~i(v~MSK4P8LB zNP@b6poRC)bwuBcP#pN)_dMtOJ0p1{r$2w*J^&<+}EUtgCpi@q_yY2oSgA|FD z^>21}CNKpb$A&;0n*vU_1Sa8P@ZVgtQ<|38Np5Y^Nu<=KruG=zo!V_pJFj(5wOqZ^ zYV;X+vvqaZYxg;}1T<_5xZxpOuTff~CE$f;@DLgt@9GhDa*r@=EYmlw2pR*)1&x`e zQl+U>LTUjs_M_;hn?}k=ZLwFdC-XT#Q8uB3Y4T#6fEj8DD46{#zJ`qmuz%#?{UIzb vkUYF+8mrf4dxu<+o?$IktX^ImLV1DxA4>*yjPZmqnIWL7lFH}ETQL6%7UM#| delta 470 zcmYLFTQ37a6#izn?W{HE&86UMx8MoUrv -- GitLab From 0c8ced2be42ba2df035f59ce1d7a4abb4ecd12aa Mon Sep 17 00:00:00 2001 From: Fernando Ferreira de Lima Filho Date: Thu, 21 Apr 2022 11:11:33 -0300 Subject: [PATCH 2/3] fluxo request response --- .../java/ufrn/imd/controller/Controller.java | 3 ++ .../java/ufrn/imd/utils/MachineState.java | 44 ++++++++++++------ .../main/java/ufrn/imd/utils/NameSpace.java | 3 ++ .../java/ufrn/imd/utils/ServerResponse.java | 20 ++++++++ .../main/java/ufrn/imd/BankingServerApp.java | 6 +-- .../java/ufrn/imd/controller/Controller.java | 2 + .../impl/BalanceControllerImpl.java | 11 +++-- .../impl/DepositControllerImpl.java | 16 +++++-- .../imd/service/impl/BalanceServiceImpl.java | 8 +++- .../imd/service/impl/DepositServiceImpl.java | 8 +++- .../java/ufrn/imd/utils/ServerResponse.java | 20 ++++++++ .../classes/ufrn/imd/BankingServerApp.class | Bin 1259 -> 1335 bytes .../ufrn/imd/controller/Controller.class | Bin 252 -> 344 bytes .../impl/BalanceControllerImpl$Notify.class | Bin 2838 -> 2869 bytes .../impl/BalanceControllerImpl.class | Bin 2389 -> 2642 bytes .../impl/DepositControllerImpl$Notify.class | Bin 2927 -> 3029 bytes .../impl/DepositControllerImpl.class | Bin 2389 -> 2843 bytes .../imd/service/impl/BalanceServiceImpl.class | Bin 2841 -> 3580 bytes .../imd/service/impl/DepositServiceImpl.class | Bin 3115 -> 3844 bytes 19 files changed, 114 insertions(+), 27 deletions(-) create mode 100644 banking-client/src/main/java/ufrn/imd/utils/ServerResponse.java create mode 100644 banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java 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 580d6e5..ab932a2 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(Client 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 b7a227b..b810c0c 100644 --- a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java +++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java @@ -2,6 +2,7 @@ package ufrn.imd.utils; import lombok.Data; import ufrn.imd.controller.Controller; +import ufrn.imd.domain.Account; import ufrn.imd.domain.Client; import java.net.MalformedURLException; @@ -10,19 +11,18 @@ 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; @Data 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 HELP = "HELP"; + public static final String START = "START"; public static final String INVALID_INPUT = "INVALID_INPUT"; public static final String QUIT = "QUIT"; @@ -42,32 +42,48 @@ 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; } } 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(DEPOSIT) && !inputValue.equals(BALANCE)){ + if(!inputValue.isEmpty() && + !inputValue.equals(QUIT) && + !inputValue.equals(DEPOSIT) && + !inputValue.equals(BALANCE)) { 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); Controller server = (Controller) Naming.lookup(HOST_DEPOSIT_SERVICE); - server.registerClient(client); + ServerResponse response = server.getResponse(client); + if(response.getStatus() == 200) { + System.out.println( + String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance()) + ); + } + } 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()) + ); + } } } @@ -76,7 +92,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 c379354..4bc802f 100644 --- a/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java +++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java @@ -2,5 +2,8 @@ package ufrn.imd.utils; public class NameSpace { public static final Integer PORT_DEPOSIT_SERVICE = 1907; + public static final Integer PORT_BALANCE_SERVICE = 1908; 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 0000000..4c1115b --- /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-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java index 7acd207..39928e1 100644 --- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java +++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java @@ -13,9 +13,9 @@ 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()); + ClientRepository clientRepository = new ClientRepository(); + DepositServiceImpl depositService = new DepositServiceImpl(clientRepository); + BalanceServiceImpl balanceService = new BalanceServiceImpl(clientRepository); Controller depositController = new DepositControllerImpl(depositService); Controller balanceController = new BalanceControllerImpl(balanceService); 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 824205a..ab932a2 100644 --- a/banking-server/src/main/java/ufrn/imd/controller/Controller.java +++ b/banking-server/src/main/java/ufrn/imd/controller/Controller.java @@ -1,6 +1,7 @@ package ufrn.imd.controller; import ufrn.imd.domain.Client; +import ufrn.imd.utils.ServerResponse; import java.rmi.Remote; import java.rmi.RemoteException; @@ -8,4 +9,5 @@ import java.rmi.RemoteException; public interface Controller extends Remote { public void registerClient(Client client) throws RemoteException; + public ServerResponse getResponse(Client 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 0c51991..8ae4333 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 clients = new ArrayDeque<>(); + private final BalanceServiceImpl service; public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); @@ -26,8 +28,8 @@ 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; +// new Notify(service).start(); log.info(String.format("Initializing server in %s", HOST_BALANCE_SERVICE)); } @@ -39,7 +41,10 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro log.info(String.format("total users: %d", clients.size())); } - + @Override + public ServerResponse getResponse(Client client) throws RemoteException { + return this.service.balance(Optional.of(client)); + } private class Notify extends Thread{ 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 d9b3df5..179ed83 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,7 @@ 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 java.net.MalformedURLException; import java.rmi.AlreadyBoundException; @@ -20,15 +21,18 @@ import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE; public class DepositControllerImpl extends UnicastRemoteObject implements Controller { private volatile Queue clients = new ArrayDeque<>(); + private final DepositServiceImpl service; + + private volatile Queue serverResponses = new ArrayDeque<>(); public DepositControllerImpl(DepositServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); log.info("Starting Deposit service!"); - new Notify(service).start(); +// 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); } @@ -39,7 +43,9 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro log.info(String.format("total users: %d", clients.size())); } - + public ServerResponse getResponse(Client client) throws RemoteException { + return this.service.deposit(200.00, Optional.of(client)); + } private class Notify extends Thread{ @@ -61,8 +67,8 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro clients.stream().forEach(client -> { try { log.info(String.format("Clients waiting %d", clients.size())); - this.service.deposit(200.00, Optional.of(client)); - clients.remove(); + ServerResponse deposit = this.service.deposit(200.00, Optional.of(client)); + serverResponses.add(deposit); log.info(String.format("Clients waiting %d", clients.size())); } catch (RemoteException e) { 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 469601d..95e9373 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 clientRepository; - public void balance(Optional clientOptional) throws RemoteException { + public ServerResponse balance(Optional 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 e7a8653..83c894a 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 repository; - public void deposit(Double value, Optional clientOptional) throws RemoteException, RuntimeException { + public ServerResponse deposit(Double value, Optional 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/utils/ServerResponse.java b/banking-server/src/main/java/ufrn/imd/utils/ServerResponse.java new file mode 100644 index 0000000..4c1115b --- /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/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class index e7bc89caf443850f74b54ca56cfedf3e1bb21797..9426e1eeb07564495580cebd9a9fb3d4826bfbdf 100644 GIT binary patch delta 331 zcmXAlOHKko5Qe|$VQ6U70Ffy8ej+e{FGNVt3!n>kvokRyk{B_{#+7Fva{%=S#>GS@ z@c-VF!=h^JDOch&4006KdFlTq00I{ zR@xb3f<2*AtL{IjnzjG@q0X(ldu$m7)ez+c*zJ&rR|;^BLZZV$ABV&|Hz3}Ogcz?J zkZ3wjVo{_d=0^6UY?_jj7M^643>Bt@;NZVKQ^JTUPgXRRXy=)sF)M9yBA*kq#h74$ ZMfrw`NS35>SRUDIR^)X}Zr6ns`9C6UF|7aq delta 291 zcmYL?O-=$q5QV?)nW2ZqpI}t{M-&;65d}dK6KRYe&_i`Ttwncg@<>b~5BmXK1fs$d zdy>mQ=^xEiAT2tc@^!!#xuC(Qr= diff --git a/banking-server/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class index f430dd8e588b7787d3b1e57839844a0ca969b2ba..9f65cc4b43514c694d42fba6e72344725bc510de 100644 GIT binary patch delta 154 zcmeyvc!Np!)W2Q(7#JAL83foFc-R?u*%|mI3fp<}Gcs_er_8C?22NxVAe##)%f!G900_P!^8f$< delta 62 zcmcb?^oLRS)W2Q(7#JAL8Ti;4xY!xE*%^2y3fnRAPMp&#%gDmWz{0@Fz{tP`RKfzJ N*@2h?$Yx^T1OT8C2%`W1 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 index 6f1fd296957eb44ef8553d3843aed5dde42adc51..05c9dcdc8d1772381efcdb551579129b88ee152d 100644 GIT binary patch delta 244 zcmW-Z+e!jq6otRBgZ%><-B{ga2T&^h$eL0+7UD$2E52vrKUTtFf*lmQB*~kEdP(my%^|atnCFNMZg99GPlW=v98fi%>RNp< z$r#W!Nqfz@HwAm|p-zK2NtYyFWJ>NaX--(@RDRE>b1B3*O)hA0#j+3!!Z#Ubl}%!! WJyytwj$Do{EVOtVKfZiIDMt_WoF`z4`XxZFm<7L?fx*!u@uw&3eAH2CMb_>(gD9(!<|&;LmfD6 zQ9p@i?kEzWM2s?7-gu%%fsW8F75e(9`s#omA28FVVd{6IJRLD6D(qfplAz2g32KiqTBUw`_0=v(gO%+F6>fGVE4ETdMj)5WGX zoqX!jsi(nZ7mY5v*<;csm%TKb*L@EAU0OI`l7kMdiZ+)+9L}JfBMu!7M@@Ll5FB?o z!AX}>oK~E1Im_2hXB9?AO})MI|jG-HCx{Z~ukpNU}FR9Bua!qh8`S&hM~Wn!{|f$nA@b z#!{GQeIgMXZ}cvYc$#8XDS9*)=~eV;E)iGsYX%t93~^bJ&kS`PqT8OvMAuLmp`! z^W;Ua+0P18zHJK5SpIn0)Sl41($b5Et%z` zzu`3k^}kx-dJEMV6Lgmtwq>sQZ{+{{3#*Ch087pG@}o2uzpz*>vCSGn#s!IkQVUZe zwNlA^(jU}Ud(V*Q6$|3mCh%{J*M_0!V}qVxSZ;zCV|b2~fa QHZlstMQ~G5zPM`t0{i2$`2YX_ delta 768 zcmZXS$x{623t`_RxwG!8Suo4a*8RYO&%#`n04ko;ljrZDW33DBjSu05ueF3 z#dGqC7tA>|Mso3;@lEseg*x1{*5veS5$~qSTq>J$GTtTUhdCS5sc@Uiwp(0WG#fb~-;SC(4 zS432(j>r|&*49%i-hGrmxJ>y96^q#J4m2r;V7ghqOwk}-r;(%L4LSA67QkLpLAIm+ E0oS~7-2eap 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 index b8477ef07534ba6cd062501ed1b04324a2d61879..1e65ef3171eb3e0c93d93fa451f58c6ac729a57c 100644 GIT binary patch delta 1030 zcmaiz%X1V}6vltIC&`^@ZZT6S2@heIfPrKjGe8JP0tpH75E26kf<{z&W;)4a!ptz; z3E*p#r#$3gE04dxa!Em1B@6xl_im`N+_81x!YUTX>7mLh7nZ%a_w?!SeCNC0J^e@9 zuS@H{Jb&~U*vh>aNd|3Jvonl_Vhk|6h+VuDM!TczvDwSMF!Oe+RE#a+AcvYIlBe%( zSU9eku!(ax%Db8)Hb;5S=6xnxb{1daY(C(a&4+ws^D)O`v<={dlsQe_W+jI;1&w?E z=5H#k3vRXI6@A6(k@=}wIa@qY$j|8S$yq1JMUs)v=?>0C(mh`o>U^pB%5au* zn)BiN1{xEr z&HMdbVri0_iWVoIcdKH|ksz)%JhX>*np=i% z`QEUZ-rz^wtL_B9>nBZj6&=Cx=&ImJG_y7-R}U7gq3e)Hg!dqs2ud!aL)LXcS1h$- zz2sVHl65Q1yh)60ET)f6$+Ss5GCEykWDlc|%aYnR=x#7vj7`=Dj=T_&F|o2ZisD%p<>^p`1B}xzreDQ)cKR zp-CE!(r*|brI?z|IA@Ng(*0%5K(efFD3we**>cUG;TS`P^y@Yt|~2G?Kxg;RL=hfh^{WEx<2! zF?rMzl73TYV1Xdh1ye>dAQ}=1U^16iO3CtYQYMS;S_R z(Jtr~8rjMk`8!_OGMT1PTGmo0#b(Hii=?@dmzIC6>Lo4|)^Ao|X-cG(Ch`M+)bivI zuD90*0^VL0Dfg#c?tZlM!?AJHIR4knRPGNumYX#;S+`fdPqA>lN#_t0yH=EHmUUYs zYNeMA!e}GGdih%$|4*5ioO0=;45|Mzq-3k*QrDX@g!P?1O|f67D+I7)-Ns4ZM66PR d0)a|Il`8QMdBP*vc%$G(Dr}OOHj6r2{{V1Sjhp}g 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..ebfe39d9843762fa90cc9a12183aefdcd3f8aded 100644 GIT binary patch delta 1268 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 WabE@~7nu%HcMtYrU+^@Heg6Q;-|~0> delta 935 zcmZuvNmCP15dPlGWG1{kB*rixm=F*!EV3wQA}VTd0TFORaSsrY5ED#D+zq&UwB8BJ zgI>L;MJX;-7H7*Ue~Ml_Sf!RdBqbcoVS4-e>+bL6SNW`&{ru;{CjguA$VFxc$4=}r z5GsHhT^uTQJFo|PU0_yCMYmPxv17l1UXBCk=TKWX3;gBnYWF_iU2!z2`7)6A^lnaXK6DUKuz1v2c8>xqmns8JX(fq|Pn*-1b9tBP(b1-|~IIq;pze2KNLuSr@dS zT?To(=K+J>n@CKgCmBR{JRV7gV&POOl4AJcm*2QoKH)F5hYU6HJNL+_qcP|vg&9hq z(8Y8Zy_d_nopNi)SKxt-d@m~Kp?s8CfKC~pOMZ2PvaiWgQAuAf4Eh#R)kGojRS;V( z@ih`#h`6e#+Lr6YT2xa+9H=1-X+(dOb@0=)TH>iAPo=(6)T03!d4M2P4!@qfCh|41 z&Ds2tEfln30}=SBG(c7%%j@S+RNwFh+R~c(BGHP)b<7;<-#R>h_|iZtwxcue?L+5Zdue}! 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 GIT binary patch delta 1710 zcmb7_`EyfM6vsa=N%PXz+l2sWn=Wawg;11e5rI~#wjvg*r3(s*OWMBHv}w|2DK2Ob za90$c8}7R(E@15<%rO4wIE+6yFT3>laV8;o$DL4;8cW44Xj!?-=f4C+gX>r8lX?Q1`&7IhblS zq;aRM$%5aV0luD&xW}|iP2M7F=mY6UbjVC-tX^LK_6vU18H<^Tj%Zj!CpET6;=G&< zOL;O$Ge^{_vEriO&REJEv9tPuol7^8^9y*>e^0WQL&Kd+g;Qyfxih#>o=mnr7ij;F z^hH(?qmN6=!Xu_eXO=fh+m}j2Vk512STpvgysRQiXa%UC%5%W1pY%l8wBj4)6dm?yxt?~b-?O>oTPb8$JU*75&^RBoe(_XT=R7m6Ga8N7 zuby)2XkqiV0Htz?tigfbJ{xk`cuHi(W&>!Axa9|jtv?DQnR!;O z;QM)2&9d6-o29(6V3vwmDo+W-$)z&3P$HvGg32kTLO$(Eq4u*;E|w0e>7_>QoLb`Y zWbGR|yn$Kj=Bb~i*xt#~6eS|!M)5h=!CPXzGKA$fw4E~ZA*5<4uAqVlY84k0ck70tf+Fq<(4v*nA_aG?3yS+T?#4uK zCSEj%7)`uu{9inocrv~p81=wR=3Rg9K0Om&hqGUQef$hm@hm88jm=utS=8hZX1$Hc z28UWU1~IhHWV1~j^)_4Bs!4-Zw`p)=fbAALY<9BCW;c5R?6t{bpT+(F2W&>s6rkCn z#U@5vLs~5k-hJ`PnC8|PWkzG)9i!gx9x{lEUg|pLII*oUy+$^X&*3~jZTT!xBx$!u zDbjQpgt}WhQ;|e_ED}q%HziV$XfhE`btxt=QE`M$i;SX+ZV5lCIL2{{6N;0ZvN)|c z!&ya^bBgm^P>f@|L2y;PBb`Zf6}6;OEy?a!Jm!A!hKesLdbnh9S<%ZC1E(R~)s(C* zDw$c?s$_jj-6g(=S;ZAM?W=aKDz0%|af6%gJKqBH7PsB+zCtt19oO;y5PrAMwAu`} z*Y3!_r*L_sSggmZW|3<-^Tt0h@Ykl(ZQU}Zs!65dozY}dCKJyXd@FNbIAOQh>GwW0 zC~;pp1#YFPTo{&h8;r%n7(I%dGpP3}7_; znu3WE5y>mxVrDU0`l%G8()jFPz#IvfD<;42dGgB?iR@v%0IFCZl5V?BxJS5MKETNG zihjKRTK5l@9x>QjXbAPUHT%yp{+2{riX}o<$$D6rZ|n7oL6?~%9qY&b#HgLY(F26u zh$j0MI#ebsc)8iI_<~{ZAp$IsjSc0WB3wTz7=BOThg!z;k*g>9zeKJyu}o|pmh(`! bE#CV)=7F4Jh3I<5m4b<~iq(IlO|1S6=4p+L -- GitLab From 1f435d4389a51c6261f98d3773b831e17cbe08e4 Mon Sep 17 00:00:00 2001 From: Fernando Ferreira de Lima Filho Date: Thu, 21 Apr 2022 11:55:48 -0300 Subject: [PATCH 3/3] Ajustando request response --- .../java/ufrn/imd/controller/Controller.java | 2 +- .../java/ufrn/imd/utils/MachineState.java | 16 +++++- .../imd/utils/message/DepositMessage.java | 17 ++++++ banking-server/.idea/compiler.xml | 1 + .../java/ufrn/imd/controller/Controller.java | 3 +- .../impl/BalanceControllerImpl.java | 50 +---------------- .../impl/DepositControllerImpl.java | 53 ++---------------- .../imd/utils/message/DepositMessage.java | 16 ++++++ .../ufrn/imd/controller/Controller.class | Bin 344 -> 273 bytes .../impl/BalanceControllerImpl$Notify.class | Bin 2869 -> 0 bytes .../impl/BalanceControllerImpl.class | Bin 2642 -> 2232 bytes .../impl/DepositControllerImpl$Notify.class | Bin 3029 -> 0 bytes .../impl/DepositControllerImpl.class | Bin 2843 -> 2502 bytes 13 files changed, 57 insertions(+), 101 deletions(-) create mode 100644 banking-client/src/main/java/ufrn/imd/utils/message/DepositMessage.java create mode 100644 banking-server/src/main/java/ufrn/imd/utils/message/DepositMessage.java delete mode 100644 banking-server/target/classes/ufrn/imd/controller/impl/BalanceControllerImpl$Notify.class delete mode 100644 banking-server/target/classes/ufrn/imd/controller/impl/DepositControllerImpl$Notify.class 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 ab932a2..b096e53 100644 --- a/banking-client/src/main/java/ufrn/imd/controller/Controller.java +++ b/banking-client/src/main/java/ufrn/imd/controller/Controller.java @@ -9,5 +9,5 @@ import java.rmi.RemoteException; public interface Controller extends Remote { public void registerClient(Client client) throws RemoteException; - public ServerResponse getResponse(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 b810c0c..a955e56 100644 --- a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java +++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java @@ -4,6 +4,7 @@ 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 java.net.MalformedURLException; import java.rmi.Naming; @@ -68,13 +69,20 @@ public class MachineState { } else if(state.equals(DEPOSIT)) { 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); - ServerResponse response = server.getResponse(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); @@ -84,6 +92,12 @@ public class MachineState { String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance()) ); } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } } 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 0000000..4b6e3da --- /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-server/.idea/compiler.xml b/banking-server/.idea/compiler.xml index 1e78cc9..0830c93 100644 --- a/banking-server/.idea/compiler.xml +++ b/banking-server/.idea/compiler.xml @@ -2,6 +2,7 @@ + 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 ab932a2..d5be018 100644 --- a/banking-server/src/main/java/ufrn/imd/controller/Controller.java +++ b/banking-server/src/main/java/ufrn/imd/controller/Controller.java @@ -7,7 +7,6 @@ import java.rmi.Remote; import java.rmi.RemoteException; public interface Controller extends Remote { - public void registerClient(Client client) throws RemoteException; - public ServerResponse getResponse(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 8ae4333..50d9cb8 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 @@ -29,59 +29,13 @@ public class BalanceControllerImpl extends UnicastRemoteObject implements Contro Naming.bind(HOST_BALANCE_SERVICE, this); log.info("Starting Deposit service!"); this.service = service; -// new Notify(service).start(); 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())); - } - - @Override - public ServerResponse getResponse(Client client) throws RemoteException { + public ServerResponse getResponse(Object obj) throws RemoteException { + Client client = (Client) obj; return this.service.balance(Optional.of(client)); } - - - 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(); - } - } - } - - } - } } 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 179ed83..1e37f28 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 @@ -5,6 +5,7 @@ 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; @@ -28,61 +29,15 @@ public class DepositControllerImpl extends UnicastRemoteObject implements Contro 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(Client client) throws RemoteException { - return this.service.deposit(200.00, Optional.of(client)); + 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())); - ServerResponse deposit = this.service.deposit(200.00, Optional.of(client)); - serverResponses.add(deposit); - 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/utils/message/DepositMessage.java b/banking-server/src/main/java/ufrn/imd/utils/message/DepositMessage.java new file mode 100644 index 0000000..2badcd3 --- /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/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class index 9f65cc4b43514c694d42fba6e72344725bc510de..d963fb57c51b2717ad5df0b7a9c8b917478a9e46 100644 GIT binary patch delta 108 zcmcb?G?B^l)W2Q(7#JAL8Ti;4xY!xE*%^2k8MxC^OM+613-a@dQyCeIHGHxX%M$f- z67$ma{gbj%lP6ZG^14)W2Q(7#JAL83foFc-R?u*%|m48Tg7)(=&@pQj45(GE?(P7#XBBd`i=b z^7J!vQ}k2va}zW3^dVB#nqiC#T&@+#sRbpO`FX|c4E&4?-07($L8-+BKz=GCgC%ag tKBW__6eebM=`*n~GO#ePGB7f*0Ug5vq}hQY91NVuB0x45P?m{-8vqZ6D>DE9 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 05c9dcdc8d1772381efcdb551579129b88ee152d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2869 zcmb7GU2_v<6n-{oyKTCf5DS!|Sg>FkkQ5c6E%H^0Eu<~9wTKmPo4je4Zg%7DrcnI; z{`T4{Z@I<+EX?SPUOL|TPn>ba3-Nh(x5-92Ks(dy?%8wB`#jG%@7eeFfA9VR-~hgB zLl^oJ*opypH`s=QIMj}paai6RX~oe5j^Vhp45b+{+Ky8=-OM}w4SX*H^D4#?NMgJd z6DrOma2AsZOkp~KS22^oIlLyr&#QPnfliF8m{swH0@W4Hl2H%}viWMsv2sSamxx~W?QF%|fY(ln@`#al4ko<0SA^{9evd5&$G!f6N`s+m_~4;hx>9aeB5v)=R^;BHYunkXZ=tfq< zlXyzQMO;$xrUo5z8VV>X*l5|_a>=mfyS)X`9UyVHs}LGWnAflX@=qPNZO`=_y)q`e z1-s}bTW~pr#iR-|g?$>zuvFL@DtJqS1J-EUgN4=LAvN_wj*-5AhM@^W)agSi%0qp#Wk+6$ZS$}UEH+iYwhEE(J)V?a(P~b z!wdoKHQq6mVU=vwI1_2}DbHcJ-<2&asnE-^d3z(!0&9+rd^woF$N1!bIfAknHu0x-jeMM>xBhw=8&c@#r;X- zK5TYPAu1Fmb4orYE7ZdCH}p&B;%Za3+OYVXb68w>X?{OH{IBwWoZkLWC+l)9^XI($I%} z3U<`hHmoIkQRMReQ00`-OM1bx9S;BYa{WogH(Vlb+ly6J@sFqmVS->ljp$a<6mC!8 zIe5Rc5lchh^m0W+-5>pBu;hbdqs8LX5(hU5w)1xfpC;%L=QWw#eG5wVC&aRQZXtfd4}FHeX*BWoB{cJB zBo9E3qaQuAY+@k8uoD?x<(*t6#I-srK@#|-T`+wX$ylREj$wWkmh!cYY0-_A!tO-6NF(wca)D=JC{R9_o zSV%!plncu>OMj5%ZLD%*FZ!N)&b{|^b@#9ML3Hcz_xB$_hEE#v#fcnsL%V=d4FTAT-xvzgWa|wn=WQc`Se__;ICAJZQar2 zmU9I~>_2fd$T(fWS7&6}(8i!5e$-y8t`^f{l}h&Wq`zMC4W~G*d183VGtG0u3tnno z8D5h$ zbhdYohW-O$`!s$N(xFp!`v;Jbbu!eNB>y)2Gg*$3A}v$vFkE0j%B^2Wm>zMx$e~6N~S2{D8zR-j3wz$mZCQ+9>-a;T(qk0M9RB9smFU delta 1028 zcmZ{i*;5=<6vltI2f35x#>hYr5|<$%I0R(^kwicvSzJa5NQlJ5Edz5I8)tg3yN8&# z;1YM=`rUuP7b6xmu}Z6a_0d1YcP-Ba)KpnMbe->P-}%nz+v@zSd*jzXfBYFZ$=5yy zIi-2h$K%uk3l}LmQo~mE+jPx1uF= zqN1^y6~*0=tp;)8vVjc~#lgZ%b0rFkLA_F}H0tFbEbgSHh8ELFZ*Z`qYLg2#UTcK0 zRZRR(dHRPMNUwSmU5bub8z<*&eaS|#p}=JNjn}t$h{Kwy;SB=Ks^Lv)nz|vRVOZlW zO=O5k40-w$eG5rBN`kPOKWEn(aggL=8?6V+wqMgUtaHsU$V2Jg%;@~vhU?tWykmHm z_Y~csy_R3z-Y>tiZe%NpeMuuJ*YZsviYN0&Du(x|88-Mp^P%A*KGxhce8Q(`J#)O{ zGsEY6Vfd1-(r+^*HJ+|zM)bhWjW>VK9P-lXyV~cQNl+`!H*HgnlPOnZ&i=y8YI(g} ztd+xRac*hVE+aWKf5Q>k@gRLjA9tv47-@G0uryIc}9>@}1s{vIMSmEe&(c+D{ckdU*ivFKr0AR{#J2 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 1e65ef3171eb3e0c93d93fa451f58c6ac729a57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3029 zcmb7GSyL2O6#jY!Xc#&UPH;Df2F!qjAu(zMqavW711J!T8k00Lcc7)Gd(z#5V)lLC zH}jHLpG~PjtCFhZF_qtuUy!O)iV^4U~L#&y9=4T^&88s21}H$qXLf;w-`aNBwm^i-@ew&gjtX$q&xaG)$+w%un~ zhPPkA+2s8iSM=`&v13|6&48U{V)3+LiLqjSMmSUYj7do%ZD(|IT6YZjUJ};Gl$hC= z?HRd61=@&Z31`66T~|=PrxN>~5^W3okgKRuwD_BpkQ7F5O`p>j^pvSvv#Alw6OL0X zcp^J=AtMT&VOum&4E~QOcwo}gGxMW*p@dO0_54g$Z=**^{-zLtSv#*AR%*aBgyr?g zSZX$?oPsSC>_yKo-IOe*a3+LXuq{_G;Kl%xlQ&WmB5!*ljHWK*J5{j0;-@;Cg4m>8 zbTZY3`&cgwUD)Q<_*8@63fMNY#uJglJ&-5Of4Rl_XiR2Ul0VP1oYyn;2B z?JedEYqr&!6RiOfcdH6ZgN=fQ7vU&qI%M0P>p6O1RCsfC){WP}ZGsn9QEb944GTE0 z;(~@nT-5LqURKa@=OSo$1>NkFfKRveyl!|BM0=LeDyHKz=R}5?ysF_fysqL64R7Kt z6>rP;cT~Kq;XS;s;sXu4@u7x~FsI>Td_pdLCo2%HU{`q~-cP4h;hLIrgifg4_veaD zQ({=b>YycL!=z3WMNzg%+y`9|agVviMOK{M&328N_H4PAd@TxQNn0w-r*P;YNPC5E zbY)mMn*~pX_Q#~>(A;n5I@VX{?1)Xtju5m!nxY~<_QmiiKKq}Kphol&ArCMT+zzNU7KRFyT!bp+nvY_TxIgrCQ$fTg>SP!|bu^!< zWpz49mYe%7r-6baVXq|=p(ZLj?WjyR8Eu708JDptvy&%7RL^p!RkiIh?$av1(C{U` z(eMOzDcDvim|-p0^CFe@2Rf&gp3^g)?eO4f%vau2e8=LXZF|1RM))I~Mae-h@P>6O zYYMk5(CoXtIw47w;nZS5gw^l;V-WJrw&B{BJP+umIca#JPsJq#?Y9xKQa)AFx(Z<_ zZyp{kycYoxB;-K?G&RYig_0-~o-ghE-OjghYDD>rckZ|brSm65I=ikRdc`+=gue;Y z@OKYt@gy3s7pu^VBqeKUNHcVxi%+?dVIp+2Rq{`wJh z3H3Vaqx;Gq8hGEji5PGLjS)0MTf(Z#s2}aRj;71Eext)49vFKWCJG5_JHY@4_}-6o zID`$n%k?mu-I$=(ae_R-E8e6JwUsu#Od~~&2sPXB7#^ob&^Ca-lj~+`-C~jv6)n7M zsEGfAnx=^C(^5KrqR!`PUgBR}^D`2sqU8jb*%BU{TtYJwqcqx#HA`5xV+rf8W5Z~m zx3TL6Hbrpqt`176KXk>1IRn8fYLNIg)D!Fwxju}YychRl7&Ayy<0x`C#*4zJpL8b^ z-pQ1Avvv`Fk?Auz+Rm42HczU089}DsfXLqvDmK?pwU2@b_Tef2xgR_DOi(J+q^BO)l^z@#Vv1VzLFlhDM(kYGB&**I-nXW_!~ z2e?wiq9_-ZD;NGJEpLNGQRT+2>U;0I!#TH4zjqZsO7lN|fBgpZ@YTb)6f!gPUugKWJ^YbQW}OYm~&y?6hgEq*Iou(bY1Z2(N|%$#5zbn2aRM zXtprruAg?MBMA-fKgB+cy^H2b+KOjGre%d=g3&ylTgs#Y@#V!pE*no;f#vN=V0d?9 z;g@5;rD&qJ5OP)p4{}J+V4DNfXjIK)!^zRH6Ar_9x5L3Sm%l2DbF-I zcMzh5xuT|$yy7`86fb#IcvCdCZn*r8pj%X(4JUIVM_EhjF4>0Dxk%C!**wxQl#H7x zS*p6Fwea3iz5Y?})u>TCS4UW2@|x_A>NK`9*x5iy9K?I z07v8;7V_$_;#*RIO9ICTDGnrFg4aF7|{V3CPJm Di7lV9 delta 1117 zcmZXT+jCP@6vlr$$()^@>{2GZ03~3k1yic6EmA1;QlV6Xv=tB#ykOd##?+8t&Pfrp zMiB3KJ*W@<1-=P&I>8xz^uZZt{4ad*Z*W{YVOnO)O!ir4t@W+%Ti@*Sd*=^5^*{do zvD|e;vCn^v@y$^%k!MD#gq2+l*Y^r*Nq9535(JKdv?V0c|XX~bcGlE~Zm)k0- z-pz@E7o7C`OO>+kDaM<9;Z5Ba{uvqXR3v6SKbY|@&U;ngFvMh-h;D1&!$XFL?a|Nf za3s3Zxny{gYIr(2QkTAfnr7K>nYRpk88lqss^)FOJFIBlHPm@ebIov__cb>RAMl}~ ztL$A)x8$W;8&ti#q9dpTxl+33i-tq#-Fd@DtQbD#6V0dg`I+XX;d8#wd}%aa@wH+o z{6`J7YrZjr+%kO2ci~tptM=Qx?r)j6x)SS))H{}P%emoNP%I6fsChN9A)3nzZ+GT+ zvr@{H3&V5sOWr~-F>qcH^NUxdNiXM0HE(WF(UZvz+}D~d2VTLePAE2S;HN6J`I4Zz zGgJ5XN;)d})xVvC>S#)Cn<7n&UTdseio=N2lFLXOVSuD{vzZt7*Yl4ELN;btdL9k) z@eB14>Dfb@oGGbop+hG2vV%UEen8I0d5~%0m=Tsy>FNHq;*hlxLf0vTBXX%WPUQ#$acE5=~cq_@Ff -- GitLab