From 1d167e1160fa6312ac10d907336590f799f7fba0 Mon Sep 17 00:00:00 2001
From: mariaeloi <mariaeduardaeloi@outlook.com>
Date: Thu, 21 Apr 2022 15:42:04 -0300
Subject: [PATCH] =?UTF-8?q?adiciona=20opera=C3=A7=C3=A3o=20de=20transfer?=
 =?UTF-8?q?=C3=AAncia?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/ufrn/imd/utils/MachineState.java     |  44 ++++++++++++---
 .../main/java/ufrn/imd/utils/NameSpace.java   |   2 +
 .../imd/utils/message/TransferMessage.java    |  18 +++++++
 .../main/java/ufrn/imd/BankingServerApp.java  |   4 ++
 .../impl/TransferControllerImpl.java          |  50 ++++++++++++++++++
 .../imd/repository/impl/ClientRepository.java |   6 +++
 .../imd/service/impl/TransferServiceImpl.java |  48 +++++++++++++++++
 .../main/java/ufrn/imd/utils/NameSpace.java   |   5 +-
 .../imd/utils/message/TransferMessage.java    |  18 +++++++
 .../classes/ufrn/imd/BankingServerApp.class   | Bin 1645 -> 1943 bytes
 .../repository/impl/ClientRepository.class    | Bin 1693 -> 3080 bytes
 .../classes/ufrn/imd/utils/NameSpace.class    | Bin 997 -> 1139 bytes
 12 files changed, 187 insertions(+), 8 deletions(-)
 create mode 100644 banking-client/src/main/java/ufrn/imd/utils/message/TransferMessage.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/controller/impl/TransferControllerImpl.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/impl/TransferServiceImpl.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/utils/message/TransferMessage.java

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 975d268..4f1834f 100644
--- a/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
+++ b/banking-client/src/main/java/ufrn/imd/utils/MachineState.java
@@ -5,6 +5,7 @@ import ufrn.imd.controller.Controller;
 import ufrn.imd.domain.Account;
 import ufrn.imd.domain.Client;
 import ufrn.imd.utils.message.DepositMessage;
+import ufrn.imd.utils.message.TransferMessage;
 import ufrn.imd.utils.message.WithdrawalMessage;
 
 import java.net.MalformedURLException;
@@ -13,9 +14,7 @@ import java.rmi.NotBoundException;
 import java.rmi.RemoteException;
 import java.util.Scanner;
 
-import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE;
-import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
-import static ufrn.imd.utils.NameSpace.HOST_WITHDRAWAL_SERVICE;
+import static ufrn.imd.utils.NameSpace.*;
 
 @Data
 public class MachineState {
@@ -25,6 +24,7 @@ public class MachineState {
     public static final String DEPOSIT = "DEPOSIT";
     public static final String BALANCE = "BALANCE";
     public static final String WITHDRAWAL = "WITHDRAWAL";
+    public static final String TRANSFER = "TRANSFER";
 
     public static final String START = "START";
     public static final String INVALID_INPUT = "INVALID_INPUT";
@@ -59,6 +59,8 @@ public class MachineState {
             state = START;
         } else if(state.equals(WITHDRAWAL)) {
             state = START;
+        } else if(state.equals(TRANSFER)) {
+            state = START;
         }
     }
 
@@ -69,7 +71,8 @@ public class MachineState {
                     !inputValue.equals(QUIT) &&
                     !inputValue.equals(DEPOSIT) &&
                     !inputValue.equals(BALANCE) &&
-                    !inputValue.equals(WITHDRAWAL)) {
+                    !inputValue.equals(WITHDRAWAL) &&
+                    !inputValue.equals(TRANSFER)) {
                 inputValue = INVALID_INPUT;
             }
         } else if(state.equals(DEPOSIT)) {
@@ -124,6 +127,30 @@ public class MachineState {
             } catch (InterruptedException e) {
                 throw new RuntimeException(e);
             }
+        } else if(state.equals(TRANSFER)) {
+            String accountNumber = sc.nextLine();
+            System.out.println(">>> Please enter with the value that you want transfer");
+            String v = sc.nextLine();
+
+            Client client = new Client(1);
+            Account account = new Account(null, accountNumber, null);
+            TransferMessage transferMessage = new TransferMessage(client, account, Double.parseDouble(v));
+            Controller server = (Controller) Naming.lookup(HOST_TRANSFER_SERVICE);
+            ServerResponse response = server.getResponse(transferMessage);
+            if(response.getStatus() == 200) {
+                System.out.println(
+                        String.format(">>> Your balance is: %.2f", ((Account)response.getBody()).getBalance())
+                );
+            } else if(response.getStatus() == 500) {
+                System.out.println(
+                        String.format(">>> %s", response.getMessage())
+                );
+            }
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
         }
     }
 
