From 3191c5d61ad717b1e95af2ec758372af587e5d9d Mon Sep 17 00:00:00 2001 From: Fernando Ferreira de Lima Filho <fferreiralf@ufrn.edu.br> Date: Tue, 19 Apr 2022 12:57:37 -0300 Subject: [PATCH] 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 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module type="JAVA_MODULE" version="4"> - <component name="NewModuleRootManager" inherit-compiler-output="true"> - <exclude-output /> - <content url="file://$MODULE_DIR$"> - <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> - </content> - <orderEntry type="inheritedJdk" /> - <orderEntry type="sourceFolder" forTests="false" /> - </component> -</module> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.example</groupId> + <artifactId>banking-client</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>11</maven.compiler.source> + <maven.compiler.target>11</maven.compiler.target> + </properties> + <dependencies> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>1.18.24</version> + <scope>provided</scope> + </dependency> + </dependencies> +</project> \ 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<Client> 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<Account> 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> 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<Account> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="DBNavigator.Project.DataEditorManager"> + <record-view-column-sorting-type value="BY_INDEX" /> + <value-preview-text-wrapping value="true" /> + <value-preview-pinned value="false" /> + </component> + <component name="DBNavigator.Project.DataExportManager"> + <export-instructions> + <create-header value="true" /> + <friendly-headers value="false" /> + <quote-values-containing-separator value="true" /> + <quote-all-values value="false" /> + <value-separator value="" /> + <file-name value="" /> + <file-location value="" /> + <scope value="GLOBAL" /> + <destination value="FILE" /> + <format value="EXCEL" /> + <charset value="UTF-8" /> + </export-instructions> + </component> + <component name="DBNavigator.Project.DatabaseBrowserManager"> + <autoscroll-to-editor value="false" /> + <autoscroll-from-editor value="true" /> + <show-object-properties value="true" /> + <loaded-nodes /> + </component> + <component name="DBNavigator.Project.DatabaseFileManager"> + <open-files /> + </component> + <component name="DBNavigator.Project.EditorStateManager"> + <last-used-providers /> + </component> + <component name="DBNavigator.Project.ExecutionManager"> + <retain-sticky-names value="false" /> + </component> + <component name="DBNavigator.Project.MethodExecutionManager"> + <method-browser /> + <execution-history> + <group-entries value="true" /> + <execution-inputs /> + </execution-history> + <argument-values-cache /> + </component> + <component name="DBNavigator.Project.ObjectDependencyManager"> + <last-used-dependency-type value="INCOMING" /> + </component> + <component name="DBNavigator.Project.ObjectQuickFilterManager"> + <last-used-operator value="EQUAL" /> + <filters /> + </component> + <component name="DBNavigator.Project.ParserDiagnosticsManager"> + <diagnostics-history /> + </component> + <component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true"> + <recently-used-interfaces /> + </component> + <component name="DBNavigator.Project.Settings"> + <connections /> + <browser-settings> + <general> + <display-mode value="TABBED" /> + <navigation-history-size value="100" /> + <show-object-details value="false" /> + </general> + <filters> + <object-type-filter> + <object-type name="SCHEMA" enabled="true" /> + <object-type name="USER" enabled="true" /> + <object-type name="ROLE" enabled="true" /> + <object-type name="PRIVILEGE" enabled="true" /> + <object-type name="CHARSET" enabled="true" /> + <object-type name="TABLE" enabled="true" /> + <object-type name="VIEW" enabled="true" /> + <object-type name="MATERIALIZED_VIEW" enabled="true" /> + <object-type name="NESTED_TABLE" enabled="true" /> + <object-type name="COLUMN" enabled="true" /> + <object-type name="INDEX" enabled="true" /> + <object-type name="CONSTRAINT" enabled="true" /> + <object-type name="DATASET_TRIGGER" enabled="true" /> + <object-type name="DATABASE_TRIGGER" enabled="true" /> + <object-type name="SYNONYM" enabled="true" /> + <object-type name="SEQUENCE" enabled="true" /> + <object-type name="PROCEDURE" enabled="true" /> + <object-type name="FUNCTION" enabled="true" /> + <object-type name="PACKAGE" enabled="true" /> + <object-type name="TYPE" enabled="true" /> + <object-type name="TYPE_ATTRIBUTE" enabled="true" /> + <object-type name="ARGUMENT" enabled="true" /> + <object-type name="DIMENSION" enabled="true" /> + <object-type name="CLUSTER" enabled="true" /> + <object-type name="DBLINK" enabled="true" /> + </object-type-filter> + </filters> + <sorting> + <object-type name="COLUMN" sorting-type="NAME" /> + <object-type name="FUNCTION" sorting-type="NAME" /> + <object-type name="PROCEDURE" sorting-type="NAME" /> + <object-type name="ARGUMENT" sorting-type="POSITION" /> + </sorting> + <default-editors> + <object-type name="VIEW" editor-type="SELECTION" /> + <object-type name="PACKAGE" editor-type="SELECTION" /> + <object-type name="TYPE" editor-type="SELECTION" /> + </default-editors> + </browser-settings> + <navigation-settings> + <lookup-filters> + <lookup-objects> + <object-type name="SCHEMA" enabled="true" /> + <object-type name="USER" enabled="false" /> + <object-type name="ROLE" enabled="false" /> + <object-type name="PRIVILEGE" enabled="false" /> + <object-type name="CHARSET" enabled="false" /> + <object-type name="TABLE" enabled="true" /> + <object-type name="VIEW" enabled="true" /> + <object-type name="MATERIALIZED VIEW" enabled="true" /> + <object-type name="INDEX" enabled="true" /> + <object-type name="CONSTRAINT" enabled="true" /> + <object-type name="DATASET TRIGGER" enabled="true" /> + <object-type name="DATABASE TRIGGER" enabled="true" /> + <object-type name="SYNONYM" enabled="false" /> + <object-type name="SEQUENCE" enabled="true" /> + <object-type name="PROCEDURE" enabled="true" /> + <object-type name="FUNCTION" enabled="true" /> + <object-type name="PACKAGE" enabled="true" /> + <object-type name="TYPE" enabled="true" /> + <object-type name="DIMENSION" enabled="false" /> + <object-type name="CLUSTER" enabled="false" /> + <object-type name="DBLINK" enabled="true" /> + </lookup-objects> + <force-database-load value="false" /> + <prompt-connection-selection value="true" /> + <prompt-schema-selection value="true" /> + </lookup-filters> + </navigation-settings> + <dataset-grid-settings> + <general> + <enable-zooming value="true" /> + <enable-column-tooltip value="true" /> + </general> + <sorting> + <nulls-first value="true" /> + <max-sorting-columns value="4" /> + </sorting> + <tracking-columns> + <columnNames value="" /> + <visible value="true" /> + <editable value="false" /> + </tracking-columns> + </dataset-grid-settings> + <dataset-editor-settings> + <text-editor-popup> + <active value="false" /> + <active-if-empty value="false" /> + <data-length-threshold value="100" /> + <popup-delay value="1000" /> + </text-editor-popup> + <values-actions-popup> + <show-popup-button value="true" /> + <element-count-threshold value="1000" /> + <data-length-threshold value="250" /> + </values-actions-popup> + <general> + <fetch-block-size value="100" /> + <fetch-timeout value="30" /> + <trim-whitespaces value="true" /> + <convert-empty-strings-to-null value="true" /> + <select-content-on-cell-edit value="true" /> + <large-value-preview-active value="true" /> + </general> + <filters> + <prompt-filter-dialog value="true" /> + <default-filter-type value="BASIC" /> + </filters> + <qualified-text-editor text-length-threshold="300"> + <content-types> + <content-type name="Text" enabled="true" /> + <content-type name="Properties" enabled="true" /> + <content-type name="XML" enabled="true" /> + <content-type name="DTD" enabled="true" /> + <content-type name="HTML" enabled="true" /> + <content-type name="XHTML" enabled="true" /> + <content-type name="Java" enabled="true" /> + <content-type name="SQL" enabled="true" /> + <content-type name="PL/SQL" enabled="true" /> + <content-type name="JSON" enabled="true" /> + <content-type name="JSON5" enabled="true" /> + <content-type name="Groovy" enabled="true" /> + <content-type name="AIDL" enabled="true" /> + <content-type name="YAML" enabled="true" /> + <content-type name="Manifest" enabled="true" /> + </content-types> + </qualified-text-editor> + <record-navigation> + <navigation-target value="VIEWER" /> + </record-navigation> + </dataset-editor-settings> + <code-editor-settings> + <general> + <show-object-navigation-gutter value="false" /> + <show-spec-declaration-navigation-gutter value="true" /> + <enable-spellchecking value="true" /> + <enable-reference-spellchecking value="false" /> + </general> + <confirmations> + <save-changes value="false" /> + <revert-changes value="true" /> + </confirmations> + </code-editor-settings> + <code-completion-settings> + <filters> + <basic-filter> + <filter-element type="RESERVED_WORD" id="keyword" selected="true" /> + <filter-element type="RESERVED_WORD" id="function" selected="true" /> + <filter-element type="RESERVED_WORD" id="parameter" selected="true" /> + <filter-element type="RESERVED_WORD" id="datatype" selected="true" /> + <filter-element type="RESERVED_WORD" id="exception" selected="true" /> + <filter-element type="OBJECT" id="schema" selected="true" /> + <filter-element type="OBJECT" id="role" selected="true" /> + <filter-element type="OBJECT" id="user" selected="true" /> + <filter-element type="OBJECT" id="privilege" selected="true" /> + <user-schema> + <filter-element type="OBJECT" id="table" selected="true" /> + <filter-element type="OBJECT" id="view" selected="true" /> + <filter-element type="OBJECT" id="materialized view" selected="true" /> + <filter-element type="OBJECT" id="index" selected="true" /> + <filter-element type="OBJECT" id="constraint" selected="true" /> + <filter-element type="OBJECT" id="trigger" selected="true" /> + <filter-element type="OBJECT" id="synonym" selected="false" /> + <filter-element type="OBJECT" id="sequence" selected="true" /> + <filter-element type="OBJECT" id="procedure" selected="true" /> + <filter-element type="OBJECT" id="function" selected="true" /> + <filter-element type="OBJECT" id="package" selected="true" /> + <filter-element type="OBJECT" id="type" selected="true" /> + <filter-element type="OBJECT" id="dimension" selected="true" /> + <filter-element type="OBJECT" id="cluster" selected="true" /> + <filter-element type="OBJECT" id="dblink" selected="true" /> + </user-schema> + <public-schema> + <filter-element type="OBJECT" id="table" selected="false" /> + <filter-element type="OBJECT" id="view" selected="false" /> + <filter-element type="OBJECT" id="materialized view" selected="false" /> + <filter-element type="OBJECT" id="index" selected="false" /> + <filter-element type="OBJECT" id="constraint" selected="false" /> + <filter-element type="OBJECT" id="trigger" selected="false" /> + <filter-element type="OBJECT" id="synonym" selected="false" /> + <filter-element type="OBJECT" id="sequence" selected="false" /> + <filter-element type="OBJECT" id="procedure" selected="false" /> + <filter-element type="OBJECT" id="function" selected="false" /> + <filter-element type="OBJECT" id="package" selected="false" /> + <filter-element type="OBJECT" id="type" selected="false" /> + <filter-element type="OBJECT" id="dimension" selected="false" /> + <filter-element type="OBJECT" id="cluster" selected="false" /> + <filter-element type="OBJECT" id="dblink" selected="false" /> + </public-schema> + <any-schema> + <filter-element type="OBJECT" id="table" selected="true" /> + <filter-element type="OBJECT" id="view" selected="true" /> + <filter-element type="OBJECT" id="materialized view" selected="true" /> + <filter-element type="OBJECT" id="index" selected="true" /> + <filter-element type="OBJECT" id="constraint" selected="true" /> + <filter-element type="OBJECT" id="trigger" selected="true" /> + <filter-element type="OBJECT" id="synonym" selected="true" /> + <filter-element type="OBJECT" id="sequence" selected="true" /> + <filter-element type="OBJECT" id="procedure" selected="true" /> + <filter-element type="OBJECT" id="function" selected="true" /> + <filter-element type="OBJECT" id="package" selected="true" /> + <filter-element type="OBJECT" id="type" selected="true" /> + <filter-element type="OBJECT" id="dimension" selected="true" /> + <filter-element type="OBJECT" id="cluster" selected="true" /> + <filter-element type="OBJECT" id="dblink" selected="true" /> + </any-schema> + </basic-filter> + <extended-filter> + <filter-element type="RESERVED_WORD" id="keyword" selected="true" /> + <filter-element type="RESERVED_WORD" id="function" selected="true" /> + <filter-element type="RESERVED_WORD" id="parameter" selected="true" /> + <filter-element type="RESERVED_WORD" id="datatype" selected="true" /> + <filter-element type="RESERVED_WORD" id="exception" selected="true" /> + <filter-element type="OBJECT" id="schema" selected="true" /> + <filter-element type="OBJECT" id="user" selected="true" /> + <filter-element type="OBJECT" id="role" selected="true" /> + <filter-element type="OBJECT" id="privilege" selected="true" /> + <user-schema> + <filter-element type="OBJECT" id="table" selected="true" /> + <filter-element type="OBJECT" id="view" selected="true" /> + <filter-element type="OBJECT" id="materialized view" selected="true" /> + <filter-element type="OBJECT" id="index" selected="true" /> + <filter-element type="OBJECT" id="constraint" selected="true" /> + <filter-element type="OBJECT" id="trigger" selected="true" /> + <filter-element type="OBJECT" id="synonym" selected="true" /> + <filter-element type="OBJECT" id="sequence" selected="true" /> + <filter-element type="OBJECT" id="procedure" selected="true" /> + <filter-element type="OBJECT" id="function" selected="true" /> + <filter-element type="OBJECT" id="package" selected="true" /> + <filter-element type="OBJECT" id="type" selected="true" /> + <filter-element type="OBJECT" id="dimension" selected="true" /> + <filter-element type="OBJECT" id="cluster" selected="true" /> + <filter-element type="OBJECT" id="dblink" selected="true" /> + </user-schema> + <public-schema> + <filter-element type="OBJECT" id="table" selected="true" /> + <filter-element type="OBJECT" id="view" selected="true" /> + <filter-element type="OBJECT" id="materialized view" selected="true" /> + <filter-element type="OBJECT" id="index" selected="true" /> + <filter-element type="OBJECT" id="constraint" selected="true" /> + <filter-element type="OBJECT" id="trigger" selected="true" /> + <filter-element type="OBJECT" id="synonym" selected="true" /> + <filter-element type="OBJECT" id="sequence" selected="true" /> + <filter-element type="OBJECT" id="procedure" selected="true" /> + <filter-element type="OBJECT" id="function" selected="true" /> + <filter-element type="OBJECT" id="package" selected="true" /> + <filter-element type="OBJECT" id="type" selected="true" /> + <filter-element type="OBJECT" id="dimension" selected="true" /> + <filter-element type="OBJECT" id="cluster" selected="true" /> + <filter-element type="OBJECT" id="dblink" selected="true" /> + </public-schema> + <any-schema> + <filter-element type="OBJECT" id="table" selected="true" /> + <filter-element type="OBJECT" id="view" selected="true" /> + <filter-element type="OBJECT" id="materialized view" selected="true" /> + <filter-element type="OBJECT" id="index" selected="true" /> + <filter-element type="OBJECT" id="constraint" selected="true" /> + <filter-element type="OBJECT" id="trigger" selected="true" /> + <filter-element type="OBJECT" id="synonym" selected="true" /> + <filter-element type="OBJECT" id="sequence" selected="true" /> + <filter-element type="OBJECT" id="procedure" selected="true" /> + <filter-element type="OBJECT" id="function" selected="true" /> + <filter-element type="OBJECT" id="package" selected="true" /> + <filter-element type="OBJECT" id="type" selected="true" /> + <filter-element type="OBJECT" id="dimension" selected="true" /> + <filter-element type="OBJECT" id="cluster" selected="true" /> + <filter-element type="OBJECT" id="dblink" selected="true" /> + </any-schema> + </extended-filter> + </filters> + <sorting enabled="true"> + <sorting-element type="RESERVED_WORD" id="keyword" /> + <sorting-element type="RESERVED_WORD" id="datatype" /> + <sorting-element type="OBJECT" id="column" /> + <sorting-element type="OBJECT" id="table" /> + <sorting-element type="OBJECT" id="view" /> + <sorting-element type="OBJECT" id="materialized view" /> + <sorting-element type="OBJECT" id="index" /> + <sorting-element type="OBJECT" id="constraint" /> + <sorting-element type="OBJECT" id="trigger" /> + <sorting-element type="OBJECT" id="synonym" /> + <sorting-element type="OBJECT" id="sequence" /> + <sorting-element type="OBJECT" id="procedure" /> + <sorting-element type="OBJECT" id="function" /> + <sorting-element type="OBJECT" id="package" /> + <sorting-element type="OBJECT" id="type" /> + <sorting-element type="OBJECT" id="dimension" /> + <sorting-element type="OBJECT" id="cluster" /> + <sorting-element type="OBJECT" id="dblink" /> + <sorting-element type="OBJECT" id="schema" /> + <sorting-element type="OBJECT" id="role" /> + <sorting-element type="OBJECT" id="user" /> + <sorting-element type="RESERVED_WORD" id="function" /> + <sorting-element type="RESERVED_WORD" id="parameter" /> + </sorting> + <format> + <enforce-code-style-case value="true" /> + </format> + </code-completion-settings> + <execution-engine-settings> + <statement-execution> + <fetch-block-size value="100" /> + <execution-timeout value="20" /> + <debug-execution-timeout value="600" /> + <focus-result value="false" /> + <prompt-execution value="false" /> + </statement-execution> + <script-execution> + <command-line-interfaces /> + <execution-timeout value="300" /> + </script-execution> + <method-execution> + <execution-timeout value="30" /> + <debug-execution-timeout value="600" /> + <parameter-history-size value="10" /> + </method-execution> + </execution-engine-settings> + <operation-settings> + <transactions> + <uncommitted-changes> + <on-project-close value="ASK" /> + <on-disconnect value="ASK" /> + <on-autocommit-toggle value="ASK" /> + </uncommitted-changes> + <multiple-uncommitted-changes> + <on-commit value="ASK" /> + <on-rollback value="ASK" /> + </multiple-uncommitted-changes> + </transactions> + <session-browser> + <disconnect-session value="ASK" /> + <kill-session value="ASK" /> + <reload-on-filter-change value="false" /> + </session-browser> + <compiler> + <compile-type value="KEEP" /> + <compile-dependencies value="ASK" /> + <always-show-controls value="false" /> + </compiler> + <debugger> + <debugger-type value="ASK" /> + <use-generic-runners value="true" /> + </debugger> + </operation-settings> + <ddl-file-settings> + <extensions> + <mapping file-type-id="VIEW" extensions="vw" /> + <mapping file-type-id="TRIGGER" extensions="trg" /> + <mapping file-type-id="PROCEDURE" extensions="prc" /> + <mapping file-type-id="FUNCTION" extensions="fnc" /> + <mapping file-type-id="PACKAGE" extensions="pkg" /> + <mapping file-type-id="PACKAGE_SPEC" extensions="pks" /> + <mapping file-type-id="PACKAGE_BODY" extensions="pkb" /> + <mapping file-type-id="TYPE" extensions="tpe" /> + <mapping file-type-id="TYPE_SPEC" extensions="tps" /> + <mapping file-type-id="TYPE_BODY" extensions="tpb" /> + </extensions> + <general> + <lookup-ddl-files value="true" /> + <create-ddl-files value="false" /> + <synchronize-ddl-files value="true" /> + <use-qualified-names value="false" /> + <make-scripts-rerunnable value="true" /> + </general> + </ddl-file-settings> + <general-settings> + <regional-settings> + <date-format value="MEDIUM" /> + <number-format value="UNGROUPED" /> + <locale value="SYSTEM_DEFAULT" /> + <use-custom-formats value="false" /> + </regional-settings> + <environment> + <environment-types> + <environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" /> + <environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" /> + <environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" /> + <environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" /> + </environment-types> + <visibility-settings> + <connection-tabs value="true" /> + <dialog-headers value="true" /> + <object-editor-tabs value="true" /> + <script-editor-tabs value="false" /> + <execution-result-tabs value="true" /> + </visibility-settings> + </environment> + </general-settings> + </component> + <component name="DBNavigator.Project.StatementExecutionManager"> + <execution-variables /> + </component> +</project> \ 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 @@ </list> </option> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/out" /> </component> </project> \ 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 @@ <version>1.0-SNAPSHOT</version> <properties> - <maven.compiler.source>17</maven.compiler.source> - <maven.compiler.target>17</maven.compiler.target> + <maven.compiler.source>11</maven.compiler.source> + <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> 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<Client> clients = new ArrayList<>(); + private volatile Queue<Client> 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<Client> clients = new ArrayList<>(); - public DepositControllerImpl(DepositService service) throws RemoteException, MalformedURLException, AlreadyBoundException { + private volatile Queue<Client> 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 <T>{ - public T find(Integer id); + public Optional<T> find(Integer id); public List<T> 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<Client> { List<Client> 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<Client> 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> 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> 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<T> { + +} 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<Account> accOP) throws RemoteException { - Account account = accOP.orElseThrow(() -> new RuntimeException("Invalid account")); + private final Repository<Client> clientRepository; + + public void balance(Optional<Client> 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<Account> 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<Client> repository; + + public void deposit(Double value, Optional<Client> 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<tCi z8jKIaexOJ*)#$hqzc-$1U$d#X5#Kjg^Cim6N26Nwtl}%&w=c&-FMR#N8wUrYH{oP7 zekbr?;5`_G!Eo~AADi}VMWc4~(a&bwjJ5Kul)a^>#ottINwKisJM4L~$t&;i-hR-Z z#6OMY__tAySImana612!n`!L0yNV4bJ<6KJ=@~}?sZ)|~OP_(9%)HnIL7sReKHo}E zpR@F$*g{5@sYqNpDPW1yf{L7>Dnrud59G*;-<)D}r<mP@TtdDxr7(l~=;0Kr+fFDx znqqg?6XtH`W>VE`#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`T<FM`(C_MS{xXi9wH z#+0T>D2pdjvMObXp%GCm-wUMgI9w(`hmm>AT0}v0QDmsqjVSrD#AJ2*s+IEpAd}Lj zAth84q<TFh*-r>rVOWidX`0?w;dNENTpsj#44FgU<_vj5c>H+acDVd#b{w*l4Bs-H zQ&S3co)|O17tv=}i`$!4+$Txb6dpsh{@IA9*$O0qsUq^5vP&Z6YupS=c4CSQTQTc~ ztE8k(Vvg4)O<fH`aYBl3m|-)9T^V{DLERN6tk}qqef!Pgy+HV0U&AiLO4zq_g?_?a zKj4vD!()bx(ChI)KQf&&U%K4>bYfhI(Jy0^!hs{XX@76}1J90P2-)%n(&F!gnpI_b z3Jrz87H-kkrJfX+`o3sgrISuOqkU#)2=+5{-=<Z$fjrh|&5Z-FjyrUk#|G|_h)Vu} zG)V!q5w!LY^Tr5S+H*%EEVg%t$RCeTYVQrP{2~);SHqkV=1@if6;i6=KCO!Ne5{8} sDi{>8j(g;ze*u<J!-J5!fQNWQWM!|@TL#-<Y#KY*LxZeO=$yjSe>tuukN^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<W-z#C>#!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_Ys08M0MU<P7VpaU3zwz4yD0C}819t)7>0%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>ryLr<t-R#EArcnI; z{`T4{Z@I<+EX?SPUOHa-Q=D<e3-Nh(x5-92d~~M!?w&p8ywCHT^PcSQ|K9xtzyW;M zfgT)6U=s%9UA_YcG1!Tha9G|QX~)q7j$uezhSQ7~?ZhdZZsi^S2ELbp1r=inBr)EO z2^Fs-a0X`+n8Z{9uVOlZb9haLpI31qfejc}aZ$zV3e>7_7fnMb$QEiP*Up*cVlK4t zzGCHubW67lF&X%c(v(-w=FOYczJ3M$jVQyhJ=d`;;Wh;h*Uc-jgQjhIhZW3Z9yhq* z|1gL<rWLddJ4F&p7ED`=*UGcPoziD5TG9o_(5-3RHRW??Y>|}6Y~1n8(vkvg)V75? zZ0Xgip#4B&??)oq7v!N<akpmknvswc?%rFttS{<0syde&wLRgwwTdT-BUcSk@l3~N zh+^`8RKXLIo^C9R>6H+pX6fbGqTa`hQv6L30gFyqH|^Z8WeVHN%e{JnecZB{J1feL zC!#yF8NQ=}4Gmt+DHJ3ootkTi6Q<OxC+vgfa_*K?6ts_vs&~?<dMai#Y{oMhdXd%e z6rR>_32&%)Q-h9K4F-w|*4d7?R5I<kUT<FX21u$~R0s_v%xRbh`KN{)$E$j-UKtbK zyi=?u+i*FBg`^5Ag*_U|uvIu3DtJqS3)X1!gN4=LA<OCq8dZC*=%yz@Y$K#pBXnZ+ zvM|V`reP6RR9w}tglj6^*6<GARq>vN_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_s27Fct1<jZ^lALEn%<p|2c90`ud zPkB&vLmn6f(~(o~I7;WE`<H6AArD`U{avk<eUjY`nVR5H-jd^v=*Bz`b4b&d;{GJ^ z9JW?1Au1Fmb4orYE7ZdC5B8L+%gMX8(R*?pP+{({s9QBLQBtrzGa3S|PmG`jk(Q-w z)R&qNS6QbfhgMPlVx%A|Vn$3s4%Rl^pgrLaB;8UFa|k69&Dxy8=fC34B$;~0K4emp z>TK`}qo6w~W<8k{t<B{GTclQ9D_!G@5n@pBnTF5tm4<%oQLwe4r)e)b3nEwW$0p~9 zUeXQEaXH>Q%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_`_M<rdImBK+mPWZ z@8mWyrrm*TnEcl;`LXOxC^yk^2dxTzxcAqOXiKZN(H<YHzv$ps&0QpbJLrs|3)(W) zTu1xZuG>gmzxNvx_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)w<TAQQjMn(hWvsi6^>v4C1?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<JVDbScnN ziCU5!<6SvYNz|hStqR&yoJG69@VlX8EZsDu<+((d3Lq9e!;Gg4*GrtiIdm%MQgI&d z3pAd5Ef98%=fp_#Ngu@p6&KOXXVcyg=&JHY!G^)aQ#_@Uh~PtkvzF~W%Te0xZOZNv zh@L2V(Wl^J6_*ebI9CaI(g%YZR?eoI*ioE-*cH#A!$g19M?Rop5JLhH!;_BY*^WSa ztiK9XvLt7o!-y*wQE>&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^TyuihB<kS0&OspLZj6g>zM$j>3 zhy7Uv3&*8%@<x1F=50^T?&var7)25(6^s5*G!<AdZ^hH}CmBc6Wi4lyzlrbt;km0~ z87l&{t|?`KM8_6<-(Lz`2r3j1owQg*r&#dhdR2rBQVPCe6IK+L$*qyEhH(!M{Mmd+ ztkq<3I_+<@HB+*WBKTUMHEsJn>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*Vnf<e=_oW22jUG{PPVaU*e=0?p0-7a))bmirqBJmS-m|9#-uG%)xIV&FBD zfuUDu_&HE~%xeq6yk4d8DC%(yjht7Fl6D%>3~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<gcs>) ziN2QU?GCna7tg8b({!Djr%8fDjzo^5i<+B3yf9@33G1YXEj%G*+a%bR3EI6V5o_}P z3ZnQ2eL}(TA^H$j5c2O8R)S~p0Cfil%`3<pARL_a43MW`2o~(%Y#}hv4c8(ox{c6( DKT8vu 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 d91152883436e27a0f69fc0c37cc6ebde16db26b..9f55bf8b7d1a386ab7716d59ba2a4476c94238ce 100644 GIT binary patch delta 1187 zcma)+&r=*#5XV1nc6MhO21zzQfP|0*f-Xy74M_wcB=RFFh{U)GK~2nNGvL5xmh8-u z5Pxjq#dGSFmsAekJ&6j$l$IASmX;^~9m^h|LRG4)at^Qib@#mY>F;#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&2yJ<sR$gZQyCiF2Os zh36H$nd$06#m{-SZsr2Fvg#FG@mET@u|lcf7v20$Y*Iq{*Z7^$?Efwo4*TNWqPr4$ zWk0aEX7RDbb^S-;x*5xK&+4o-SaaxNKyh%dhtW!<ur}e|uDTBGbXXJ|Zcwzi>EN<p zvFPv#p2HH$7A1#U_zuTOD_Zhlp%QxjVtT?|DF<Gd-tDN}qU^B3ZN=GV-4@G!sFzj7 zju<Kq0Ry_uXzf(&+oqBB7ju_xEV;$dB6O&-YH`QmE^B(mY&x!J49j7ml&;Dx!BDzO z0PnHj@F|}u`t&u`*I@Cv!xu=K_j&NJDWfOi?Rq)UqQ6SC>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><lc|<}yn96RVvQIJQ zH;Mg-xlVk8#1_`vI?3!7b?exv`VE|?G|XpvHhE!##wfPW{F(jpF{#Sewn$0EciR_b zWbGg+YcnQ?XcV9pflCWqhBnR!-lU*)OU2<G1hVwVPGC4muVD6xpA_I6FLO%v{hZ## zuIys>XMe!#dBOpMx%Hah929^E>(CBXlzzft#THHZ=kZbkhG<bQY8((XP6^l^PX9BU zet|u^i(`t-3Dhg{6H(g=o)8;7PU=GQ1}$40`5rscK*@0kXOvD!7lUFAUS&vZbWDS& M0QR=m%rT6A0g2}B>i_@% 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&<n5Gy@RRarTe(IXH?@7IsU^eCQ_e`v{=g?=PBo);LvF@}VE z$P@Cf$S`pY$}WAT+d>k<ig1MCW~!v>$fDVMqG(rbui}&)f77ivx%8q6JT5Q>lOYm> zwjV|@A#do(0tb=B+BlT6mc4#&-Km5fNF&2BDR2^}sB&Y~_p)wnrG48VJ8##V@`hb; z<XYt95er$I<~SoTjk9vgyltuUmjuq?W%-M7iUMB2d5)aGEb{VCV}d*v@G8eefg&!+ zp2#A3F5`8MHw50qoRpE`P$#aU#Bohv9@iPV4ofC~H-|{5x8zrP|LG{o4BcTpw5ubH z!106gBNHns|CYca@(f1cK5!JqZGmOHEloZ~74P6(j=KWy;eDCrXDy}oJ%I{V<Q<+j zIaV2lNYp-=H^g8^*<JJOu;Dulng2cDtSo4WNFm2CE=O5!*Wm|{SJ~FiXz4&iB2@2^ zJsd^J*5&&ZXCrj$Ucf<pl4#%AuesR;r&bT0gKdrmp|y8CC(K^6tE+Xt=B(UWC_NLi z^<NB~Aip#cGNRp;u6AyRLCkrc<6o-ULEum!bG{zBtJ@f*KGeYA&^Vylk$#4v>SFS( zk*(na=wwIWlD$rzM=;3(u4MMWGEcyl_t5bJtX;(7eN7yFg5+{$at}jIj4I!_@e_7V zEbF^Sm0Osih+Vwc#7ql?CGurjc<tMEp$}<1jwp=-Fz8{rag4@6>fvF`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{?8e<qp?JUF z?>gfrzw#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<in8cZ;!$zQ&z;ig8!1FklzzaApoxP~yr35-~O2q{gx&qY|&YY1K3VL#t zqGM%@QXvz{I4_%-K~c6{!y6CuhAGM_X!2$Zx2sn{Z_O%iTb^T^rf}*E2dd&l+x>=R zcn1}nPcPTFrhh+(-IEF$2J8Y8OXdtqj8;lh!kN&gOiEHYJFlCQx?{-qP}m?-VrHYZ zXB6iZXv3BzoB>mJT|xPtTI>f(v@7sKuHsI`;xjEFDU9BkyQt6U8B@2WGsBiA9H&zD zL}BQ1UX(q<wrHXl{0}R5Xx!8Dvm<&r#Hg8iX{w-i(W4~4BSK)oF6oAq888iDd0822 zT@c498JW|fWP2hSp(*bxDp*s?tKNlz#JF8?^5Uo=Ia?R@L47%Q$W#<Gj|$g2Zo8g} zDGeL3NyFpVuHi9sYRIFYLTD&rTEh&O+Dgmz=8J|k-RaGU&H#zKQN=|KvoJN3K*HLN z*tX|-j$R%S-i%#vlTEPOP)@3NxedECIB->X8Y-C6a0!<cY`8bE8s@Q`)ekswJ1^;m zCqZm3Fj~!YZ0e%OGm|SCUcsv>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`<MdAV^EOh$IYa+uCW;}<JdUT(q+``oRR{3KV`XsUxp zdW*I*q~~Y2slzmVD(-e7_hX}L3Q;C8=@arbStb{rzriOQU7o-zYCR~=1v1PCbGlg( zV?_n4(!(Lp>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`3h7<E;5mkTi#USLpZKHJ!JrC%nIc|6& ztKwS)o9`lIseI}V;W~t2-st4E-M|l&7*g_n0NUE*jX_Bq3a^bWJ~#7ij2dx{$)2q@ zp!EENSkJZ_h+m^9hAn)i(7@-DXv9vmuxJls7oMPG71wEoG`4b-GZ`jEx7)BibpC7T zyuar<l<R1?g+>KG-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=yc<pNf3UBH@~SX)(Fr{K(e&BMeWz2<|wz`MO8OnVcW3H1<5d6@O+=j;eB;3zc) zQNR!{{$tgY3x3MG{W=-dIvJ#B5B<uNTM+vjc@-TERNYHKjNJA4V-`IeQ<SXdr*b#P WFYq<KBzwmw*XZClAq|u1lm7uRvKrd} literal 2181 zcmb7FT~ixn6n@?iSV)(GKxv`cf>IkkN~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&@M7krlv<GqV2@;)8?7!as8ed!v$ z;|jD#d#j>Kl;zBG5HSryI<Dg*ftCvBkqT*AGrW}C@`H4rDvO&sZs9fqu>*12k?$aq zxs`R9@#7jkChBoXvQFMG?bvw0c-=jdoyuPXqqwVKOvfj<ccM`yoZ^Z_hP4gDD$2Q> 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|R<LEn^ z28+rjtp`innsU?txbmuZJOl#iXr*j#w6Ee7{nN=N9+Mn*vczmknzl?8^DEL#t5{h4 zq?0kMMZ-1Kb6FTxt50CK;`)t3DX-2rC&ew=0)qa_%ixrPQLU~t{A8+vbYfDd(^WO) zr&Wb2!sI_8&=^#F)+m(Ih%7ioHzTJ^m1yUw+kQ}0lA9tWJ%8HqI5>L3wxv668J;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<w|dlw(nj2^$}6__2^$2EZ;F~pl20)JvS#rKVE7}-Po+Ai+zVR9djYOsUIop48Z z7YjRwf45<A51;Lzes*9NU+x@!e<Wy3{)T5u{jXvCp#ZZ4+&SE0NF&U8p5wQS6-Zw5 z@UX$N1}fncT6v8#ox3=XF?4X*jo<-orf4;RG$yfxhtyBdK1mNVWb+Y;n5CyV`kJS= z$Jivow^#_s8YA;*Qjv#EI!9O?2L<Bg_>{-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;YQ<Ib|9f6Ph#oo-JLQ$U z;Iv|(cec7zDP_G|H?qE4S@R06=yEYT>6TZ0FPPuSO-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<crCwwDwOXd!*4l$_^j%iDFP+ zRf8=SpE`WThQoaxJnZPzlhKsE8SBzt#8Ud(SXw7lE~2=izflw2|6%h;--06Qhx^r2 z#yS19aY;Wj26QgcqgNse`uE6qLRfYktABMpU>>#<rtjTz^_ON^KQWJMBRaYvCU(jh zRveTQygzhP4)%Cxt>n_84UQ5K-NOr_UzE&O#6-bNW*e1xjIp>)<VVa+qKViR)??y} znf`5>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-G<S%nz9Tk7zRp z`$rS|>PXSV^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&H<loxZVFq5VxQ-VF4DsTNRFzdw8LtQ=(EZ?1){0>t!+}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_Djs<V7;zW7qi?f+t^g8Wub%BXfz zy4r~?1~KP(jz3$mgTSFi#^qY*u52PhW2b?^p|w{{AI<)Z8d~zLlC9wrM97Z9C3}rL zk6@4mT*&W$<)45r?V#f)nA?aaUTt9i6Z9?RM|Y5FAftSP`Y+fTUW#mEq}0S1MQr2s z1}2)AUL;?>i8J4~8huLZ0AjTELPwGi4$`~y(}bolfiz(aV2(}|irD`Q0abW(A{f-L zPMDvO9V1{LAvWlI2b&6ei`;&jdp!Rm%+bfVpn>|w6YsW&;)!|UBusVt7*`pZSZwpY zz)KJqaF{e3A*FIShWtx7<Ii!%aTlMradg@jeWLn;09Z@HLE6<P5}gfv(1iU1;;IRQ e(m+K4`{*yeq+P>TQ244$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 zcma)8TXz#x6#h;!x1<vYu`L7<xfE@amMC7pq(z}n2)%%miwY{!WNe3~Gc}o@_#b$8 z`2*yI2VF~WEgoF@f@}GkMEuTN(n%X!vdEcz_WAbh+xr~&>z}8;0XPXeiyY=MP;o&n z7v)mdaVg91yj&I}U{Oj-a=9$GR|>SfrsKMf8v^-`-FB?j4ZGcOJokG2oPf9_kel_~ zj&HgC4Xf3)Ra(eDDS?#J6nJIfu656<v@CbEQg?lO)o#}WG`G94Vz&hfiQ{Fz?YOHv z)mJRy8+QNkIj_6YvZe8~<2wFnf$Dg|I(D8=MGh01$j1b$QD(g+BkW#qTze_V=9)$S zGN#vHl@@E|K2j?Fn$r;|E_A<YyA@}nS!sG3mg82=G#Xyl^_f<BT)I_PZNJXCN5&@- zapU9!GCU8%2@LmPdgW&cIU6(3kLhuscET{DgD8-BWC)1kj3hx(7>UUe(+kuGO7NuF zUw5q*YwrVGUb$;G{My84oB^-DPtg&n@ccE|V_kALCWpZYG=XRa%3h;$;Yn{l6dcD> zVuq*jHn;3sjrB!qGir{}u-x-9OGa3;I%{EP*^fGtxN^0=c%E5O*4lQb+w$3}Fq^Sn zIDIVkZTMcu5b0U=y6uKN=g6rrqedT><7{F-4x1Rph>20`HL(vxfxR!84HH#VOdP>c z6UU|W2HrF=hGQmbnC87Y>v?|1Z(Ey-w!h{zJG(X9H1LUuPeFe3TNfy#mV*<h9Ivt* z+(_p;IjLFP!fk;gQKI8cb4E-a3hR<mRP2nHV5%F|y3Kpru>6~jPr||*%r4I-XC)rn z#3V=KlhDMol2An;9iPh@EP=7D8XWhYw{BNLNSMN$)$qOceH{(<Xu<Q=yPG7u?z(n+ zwq<oXHuL&EnOEc^r0b&PHd}UQEHtd`Oe3M`GrV?x(;fi7mB7bio=`<DX029h+41d~ z4i5IQ9rX>$P2k{v<8YWSZw>;xpm4-?BTspcd`(f{kMkDD9J%1jspHoqW<Or#dVssz z#3}p^mwtsPl^-KjntY6OY3ebQp98DcxN1ZL864zV3h{Uyhq$9<5J#R5%i*R!Dalyr zAkyI|QiWfMQe~v=uCsw_nHm9+YtAN)?lArZsh<c+VJolvKx1B*0mkX=#)W~#ymAAK zmF>pE1C7Tq5gAvRr{qHmnB89VP+&b8B6@sk5ubugmk0St|6f0{8<O)$Obzn0qrWf9 zNA^<s;bRo~5vQ1QhIKtCmwtq*JSzVI^#`cwN9Et4E>4!7Knu1M^rcBIRb}c=3>B4U z*z*wPR8e^XBSvJZDj}JwR#YWMdxpY8<cexhOMtRfouF*hDC!bqL?FFr#31Dn6G|t> zA}r^2m}rmQ2Y3r_vy2gZixV8-6kk>c?@*T};SIb?Nx=oo;XO(!7V#0@r=+39>voco zjyA8)DM|)DV9YX1-S`{3bg0iUsw2n0hIo#Bp_oaEbj`;-WRb@FPY)fal0KPza;THd zh;M|v8z&f7HiQ2Zgl@!f+G(`Dp07<SGXdoX^0hS*Zsf}kp-(-*&>gAIR26wpRH73@ zwjn&qR@LB$9SDq!q8c0>7)<KvFknP#8douc(@aOj6?{l3g)HVtoFw%qQ$9mUp?)vU zQc?rjzJd0F3Wc-@L8>6c3&OYdDXAEN8UtdC(yxkOS^~C(+^!{<Y0mbZhG|BWZ%#qd v#$Q&_^ptNTwqNzIAK?pC=oNl0=-PSQ;WtZ9Utk4a^16J?y}|ue{+9m*##ke1 literal 2901 zcmbVOZF3V<6n<{9Z%H>$LR$zT77W@ZEm71FlNN>2N}vU#P!v$vCTqJi-L1(6#s9!} z#~&bH_<%ElGkkFL3(okPM11bPq?-~P$4;|*?!C`B_c_lw_a=Y-{p42wv#_&BA+19( zp+XZFzHQyHDlN-ht6W^YZ8v-YZN_mO|D-^AVsa$|0~sAz6GJcs_I1B%yA@}%S!sHk zmg81VH5y*mrB}*n3hZ6n4p(=5d(CdwWQ1KNc4L^K-R|b9-4@6vfXjZ{an}M|-o##v z2<WR8DK+eV;2E#G+Olg|1{^c75Bmj-hULzG-L+Z*qZ5gkVJ@}F>k@px#49)`psv|| zoh(NuCKJ$@rxfOpiPvOU&6Y7c()qB7BY0gPOXt%utC7A430_A{yn#0bGDKg9a_t94 z*~;A}O_We(66;oHea>q#T}ochvry9}j-f)mH?0kO&T|`<f6eg;ay!1|`W=Du$#ml! z5@|*IBxWL-$=oB5j<*Fyg3>u&W!Y{!R?GR$qS$PZPB2`t+a1Squh!29h;stDn97RP z>e?zP%fFOB^?&nP5l})Eb}u@v9m;nlWRYL=8dht?A~UjzCKZ3(p%R6~mo#OKCGUhK z9~;DKk~?Myhzr%%L6I~PlO?8C`aV!BDM7;PZ`P;-Nx}2iWy|Z5ZBd>QBbW(HGnnjk zdoEn*jfaBe_|TZ)YCOy>`&MIP$=ZtKP%mAsFU^xloekW!JKYwKWjfrk*bAu_V}HZ< z!X%mDve#`l>;*?w+>FljG1(AofYYAmcl@@swPgG2UbC}X!>3t%hU+?R$TqzxP~1ND zj(f-3uq$EYuyYrzhVQlS3VffeLIezhp0(U&%kC5xJ#VACRZDbjRENY&pW~IgTlN6> zjRZcv3ldXNh&ij(T6TQ9X5b5fBT?QHPIFdFjfXNxE7EROOj4Y>>)P$PmeuLl9Uau? z=nJ_IN=ZjU;LyKAS++2L9OlK7g1}o)Z~({g4()g4`NDhr@FosyUa7&GS0>*kF)H5Y z^8`mXiBtF<Dg6RbDnEi=ntFs>Y5EcN{1kY7z^6tukU^EtQiw+lGaS(~*hj99$jh7Y zq$T%C2Rlh$xl@I2iBjcGJ40uK(2^PfQD`A=;}@KNhW?PC6t;N{4|L}JI>0%%(>XuT znOFG$=RG@}M+Q32;$-ApB~Ph`7AU(j>7l@TEJXD5)FM3vKEy|Z;^h8o99a#i`6-+p z6z7HdzKoBorHsR`yfBV9LCzWGb+26d5vuZ_{5y;vpr#*`e}l0!ReFrkU`V5IVTzBc zGW`dJ3d&RLxes%?pghK_F=D)`5;9)Z3aZ3tPm#ZmTtO{p2~e@B6I84k1zm!S2&5N` z7^FNPp>(1x!gOwiM0@hy!yL{qjZu7ydA4v0ML1aCT$-)jz{j){J{NG7mWm}7p-xLf zi^uI8Egfxk=6PBM7P)5`rf&R&T{?_s7}JsBzagGse`scsCPVZ0NT?#I^5+l(s8T-3 zKH1dCV#Fsxo{f3#D~rKj1YsC)jD8xuuMXE{l-WS?gTu9T3T_OS??az{jEP%ve!Qy4 zg@O{T7_toEQn9KAORPZPWE9k3>EK{dPlg*tqNZ_~GF>1Y6_;?4Rti}Pbcs~cJV?j! z2`z=EVjq!GR4Lmx(4KQbp=?4>DhTnM@a=I*PK-j00Wn7DpNe2w0=A9ZIZH5UF88j6 z8SW_WoV=8cpQ4oM38sLZM?I`ZcthoTiC+n-b`>jp8;o>~pU?3nM_F38u!<%M{{Y8? 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 zcmbtWU2_vv7=BK&o86>aD6uUBDxd~Ula?rcLDB-HPzkgJTRs#}*(PhdG~KPq2F3rt zz2gs%8!mK4aE1#<Z*a!nB;s@SY|=Ch3^TUPIq!MT^M0J?ea}h%{`bl606vD3goZge zd?JVQ1}Z7e7vyj;g+a_qX+aK)a(O9Dvt=n=F>uwuHG!d~({SzjHK);ZeeY`Jtbn*6 zFgWXb&A|48Yj(Zm=rof*LLlbW1YVoJW8bxlb=zAlR=mJjbsA*>&9gTgfppjAa?o(S zRqh#fwd%LLKp->U`nus2-HlqY=5N@pSDaB>MCq$eP@(^k+<2Fht_ZV!jS+UwyPmVy z+E{TKSL~H~7}Kxv5H^p(b)?jSHMc3SZ%4q{y6bp>%!=_A!=#6|MeL-VA|Ogn-~cf% z$-Sv^AI<eieVj}i1gKym-H<4jM5Ku5L>tS!Fqp(9oNroooyXhe?9$2|ry7*UZ?KB~ z_EJP!B-szvoCfoe^kii@%}^7H$xx{ZnNn)Cu)>W_6$jPc)_OUxtLqE)X2iW&wY_sP zLwaAcn`^3Y@!WWY30z*PESzJ8loJi7*{ZWG;$e6_tD>3Nj%PFQ6-5M3xt<%GBseE2 znCYgm-6UP)N6fyI#?-RkYE+#$S9Z~WYK)_@xh)K1#KI`{TG)q-z-Vvj71-i6oUpJT z2P_n%^akFv@D{Qbj^hOH*BRdrnnA<fTyTOlzt-HHz;zR!S@;|`EX?2xF<ZAuRY_nt zRJnd}IlP|k_p+~3xQSZ=hg9U8TbmXWhb3WhjtH9;;{tm(>~)7XxM~O2-GJn)yUcD` z`oEm*<k!F#@-VhQcIzCjch_HcimC)ElR3K@_>Fr8s;uO^@2|Hu1+0qaIgQ!6-E2Bc z?}zU6A|Hyk^R`#3JI$;zEbmOCOS8@J%Dqje5Bz2qzI|)DRFR8WyIx;*1E*|&_vFZq z^YzP3;NZ(~Y!Qu5u)r?P`>`8Cl=tv?jUmks`!1B(dg09O<7^SbCgV89Rgtsctml7) z_&J2V&M^@xhj5UxG#~(naG0}@eaW%cIM!>N?rY3`?qeM9H6HG3d<1Vt#w8vv#%vP# z!Xt=ZD8;aqcQUjdRfs5Wc_vASJnlQl_45;ZRX>tY>1Q1IetzPw>PHqt`r&m~e#CL+ zoaAZl7xF(r*B%!Bg!Uu!_`|{<&=w~0kD-T43W>!D4kc~!FAQX~r`YoV)?`L|45N)O zOFAKDDUs17Ch-*M2N=xgnM4;TSuzMpmduPHL1qLpGG-g3J!C@h9rWH(iFW9{k4YTm zF-GtmyXr6xl7)+Rsf&}QD&C{Se=jhHW0Z6(;56Q+lt7&=^#LUV4ff@SluUfYm<3pd z`44s((4Jw`z##uj@eKQvnCuqmn$M?V5hpmy?$9NDGW!=bN4u$Idlwm37K4wiawCq? zE<x+7L**%LI;4DTsJuqP&7r~r7?Y2Yx-Io)Ns}8HE!r_<8Pry?q=#FqKxkxU^l)pe zKdC2Gz=+g1mQX^O>FBtODM~S<a1ql?HO{YwV>n4k<G2^6DCr?>-y-px3XQZ0L8|!A z)^ozQ)-kCVf!+qRG1_)j1WR<mwvfGAf|=&&&eJf(i1OJ;OWGtw{3M@X0O-By>awaw zCf#{t_;seL(Dg$72CMgGrTV@TGnkExZ;>&LX$<FS9KIF#iARX#Cm&(QEgcAb<rTiu s*2B@OK_Buvoc^RFZ*H8wXSs^u9By+?G3J+8!B^b7%(cn&r~EAa2Vg`hTL1t6 literal 2918 zcmb7GU2_vv7=BK&o86{cC?PEkR47`sP1;6LM@-r(l&?Tru!W+4$~IZsrRi=>HYolF z?j3)C+;E{Yf-_t=dV@3mCb2$e&n8XN)WJ@(=RM~<=RNQHydS%N{qy`c05foU5JTL6 zW<f_nV6gF3&C9!+m3+nDv|TShS9KjP5Qw=Ify49n?FV+gYI|$>k{38@POT^vm==1F z6wo|-(-BCu!Ip!X>#c<-%R(Ox2pD#`>^G#+%zWo{XVq3QNv-`B4k0CAmTm9C*A2TW zFfi7p`r7J!ryLZ=Z%c66!T<&Z^ff0a(bR#l@iu7F*d&IKF>utvF{!zK#~r0iAmPZH z>Qd!v7LMZt?WM}a(6RI`rIBkAdeXw{ctapbXyk&xF{1bPZwRL>yotBy-@092pYtnZ zE<QG1N-;3w7P80*9NDxtoH^es+rce2Ajqo+wina|mfD$Uy4U7$WZb?6w6oK4WC)WM zrjREM)2`<Rv!O*R2Hp`!hg`XSe%YzHcGdmPUaivN{(3lFacXtf_imQX3y3QMeN9tW z>}tc&>5}{tOcCYi!Fktn78{$ZPVI(Ll$!U;c6G(3aw?7%wP4+)vqO8_P-$6Yyz467 zgWdQTUt#nJP|@3!Jdw{5ktCuOwBfNmcQtcTVuimuy`vnY9e%Lx)Oek=cvKdP8Lot4 zPq?UxBdM0v#0od;W<B(&y`A}TV3#)*?5&6n{rXaA;R3BFF+w$`-l(#O;^7tgsM2VT zwoaRYue=mE+l`(7lP!{_Wxr7?I~QFU_Fff$DVY>Zf^)tf)PtJ6wcrHnex-geflrh8 z47Uy3k*R!FV05R}T<?Lu;pCNZD!VV*<-o5!6!^Z~(g>)OUbekT)v1rp`~F5_tJuZ* zJvXR>Hy&;|UEp`xG(=%+FN)~yIlEe2b_1tq;tPQj%Iz_?G9xBNB;#_77@ra20#?cM zoZ4K~uGgKq0g`iSAG3D*W1uW>{J)_Lx^f;T*>i><@HR9Y#c8}t`8^g`4Da*DP9Dna z$>GSZ%h4i+Et1a<ILmVs9QEuk5I=>mGkhk(#eRH9Ssow&1r#~bI-KCM^RUr*IMwwq z+hdo*y`6{CT@O$5O{H!w(7l+nGn;z~@iV0ucI@s6PY)_YWViH55+dE5#Yf%r7_X{F z5-Rn4jI-VJ^uDSd84#(5FCnEzoT1G<^yX16`y+JiN$wBCet;f-lKUO8g^BDl91N!v z4lhpdQP3v;L~llWfkTgBO=h%bIMPH67j!~~3yF*_F^LyQJw{(f&m`JFBL#z?k%E~q zB*=_FM#gM{v?nwuzK7ns%Fq_Qk8loibYlSD;yhC&hEce<z_mClzl@8NG+g3%iIR>5 z(s!9s0#)X5iIRaDsklPP#8uvzgJqb1<A8zKOAHzq;=d_gh9kwEc9E+2k)T*)^!cGe z1-hh9TEAa%G?QAU_j%qcgTZ&PQX{5#PFB#({^GPY6H-3hUtA~QW`FK6jLByhy(ia) z3!2=>Xwi--!=ScC3VOK32!w~sj2><ccPDjLT^NxX#}ejA6kjX2jzvl_X5Lj?qp5Kg z(rK<rQfF}lpHR|6+P*<zn+qCg6M{VPb-PXY&Ya8J43pjjG%?!lr3jX2gY6(YR|%$> zORd&0%^PLgNJ-ixMf{CC#~9FA>Z({(lS#Fj48J~96xuq}ubAkptYp_dF@@#m@Le*d z(TsGKhr?cxop=f(JNXoQs<b!Ml~wpwTBpgX>V|3gaZ7#FCO=^5U>r9%i{U0#IGVik 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{wPN<g+ty!1<g&F^CKo12<R&4**su9d!Tz delta 175 zcmey$beD<u)W2Q(7#J9A8Ti>5m?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#<R%&^(Lch9+Z?>)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;<r-058hI?lBq z;U;bgNOW(sh!qJXyrk2W6ho7>hCWhKm|@Ug7BGAsRjAi>OEXDTQ<D?ZGuhnioQPFU zQRabO@!_?AzBR6fk(Gue8x7(K&&}qtGt-0-QIW8QbqQB-O+poKB)r9jh#EI<QuEs( z|0ftyyDfHGCQdO0-0lYNltjQ_2jfbM?$42|T1s`7%9Jd-O+F*OGohAs%hr87x$NER zm`RfJ-E`;ad(AYM*35e>E|lN0!X?4&W4ia&ZA_kX^q+kL=#uDkw5*r;RC}FbxRx#w z4>8T$;svr_f-;Rwg%l7!TPhb%Lh3|6y{7__U4nZ<o$k!zE<JS#ko4#eE)x1)r<o5o z&_i=lGmW>&@)44~r;<K~kUoKL+uuS@)PI72GYiHbwh%r><QTo&AK-q8`|Vj@4E=3? z3j<#<_}PwhhsFdw$oy^gqnAbrY4l-*<|AZv<5I5oXeHo29#DQfr≈=o?Fa!QkjO zM89LmhhOlu5c@=SA2@f=&O2&zC7k^(7a{QwkI3(w`7zCsNYNh7o}m@5N`SMUryKU9 T7I5htk~G1c*(k>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<% z7z<U^Wxb#sKNcMkIyytU?>A!^`1ajUv}BXV!kNX}c*npQ3uo~z!-?Ffk#r=gExlNT z3|F%(i6avj^@JlFj!Dj)v+y3yljOGaTMQQ`OCEYU(pn-gP_<CQ8pCu)#5=^WFz_fD zmqFDgE@It)ZD9kK7>?zQ&Q4H4;-^0Ms22;mhIHPX>H`Cp8J34awC3s^EjMJx=W#z2 z47IVIZn{JCXc=1$)n5-<gqd@tFK+j{`y$-s`yNH+-Jr?6JswJRodt{WLrF^4az;(h z#9^Zp1xfZC*Cu*k4h^Dmf7|mY-N3$lz!@$a2p(F?dELN4l57mLhnOTC@pyN?#aC4N zl?{gVNyxm&QQN8y7+8~G>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<L1ao^skZhE zE8{FP8cQi<shFz08Twj=E)#gQ_6!$(CaTv}Q%-821LRp9pA$tf>%<qhk>I|h9;9CG WU<!Bf4R*0d5tGh-hx_;eC;tP+Ju0OD diff --git a/banking-server/target/classes/ufrn/imd/service/BalanceService.class b/banking-server/target/classes/ufrn/imd/service/BalanceService.class deleted file mode 100644 index a3fa528b1ec10f571b2fa396f9a310eddca7e4cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmZutO>06i5S)G5M(u}!2Yc(aUJUeVD^zGtg5U%1F{ToEFDWsR{<a?a1N>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<tnkO#I86S3l6}c5JMuR zf)xvEX5M(7p1#ko_YVN~I2T9=*YUM>(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;o<QL%Wu1J~+Ou=|(51_LthITz qC3{}{hI9Lqg-H<h_#H4-Vp;-+NHFASz;%RUoN}LF%zq|rclHh6K5kS1 diff --git a/banking-server/target/classes/ufrn/imd/service/WidthawService.class b/banking-server/target/classes/ufrn/imd/service/WidthawService.class deleted file mode 100644 index 87f4370c406e13dec8e6ee9115f250d18054b342..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmX^0Z`VEs1_oOOK6VBsMh5xPw4yxy%-j_H;?$zD%;Z%4@XVBwjKuO_2$!9Kg^@uZ zE3qt5KPNFSUEe<`D>b=<oq>&!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(<fTH+U4i2{-&<(J2PYwNTKuP-g}<=oO{l>^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<svoQWi;)txuXw(iwkLtttb@#%<PbSk=OXJ&nu*%=yAmUT<F3p6u0+641P)iWJi zx3Xim1>&<#kplfW(>50Bm1V<S(w8k#QaPufTeo%Bl;@Bb_g2iBz<A`fX1MES!C*jD zD|0#Umk((3BoRelkc3UI0(;tFA(A?62@FNHTO$%k1eO?>UMM(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{M9Y<H*oXZZ zN+>H>(O_bg>T4P-R5T1>n2O<Tr$Zo9>BW)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<qYk*)yG?x;rl~n|q15K3w|PsL6Vom^GN(<Z zLOt1*{Sl&BORsT8D@?|MUSW5&mP*4}HwA*1N?@X$*`_JE<z-XwnTF5twT2gDFQ36# zfg=$D(_VMhj7-j-K<t0Lq!)tMucs276nx9H<s4_NUKP;hZQF2t>;}>Q-3%zS7fh0C zx?Qx4+DM?7-JXsnN{iwWAAn}@|IZ9u?yTE<pP}Vh-LmqgXJi$8Cva?Ae%i&uDZR5C z4ztI5_zyFP4vt4oLH_Hc<e((&8SXo90G-?)#3BCVq)B;#1S!Ck6OT#920ES~c76O8 z#7}OZ^EV_q@EFP_W8u^Wx~Aekp*y9<|3J^3*l>IUTK*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?0<LX7fLe@F68>ZylF{lJs(a}jtMqCESdt^Ct%<Ok5jJe&*VN4UyQ zOYPaf-bWbt8Qn6DW)Ho@aGtadOyMi8D!E_a8+^&UXL*(pPE+OrW^ggwUBktH0Slb> Ao&W#< delta 939 zcmYjPOHUI~6#j0fo!brr9a<g&0)-ZA3ph%BQr-_01&daB_#UPM6v~v)mbf6{H<-Kf zN0|6XfM7Ii+^E07wF_OibzwYH2w{@BkMErGo$s7;U)O!n#=ibL_zYkGD+*kYINT~c zkQua9W6RKUhP|w(7FR8^$RPJ;?QC(7L5jv^0~F;|;e#T$Ct9gMMI}d-3O_WVd*+BL zAmVbP=0go?IqFo@;|xPo<XH68dRX$JQT&k_6b02dtD+e#VqA_8Q3!1u?JB~Eh!uIB zkWQTAh^mMoE)L~BqV5)b?&fYU&NKKY?JXmh&4dio%$Mw<f-YQeiij)dMS|m!ip#hn z{>ll;)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&A<o-^`U8Elg>kYF5D<<~bHrJi=qK%@b~h?@=-0 zZ4tltn_&%4NmMj;B<s|?l71P_6>9zq6)DVUAo1#?ZCjgTIipapNL7ZRLm1wA@x#l- zZ_Z_oB}Q{NhIVM=Q~CT_X#;J<;{rpH{zhkzG<`Rn>8a2<KsTLsM!P4z2lkE*E)3G@ zn1Kom(W)LfU>GBGV;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%r<yyMrjrYI zHN|P!4na<7?PW?p`G~HCK+hiZw}i4&^=a_p-bpJWWOF_>P_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)MaxJ<AkP*()3G%xHL@Tfo_2Ed+?g?LW2RhKG~9WO@)8mmN7t+c z%{9e5T#S3mW=X<m4M)jvS54huh(#+o86e08YtvjJuI5$ED*FcgtVKad*rfXbtU;2n zxe-vpEYp#M-kRh31W0HJEHMw7t~+JhlhC(L`dF|<R6X_KT`sPLIMx8bhIv<}F6oA! z(vpm23F%wQ{suP1xwK4}w&@*}uyeQ;MdKP0;zw>KbrW}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<qxvx_T+?#Xyv#T$52##<`h z#yb+)=N(V8#s_wd9n7mFCLUOSP3!ukN$8li*$!rIK-BY~(4Y}zrfgXQXT*wx;c9T4 zZ`4{c-c|7)-dFJfK4fdG)5`|>-0~5*1(VEEaJ<?fD)<N=v*+qgItVqTkS9MO<1HEN zr0r`GKIi4jwk{|nnJpKK>|a593EzjmU2Eoc$DOiD#{9DDT$FGiY>XS&h*n#Of#gB= z(>V#<YXE%un6^D5VB2lgs2lbMi6d{?)UTt&HTBSA9cVx9PkAPE9I}Okt@K`X6xLjg zO19i!D=>0gBV?V`U!UcWmg|ZvSYuJ;e9m47c$1AZNmlb&bT%(iF&Rx&)sRv$ysESA z1|%f<F;dc5&*jBMrpY^QLE|AGj_L%vsdEtu2oELdJd|21F+Y>_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$R<gX#KC!mf4sX%r7HjE&_m zNJi=8f3vM<LcgG0{)bBl&gR+x-<v4W%=aDG$v<yHT=^F*`~oX`uW=m}H2sCx%;+zO z@2jBsH?%b28sxQ&@pxang4XfoK7K1`t3cVqpMDkX6{tU<Be5y=2Rg5!tAg9aG!f_Y zY|IzV2FpLvTMWDS+>JIqyXn6N9oRyYy|@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(<Q7aF-&Qf^*?z2l0xJ z@;f%4O>|#D&kvljBKQov^irOk)KGp)1Nk1b;t2B<*dO93K5C-3g1)Qh{}~-3j;MzY lVt9aSO?VJraa6eb1-`+TJd0zTiwKWXCXGo<g>N&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|3Wo<h;JZ}%GLLZ3%1LD*|9d?%N#mK`@YF|^{LCItpCC_k!we#{|(VH}YA zv}81lQT(JKC2$aj2&TM4=D*vCxQ;P`wq}=#6^BbOjw2e53jBhEysPzf>G+jkEY<S) zo=X+G%rqu3rD0lN2FK-FZH(iLV^&}e^D?B*Bu){!Yd6bo$|<a+*kjAd+Nt>le7YgZ z3$!K&X(Sxlvhp>X5R<Re)=<#OE|=s7>Xb=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#mIz7tUT<fhChmHfu>Y&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)<Wt-i`aRC>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^&<<a6m@LfdwquA+ThGu!3cd6$Psf zs8}=5x`K$IQI6Q)adVo%m(LYS)x%6aSIm~G#Y~}`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&86<QrRp;3MIuOq5-%!N8hw)0F4;z_bV)q%7n=SJFL)pl zet;(uzek*@gqh@g=X~EcXU@!L=rgqW{{8X>U<GLt8g!0;KoB8@aLKuH<f&6Rk=dh? zTksh|%U;FvR~hu=RL+Ef77kOO6{7LM7LzS#M+Zk(Ac81E&*kw&MSA6;y!5@(n%r^9 zu3dEsZhd(+r@V22PGyYmX7~0FH!{0fdwc)T&g|v3*E0sX89Fb@-jbB*g~hpf+UX^$ zD6N`-1OqR+)w7!Co9IJ7$AG{fh8kQuFjeajfl-XrZ)ds<SY$qO=phAHNs|IelI{}q zuj?C(5Tnui14yW;DNCrKnn)d*NOnREOnnT+DXJtPBMhdV!0wxJilUMM9n%!WuK_cd zrOLqE-{Es=q}JM2g!|9nk7$eVS~H17yMnLK^7;c}c0Lg8v7gcVh~a;_P0{1O^n|*Z OA=R*Si%ZHi%>Mx8MoUrv -- GitLab