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