@@ -135,9 +162,9 @@ public class MachineState {
             } else if(state.equals(START)) {
                 System.out.println("These are the avaliable operations");
                 System.out.println("---------------------------------");
-                System.out.println(" - deposit \t - balance");
-                System.out.println(" - withdrawal \t - quit");
-
+                System.out.println(" - deposit \t\t - balance");
+                System.out.println(" - withdrawal \t - transfer");
+                System.out.println(" - quit");
                 System.out.println("---------------------------------");
                 Thread.sleep(1000);
             } else if(state.equals(READ)) {
@@ -151,6 +178,9 @@ public class MachineState {
             } else if(state.equals(WITHDRAWAL)) {
                 System.out.println(">>> Starting withdrawal operation");
                 System.out.println(">>> Please enter the value you want to withdraw");
+            } else if(state.equals(TRANSFER)) {
+                System.out.println(">>> Starting transfer operation");
+                System.out.println(">>> Please enter with the recipient's account number");
             }
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
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 68378dd..3cc1c46 100644
--- a/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
+++ b/banking-client/src/main/java/ufrn/imd/utils/NameSpace.java
@@ -4,7 +4,9 @@ public class NameSpace {
     public final static Integer PORT_WITHDRAWAL_SERVICE = 1906;
     public static final Integer PORT_DEPOSIT_SERVICE = 1907;
     public static final Integer PORT_BALANCE_SERVICE = 1908;
+    public static final Integer PORT_TRANSFER_SERVICE = 1909;
     public final static String HOST_WITHDRAWAL_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_WITHDRAWAL_SERVICE, "withdrawal");
     public static final String HOST_DEPOSIT_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_DEPOSIT_SERVICE, "deposit");
     public static final String HOST_BALANCE_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_BALANCE_SERVICE, "balance");
+    public final static String HOST_TRANSFER_SERVICE = String.format("rmi://127.0.0.1:%d/%s", PORT_TRANSFER_SERVICE, "transfer");
 }
diff --git a/banking-client/src/main/java/ufrn/imd/utils/message/TransferMessage.java b/banking-client/src/main/java/ufrn/imd/utils/message/TransferMessage.java
new file mode 100644
index 0000000..93fb492
--- /dev/null
+++ b/banking-client/src/main/java/ufrn/imd/utils/message/TransferMessage.java
@@ -0,0 +1,18 @@
+package ufrn.imd.utils.message;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import ufrn.imd.domain.Account;
+import ufrn.imd.domain.Client;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+public class TransferMessage implements Serializable {
+    private static final long serialVersionUID = 2L;
+
+    private Client from;
+    private Account to;
+    private Double value;
+}
diff --git a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
index 4332c2c..24f0ed8 100644
--- a/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
+++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
@@ -3,10 +3,12 @@ package ufrn.imd;
 import ufrn.imd.controller.Controller;
 import ufrn.imd.controller.impl.BalanceControllerImpl;
 import ufrn.imd.controller.impl.DepositControllerImpl;
+import ufrn.imd.controller.impl.TransferControllerImpl;
 import ufrn.imd.controller.impl.WithdrawalControllerImpl;
 import ufrn.imd.repository.impl.ClientRepository;
 import ufrn.imd.service.impl.BalanceServiceImpl;
 import ufrn.imd.service.impl.DepositServiceImpl;
+import ufrn.imd.service.impl.TransferServiceImpl;
 import ufrn.imd.service.impl.WithdrawalServiceImpl;
 
 import java.net.MalformedURLException;
@@ -19,9 +21,11 @@ public class BankingServerApp {
         DepositServiceImpl depositService = new DepositServiceImpl(clientRepository);
         BalanceServiceImpl balanceService = new BalanceServiceImpl(clientRepository);
         WithdrawalServiceImpl withdrawalService = new WithdrawalServiceImpl(clientRepository);
+        TransferServiceImpl transferService = new TransferServiceImpl(clientRepository);
 
         Controller depositController = new DepositControllerImpl(depositService);
         Controller balanceController = new BalanceControllerImpl(balanceService);
         Controller withdrawalController = new WithdrawalControllerImpl(withdrawalService);
+        Controller transferController = new TransferControllerImpl(transferService);
     }
 }
diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/TransferControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/TransferControllerImpl.java
new file mode 100644
index 0000000..9b52159
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/TransferControllerImpl.java
@@ -0,0 +1,50 @@
+package ufrn.imd.controller.impl;
+
+import lombok.extern.java.Log;
+import ufrn.imd.controller.Controller;
+import ufrn.imd.service.impl.TransferServiceImpl;
+import ufrn.imd.utils.ServerResponse;
+import ufrn.imd.utils.message.TransferMessage;
+
+import java.net.MalformedURLException;
+import java.rmi.AlreadyBoundException;
+import java.rmi.Naming;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.Optional;
+
+import static ufrn.imd.utils.NameSpace.HOST_TRANSFER_SERVICE;
+import static ufrn.imd.utils.NameSpace.PORT_TRANSFER_SERVICE;
+
+@Log
+public class TransferControllerImpl extends UnicastRemoteObject implements Controller {
+    private final TransferServiceImpl service;
+
+    public TransferControllerImpl(TransferServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+        super();
+        log.info("Starting Transfer service!");
+        this.service = service;
+        log.info(String.format("Initializing server in %s", HOST_TRANSFER_SERVICE));
+        LocateRegistry.createRegistry(PORT_TRANSFER_SERVICE);
+        Naming.bind(HOST_TRANSFER_SERVICE, this);
+    }
+
+    @Override
+    public ServerResponse getResponse(Object client) throws RemoteException {
+        TransferMessage transferMessage = (TransferMessage) client;
+        ServerResponse response;
+        try {
+            response = this.service.transfer(transferMessage.getValue(), Optional.of(transferMessage.getFrom()),
+                    Optional.of(transferMessage.getTo()));
+        } catch (RuntimeException e) {
+            e.printStackTrace();
+            response = ServerResponse.builder()
+                    .status(500)
+                    .message(e.getMessage())
+                    .body(transferMessage.getFrom())
+                    .build();
+        }
+        return response;
+    }
+}
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 83963f7..22520da 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
@@ -22,4 +22,10 @@ public class ClientRepository implements Repository<Client> {
     public List<Client> findAll() {
         return clients;
     }
+
+    public Optional<Client> findByAccountNumber(String number) {
+        return clients.stream()
+                .filter(client -> number.equals(client.getAccount().getNumber()))
+                .findFirst();
+    }
 }
diff --git a/banking-server/src/main/java/ufrn/imd/service/impl/TransferServiceImpl.java b/banking-server/src/main/java/ufrn/imd/service/impl/TransferServiceImpl.java
new file mode 100644
index 0000000..0df30a9
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/TransferServiceImpl.java
@@ -0,0 +1,48 @@
+package ufrn.imd.service.impl;
+
+import lombok.AllArgsConstructor;
+import lombok.extern.java.Log;
+import ufrn.imd.domain.Account;
+import ufrn.imd.domain.Client;
+import ufrn.imd.repository.Repository;
+import ufrn.imd.repository.impl.ClientRepository;
+import ufrn.imd.service.Service;
+import ufrn.imd.utils.ServerResponse;
+
+import java.rmi.RemoteException;
+import java.util.Optional;
+
+@Log
+@AllArgsConstructor
+public class TransferServiceImpl implements Service {
+
+    private final Repository<Client> clientRepository;
+
+    public ServerResponse transfer(Double value, Optional<Client> from, Optional<Account> to) throws RemoteException, RuntimeException {
+        Client fromUser = from.orElseThrow(() -> new RuntimeException("Null user!"));
+        Client fromClient = clientRepository.find(fromUser.getId())
+                .orElseThrow(() -> new RuntimeException("Invalid user!"));
+
+        Account toUserAccount = to.orElseThrow(() -> new RuntimeException("Null account"));
+        Client toClient = ((ClientRepository) clientRepository).findByAccountNumber(toUserAccount.getNumber())
+                .orElseThrow(() -> new RuntimeException(
+                        String.format("Customer not found with account number %s", toUserAccount.getNumber())));
+
+        if(fromClient.getId().equals(toClient.getId()))
+            throw new RuntimeException("Invalid account");
+
+        Account fromAccount = fromClient.getAccount();
+        if(value > fromAccount.getBalance()) throw new RuntimeException("Insufficient balance");
+
+        fromAccount.setBalance(fromAccount.getBalance() - value);
+        Account toAccount = toClient.getAccount();
+        toAccount.setBalance(toAccount.getBalance() + value);
+        log.info("Transfer concluded!");
+        log.info(String.format("Account balance: R$ %.2f", fromClient.getAccount().getBalance()));
+        return ServerResponse.builder()
+                .status(200)
+                .message("Operation sucessed!")
+                .body(fromClient.getAccount())
+                .build();
+    }
+}
diff --git a/banking-server/src/main/java/ufrn/imd/utils/NameSpace.java b/banking-server/src/main/java/ufrn/imd/utils/NameSpace.java
index d05657d..fe82fc8 100644
--- a/banking-server/src/main/java/ufrn/imd/utils/NameSpace.java
+++ b/banking-server/src/main/java/ufrn/imd/utils/NameSpace.java
@@ -1,7 +1,7 @@
 package ufrn.imd.utils;
 
 public class NameSpace {
-
+    public static final Integer PORT_TRANSFER_SERVICE = 1909;
     public final static Integer PORT_BALANCE_SERVICE = 1908;
     public final static Integer PORT_DEPOSIT_SERVICE = 1907;
     public final static Integer PORT_WITHDRAWAL_SERVICE = 1906;
@@ -14,4 +14,7 @@ public class NameSpace {
 
     public final static String HOST_WITHDRAWAL_SERVICE =
             String.format("rmi://127.0.0.1:%d/%s", PORT_WITHDRAWAL_SERVICE, "withdrawal");
+
+    public final static String HOST_TRANSFER_SERVICE =
+            String.format("rmi://127.0.0.1:%d/%s", PORT_TRANSFER_SERVICE, "transfer");
 }
diff --git a/banking-server/src/main/java/ufrn/imd/utils/message/TransferMessage.java b/banking-server/src/main/java/ufrn/imd/utils/message/TransferMessage.java
new file mode 100644
index 0000000..93fb492
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/utils/message/TransferMessage.java
@@ -0,0 +1,18 @@
+package ufrn.imd.utils.message;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import ufrn.imd.domain.Account;
+import ufrn.imd.domain.Client;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+public class TransferMessage implements Serializable {
+    private static final long serialVersionUID = 2L;
+
+    private Client from;
+    private Account to;
+    private Double value;
+}
diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class
index 84bf69c80fd2cd8f90878db02bd5836285daeaba..8d5ef782c69ac0f87e6afb4dd4b59b1497d69553 100644
GIT binary patch
delta 667
zcmYLHO-~b16g_XI?Q5SSr317U6h%?`MT;U|gMt*Rpj2ZthFQ2UWJoZzZAxQ|iQy->
zc!})&1risNIEjf{|Ak8z{srTiLep8ibMKvV&pr3e{I!mguYUde{sX`go+^xCQDRBK
z2ys~<f)xozAr|7QLOjGf3M$0A3KrHR))j_uPhvx17*&Z)1snGzY7!4l>R-f2vfFvx
zJlyv>&%MsOgFR26s5e9={^G2xe~WhB?vplK&2FdFXm}j~ReQhZwYvwc=Apzxi7kn3
z?HMy>8X5h`aARpa63FSFBCS6QTc^!Akq@(h_KLYi_GA6QoG0$+ujV4V>H-!0(acWt
zJq)I9zil@xr19k2AG0PR0_9xj_NdQ1TOy>b=3in8qrA58F(BBM;dy~sg(!&8f)8=h
zd!6MO>lJN`Gqz3%n7~D530%S?Mc6C^Ox`iz1~6P7=1u^89GyHW`Z(uA16Xd!$9X3f
zV91^Ik#uB$VK*D`k#gbzY&RSAG2$c!a|=DaQGUTOq-b-TMyENe%xIYos`OB&gI#(E
zz3rdQ$7Nh$7RNI#di4zrr?7=<Y&A$*$93GG)oCnX208vNWfYM|0a1!hF)nf8Do4#S
fk{n=>QKH-~l`4!9nCr=#xQSbsXZ1F70}KBFGO2D2

delta 446
zcmYL_yG{a86h-$un2VQ@H!Ao>6hs~(%40+kfzrg-5o1g=7B*_4g`J&0FonH;KrAMa
z#1Ejd^DFGEjeDSQinGr?bN8Ba=OyrM9u0rrKLAwGkqDtEuqmOsT9VMQB~X?yT-}!N
zy1FAFQ4y$0n5YTVCH$}ib_E*!vscA#suxk&eZ0K7d$_*6xfj?I*cWKpLp8015wU;N
z9`(RJ)=up&t;D`%`}8vP&~E7!YWuCPca?K2Bgm!PM}-1rS)+7CszUW-9Vq?L>lmvs
z8U``N-W(smG-l`~5J!R#H~a~WHvu~KvypkqIq+GY0nA?B!K7sj;P1tC2LVg`gOj5`
zm^H$EqC~}zBDz3$jp#Nf?nh6?V9a8U&Wi@-vA{(_C}R;zTp)ogZ<XW<Df$)EQ~b*X
ghF7r$4`C+K><l6mWY`I;k5C$e8_02*r&m$<1BfFsG5`Po

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 155a44b5c55392b0c43f96fcd159f827359a5777..c6d086468a406fbde73aefe262c8388575fe861e 100644
GIT binary patch
literal 3080
zcma)8`E%1&5dNNVtV9tIazcO>XlR{qm@5~iGzX-lHH4BhE$OM)&*2eSGP0C5z355r
z^Y7>n?Mxd2%yjy5r+-tY`y|<VPE01A@sqS~_uJj??XL9Ce-HlxFpOVx9K=Np&*>P$
zcrzw6Og7_EYD~~J{d8Q$l#V7muOopg&6sY+3#qZ2;chElM6Lw~a8;ULlaDhxuHz+n
zccYz@UTwuqEXd_G3GljvdPB#XcuT|E8cYp~3|ih2-1aIAZMoa#ika~}VP$fn;$<0H
zX2p_idcMmU1~zP8$oWOr&WKVWQ*cVAurreZQuZPlrY;Cuco!LVr2FR?l9Nt>Aa>`3
z&9C{TMefd-ixx@Rb57p0=1o_~=SZ0JZV8I#SnR;%Wv3!M$6Y0VWh?S@qb4Pf$)d0e
z4E^aaOv|*FGSjxlm$;klS3;jDd&03zi%b%N3_2R<GfZw5W=j?{8Pm9BQJ!fvhKSwc
zn}l1Ubx5>{)$x4Z@og`pks+-{I_tT@UV2=<DLbHEvL2jtz)@tvFtJUbEn_@jnWe>o
z+1DV{zEcb*8u*A$xxS407pRQF;$+zSI4y>plFZEFZJzhCv9eM)akXrjfj;Z_Zk|sG
zS)N^CNynxqC2<CxLLWnS<NDW-H&B2q?kVotrd@CjO>yD6^fwuLHd;mJNzHcl%;|H3
zL&GDZ8j2EPNjkbE7s0Ues%(-&mkYk>76_+hbYysF@EqA_xNTq=mVqa6$Uq6U0S9Fb
zccj=gP=QC?J>fWB#dFQ_Rqow#3YFa{_-$CB%R6m&*T5>?)9}855AdOZk8sz($N0p+
zr}#|6=LWvO3Uya4c!k)89Z3%38Viqw;fY4(F}VzTVw<RUX+W)*md|I3M0k2S>Y}>t
zu5)$C@q@wAmA<6vhGOdZ^J)cF=Yvu~Q9CG-$W)H8@ogH{(u^uPI^wLv*cGH$8?rQo
z97=6SMXpwHOhzPWFhiP!?afPqf>Aq7>k_Ba?y9FMvZs=ay;ld}h7r=hRaH~Yb*dn4
zmKgTe&8|?IA@XQ5tK%NNlrbnQR$&)(dSiVh?c*lh-1kY3S15}!DnfKJDhEa1&dX_@
zx$g3U$eSLg5PRYj>%yYoi^B4_%P<<@2B**fMD<aJLGUedv`q<D#@Ag(f<lu{hfwQl
zN!8;jg78SSI?Fq&c=eN6>7<YZN`>F?O{=2eYXjfl2ZO#QMi`F76(j5wXPIYm!8oRl
zH;ZOozCRgSOYxJ2p9m}GILm&S!I-vf?oL`}rNZg``>)D=gcr_^D>T$BUg--Bv&u0?
zhongA4ChwMTvgxxX6SNjTeaaM<Vn-AW(C!ShMyUZZsMm=J~XGc*27_{;e#MO`a@1#
zx*n#x1dh-r7L%_BT91<C9*jUIH*g<p;1Loxlk3>go_vI+@GjK}Z5=K5q2EWV+;5Wm
zhTISCc6MS{ZGRnYe`3$?fv2Zw?Iv&XGck!)S`7?fCw(%u;u(@gevw8$J<;bIj!}Fv
zrYm$!(6w{m59~R%hV}>ONZ@ZI*3tPJ$rF&+sUYt50INIHkFdxR$8m!8!<<jjT?VH}
zN1|uwNwU%;(Ko{ND4{h)a3RQPGCG5^5y%2vWr)2J<N><qWAGtmiwEdQ(6W~yMsBC{
zf&JJ`htf&MvXAa10b$U+wV-=(4uj++^f%O|%buZU8T44>&ln&+_N}3J4f}s3xk|+W
u1=R?!NP%b`#d$(WMz~pA2<)E4_jJ{1=Ue=U?<lI-K$~F>JMc2*@yh?Y&^`75

delta 464
zcmYk1H%|jW5QV=xhdrOq1qhC0Of<nn+u%Sn!6cgu1qFpA8n*~aL`y+;HUEGD1Pv5O
zwEPjopFqsoNU+k*zM1#t&FoF<U8MT){rU!EIks^bS4`MUlC(%E(iT&}LRDxvHq&Hm
z0%UDWau#`unPB0h&W4#~E<`i)x_v>Xi#7$86w8Vg#p>hjz2WWpE`m`y4P5WtbS*{E
zVU2a~(>Gt*&~Vcs%9ai#gUEK}yjtllo?TYX&ngC?d@h@ro=T^Zin7BtI}WY1Iqb6M
zu+M?wP?wLMUi^kRM33y_V$dQNt(3Q2kVywV!Lo_OnD-Sr&2~xMmEY-)`Uy*PND!eY
zxLc}D&7&-yy^<O9(JwwR@5+u}>)v3EZ>(uuVW8<(t5KW*;p?*p1r0H*yG1o2ncgmt
ec&6b&fXSa-%fHcqU%R?VLUeUBf*P&0jr{<#W-mkl

diff --git a/banking-server/target/classes/ufrn/imd/utils/NameSpace.class b/banking-server/target/classes/ufrn/imd/utils/NameSpace.class
index 615ca1f909796027ddf196e31bfa6a831963264c..42a6dfd302b25b75da9780c5ae89421c50754d76 100644
GIT binary patch
delta 610
zcmYk2T~8B16o#K|yPfGerR+-4iVA)KqJm#g6%;C|(S(56B}T5uiV&L+E=qyK8}uJY
z@K>04p<GBz^j`mmzrb5#JTpx!7yCZvyfbq?_Lust*M9!}`W>iJ3(yP&40E|a#E6wE
zR<2sPrWsX?X|4y{;HI^1X>MDNYbGqKnmd+v756;KPZ#3F<;A!*pFFC^d(Q_;4{LL^
z`Puq%QjecKnXT__zw0VLUPz8y`t!d33}+RShAHkFj?-f(Tj{lOf}Z^kUUlk$VVW7k
zNh%)dMY^7DtgISN*)-T`v|hbzraS4nq0c(H)l4@w*H)W`(^U40nUA}XY>Ipp+d-m=
zZQ>|>9Ho_`v~ZN#j#AN4DhV@q$iSlgl8p&Hp+E8k?~^+o5Y0O?%Q=aSi+6p_b3szg
z#s9B=;EMxqL$!5C=74OdS}w?iYSRUNsG2UwN6P<(Udn#PPnL2~Avq*C;8@4bS=+Sj
zV#m%~yQ|UmOC3LJ{qD9M+R;4*L?<YU<|xQ)ku1`Ol8Fn96EG>u%*lC7i50qO$c@+X
OKi>#FF3GzLgZ}_8PE~sV

delta 467
zcmYLFJ5K^Z7@WJ~*yUWrI{^iJKTr{0_&`g%SeOtsVj(tozM=`SKoUw@V@IyGvbInf
zVxm95|6ylmZ~S&Kv6-1~^6l*Ge)CUu`0?}l4j_*W3k+ix#xW5>1d|fd5~et&8D=;#
z7G{x^)*Q#Y<OPmJ$x9454bi>b{e#M8p;*{)x0)B}=Hs33YWK;0Bp8+jR<J7216#n6
z&<orD((>6gLAS39L=n@#PQ0pjeR?hsm!s9Vs$ZVfyoOg5=tIn}=ud8hiUL6-WEiQ0
z%u`H}iYZDlWhkbT#5y!k7s8}pG2*u=@`5x01_lU)(k2EmL=(qwXP5K?OhUl3S-lOt
z1;b`HN(5|HQ^ItD<{MbqctN044miBjMyLhr-!`P()v*QHrN4Dk`r(e>{Y<xLkj*l%
j2u*~jqeCxFk;;;nqn<9p*rtC!q8~UW)-Xc5I!1p1vT-~S

-- 
GitLab