From 6ea0fd08e78d8b6e67e2e020e109d04639347415 Mon Sep 17 00:00:00 2001
From: unknown <fernando.ferreira.129@imd.local>
Date: Mon, 18 Apr 2022 11:30:08 -0300
Subject: [PATCH] Banking server

---
 banking-server/.idea/.gitignore               |   3 +
 banking-server/.idea/compiler.xml             |  13 +++
 banking-server/.idea/jarRepositories.xml      |  20 ++++
 banking-server/.idea/misc.xml                 |  14 +++
 banking-server/.idea/vcs.xml                  |   6 ++
 banking-server/pom.xml                        |  24 +++++
 .../main/java/ufrn/imd/BankingServerApp.java  |  26 +++++
 .../java/ufrn/imd/controller/Controller.java  |  11 ++
 .../impl/BalanceControllerImpl.java           |  95 ++++++++++++++++++
 .../impl/DepositControllerImpl.java           |  95 ++++++++++++++++++
 .../main/java/ufrn/imd/domain/Account.java    |  18 ++++
 .../src/main/java/ufrn/imd/domain/Client.java |  22 ++++
 .../java/ufrn/imd/repository/Repository.java  |   9 ++
 .../imd/repository/impl/ClientRepository.java |  24 +++++
 .../java/ufrn/imd/service/BalanceService.java |  12 +++
 .../java/ufrn/imd/service/DepositService.java |  13 +++
 .../java/ufrn/imd/service/WidthawService.java |  12 +++
 .../imd/service/impl/BalanceServiceImpl.java  |  22 ++++
 .../imd/service/impl/DepositServiceImpl.java  |  23 +++++
 .../src/main/java/ufrn/imd/utils/Log.java     |  10 ++
 .../main/java/ufrn/imd/utils/NameSpace.java   |  11 ++
 .../classes/ufrn/imd/BankingServerApp.class   | Bin 0 -> 1114 bytes
 .../ufrn/imd/controller/Controller.class      | Bin 0 -> 252 bytes
 .../classes/ufrn/imd/domain/Account.class     | Bin 0 -> 1315 bytes
 .../classes/ufrn/imd/domain/Client.class      | Bin 0 -> 484 bytes
 .../classes/ufrn/imd/utils/NameSpace.class    | Bin 0 -> 849 bytes
 .../src/ufrn/imd/repository/Repository.java   |   2 +
 .../imd/repository/impl/ClientRepository.java |   2 +
 28 files changed, 487 insertions(+)
 create mode 100644 banking-server/.idea/.gitignore
 create mode 100644 banking-server/.idea/compiler.xml
 create mode 100644 banking-server/.idea/jarRepositories.xml
 create mode 100644 banking-server/.idea/misc.xml
 create mode 100644 banking-server/.idea/vcs.xml
 create mode 100644 banking-server/pom.xml
 create mode 100644 banking-server/src/main/java/ufrn/imd/BankingServerApp.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/controller/Controller.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/domain/Account.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/domain/Client.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/repository/Repository.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/BalanceService.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/DepositService.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/WidthawService.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/utils/Log.java
 create mode 100644 banking-server/src/main/java/ufrn/imd/utils/NameSpace.java
 create mode 100644 banking-server/target/classes/ufrn/imd/BankingServerApp.class
 create mode 100644 banking-server/target/classes/ufrn/imd/controller/Controller.class
 create mode 100644 banking-server/target/classes/ufrn/imd/domain/Account.class
 create mode 100644 banking-server/target/classes/ufrn/imd/domain/Client.class
 create mode 100644 banking-server/target/classes/ufrn/imd/utils/NameSpace.class
 create mode 100644 banking/src/ufrn/imd/repository/Repository.java
 create mode 100644 banking/src/ufrn/imd/repository/impl/ClientRepository.java

diff --git a/banking-server/.idea/.gitignore b/banking-server/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/banking-server/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/banking-server/.idea/compiler.xml b/banking-server/.idea/compiler.xml
new file mode 100644
index 0000000..1e78cc9
--- /dev/null
+++ b/banking-server/.idea/compiler.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="banking-server" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>
\ No newline at end of file
diff --git a/banking-server/.idea/jarRepositories.xml b/banking-server/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/banking-server/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/banking-server/.idea/misc.xml b/banking-server/.idea/misc.xml
new file mode 100644
index 0000000..82dbec8
--- /dev/null
+++ b/banking-server/.idea/misc.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/banking-server/.idea/vcs.xml b/banking-server/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/banking-server/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/banking-server/pom.xml b/banking-server/pom.xml
new file mode 100644
index 0000000..24fae72
--- /dev/null
+++ b/banking-server/pom.xml
@@ -0,0 +1,24 @@
+<?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-server</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</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-server/src/main/java/ufrn/imd/BankingServerApp.java b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
new file mode 100644
index 0000000..4fed739
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/BankingServerApp.java
@@ -0,0 +1,26 @@
+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.service.impl.BalanceServiceImpl;
+import ufrn.imd.service.impl.DepositServiceImpl;
+
+import java.net.MalformedURLException;
+import java.rmi.AlreadyBoundException;
+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();
+
+        Controller depositController = new DepositControllerImpl(depositService);
+        Controller balanceController = new BalanceControllerImpl(balanceService);
+
+
+    }
+}
diff --git a/banking-server/src/main/java/ufrn/imd/controller/Controller.java b/banking-server/src/main/java/ufrn/imd/controller/Controller.java
new file mode 100644
index 0000000..824205a
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/controller/Controller.java
@@ -0,0 +1,11 @@
+package ufrn.imd.controller;
+
+import ufrn.imd.domain.Client;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+public interface Controller extends Remote {
+    public void registerClient(Client client) throws RemoteException;
+
+}
diff --git a/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
new file mode 100644
index 0000000..dc21b11
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/BalanceControllerImpl.java
@@ -0,0 +1,95 @@
+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 ufrn.imd.utils.Log;
+
+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.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE;
+import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE;
+
+public class BalanceControllerImpl extends UnicastRemoteObject implements Controller {
+
+    private volatile List<Client> clients = new ArrayList<>();
+
+    public BalanceControllerImpl(BalanceService service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+        super();
+        Log.info(BalanceServiceImpl.class, "Starting Deposit service!");
+
+        new Notify(service).start();
+
+        Log.info(BalanceServiceImpl.class,
+                String.format("Initializing server in %s", HOST_BALANCE_SERVICE));
+
+        LocateRegistry.createRegistry(PORT_BALANCE_SERVICE);
+
+        Naming.bind(HOST_BALANCE_SERVICE, this);
+    }
+
+    @Override
+    public void registerClient(Client client) throws RemoteException {
+        clients.add(client);
+        Log.info(BalanceService.class, "new client registred");
+        Log.info(BalanceService.class, String.format("total users: %d", clients.size()));
+    }
+
+
+
+
+    private class Notify extends Thread{
+
+        private final BalanceService service;
+
+        public Notify(BalanceService service) {
+            super();
+            this.service = service;
+        }
+        public void run() {
+
+            for(;;) {
+                if(clients.size() > 0) {
+
+                    Log.info(
+                            BalanceService.class,
+                            "notyfing the clients!"
+                    );
+                    int i = 0;
+                    for (Client client : clients) {
+
+                        try {
+                            this.service.balance(Optional.of(client.getAccount()));
+
+                        } 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(BalanceService.class, "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
new file mode 100644
index 0000000..b84139b
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/controller/impl/DepositControllerImpl.java
@@ -0,0 +1,95 @@
+package ufrn.imd.controller.impl;
+
+import ufrn.imd.controller.Controller;
+import ufrn.imd.domain.Client;
+import ufrn.imd.service.DepositService;
+import ufrn.imd.utils.Log;
+
+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.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import static ufrn.imd.utils.NameSpace.HOST_DEPOSIT_SERVICE;
+import static ufrn.imd.utils.NameSpace.PORT_DEPOSIT_SERVICE;
+
+public class DepositControllerImpl extends UnicastRemoteObject implements Controller {
+
+    private volatile List<Client> clients = new ArrayList<>();
+    public DepositControllerImpl(DepositService service) throws RemoteException, MalformedURLException, AlreadyBoundException {
+        super();
+        Log.info(DepositControllerImpl.class, "Starting Deposit service!");
+
+        new Notify(service).start();
+        Log.info(DepositControllerImpl.class,
+                String.format("Initializing server in %s", HOST_DEPOSIT_SERVICE));
+
+        LocateRegistry.createRegistry(PORT_DEPOSIT_SERVICE);
+
+        Naming.bind(HOST_DEPOSIT_SERVICE, this);
+    }
+
+    @Override
+    public void registerClient(Client client) throws RemoteException {
+        clients.add(client);
+        Log.info(DepositControllerImpl.class, "new client registred");
+        Log.info(DepositControllerImpl.class, String.format("total users: %d", 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) {
+
+                    Log.info(
+                            DepositControllerImpl.class,
+                            "notyfing the clients!"
+                    );
+                    int i = 0;
+                    for (Client client : clients) {
+
+                        try {
+                            this.service.deposit(200.00, Optional.of(client.getAccount()));
+
+                        } 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(DepositControllerImpl.class, "No there's clients!");
+
+
+                }
+
+            }
+
+        }
+    }
+}
diff --git a/banking-server/src/main/java/ufrn/imd/domain/Account.java b/banking-server/src/main/java/ufrn/imd/domain/Account.java
new file mode 100644
index 0000000..b800c2b
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/domain/Account.java
@@ -0,0 +1,18 @@
+package ufrn.imd.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class Account implements Serializable {
+
+    private static final long serialVersionUID = 2L;
+    private Integer id;
+    private String number;
+    private Double balance;
+}
diff --git a/banking-server/src/main/java/ufrn/imd/domain/Client.java b/banking-server/src/main/java/ufrn/imd/domain/Client.java
new file mode 100644
index 0000000..2ce2883
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/domain/Client.java
@@ -0,0 +1,22 @@
+package ufrn.imd.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Client implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+    private String name;
+
+    private Account account;
+
+}
diff --git a/banking-server/src/main/java/ufrn/imd/repository/Repository.java b/banking-server/src/main/java/ufrn/imd/repository/Repository.java
new file mode 100644
index 0000000..636bf2b
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/repository/Repository.java
@@ -0,0 +1,9 @@
+package ufrn.imd.repository;
+
+import java.util.List;
+
+public interface Repository <T>{
+
+    public 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
new file mode 100644
index 0000000..bce53da
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/repository/impl/ClientRepository.java
@@ -0,0 +1,24 @@
+package ufrn.imd.repository.impl;
+
+import ufrn.imd.domain.Client;
+import ufrn.imd.repository.Repository;
+
+import java.util.List;
+
+public class ClientRepository implements Repository<Client> {
+    List<Client> clients = List.of(
+            new Client(),
+            new Client()
+
+            );
+
+    @Override
+    public Client find(Integer id) {
+        return (Client) clients.stream().filter(c -> c.getId().equals(id));
+    }
+
+    @Override
+    public List<Client> findAll() {
+        return clients;
+    }
+}
diff --git a/banking-server/src/main/java/ufrn/imd/service/BalanceService.java b/banking-server/src/main/java/ufrn/imd/service/BalanceService.java
new file mode 100644
index 0000000..b82470c
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/BalanceService.java
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..aab39ac
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/DepositService.java
@@ -0,0 +1,13 @@
+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/WidthawService.java b/banking-server/src/main/java/ufrn/imd/service/WidthawService.java
new file mode 100644
index 0000000..8a5ed3b
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/WidthawService.java
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 0000000..85bb341
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/BalanceServiceImpl.java
@@ -0,0 +1,22 @@
+package ufrn.imd.service.impl;
+
+import ufrn.imd.domain.Account;
+import ufrn.imd.service.BalanceService;
+import ufrn.imd.utils.Log;
+
+import java.rmi.RemoteException;
+import java.util.Optional;
+
+public class BalanceServiceImpl implements BalanceService {
+
+
+    @Override
+    public void balance(Optional<Account> accOP) throws RemoteException {
+        Account account = accOP.orElseThrow(() -> new RuntimeException("Invalid account"));
+        Log.info(
+                BalanceServiceImpl.class,
+                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
new file mode 100644
index 0000000..1909f69
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/service/impl/DepositServiceImpl.java
@@ -0,0 +1,23 @@
+package ufrn.imd.service.impl;
+
+import ufrn.imd.domain.Account;
+import ufrn.imd.service.DepositService;
+import ufrn.imd.utils.Log;
+
+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/src/main/java/ufrn/imd/utils/Log.java b/banking-server/src/main/java/ufrn/imd/utils/Log.java
new file mode 100644
index 0000000..38d3f87
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/utils/Log.java
@@ -0,0 +1,10 @@
+package ufrn.imd.utils;
+
+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-server/src/main/java/ufrn/imd/utils/NameSpace.java b/banking-server/src/main/java/ufrn/imd/utils/NameSpace.java
new file mode 100644
index 0000000..bb5d525
--- /dev/null
+++ b/banking-server/src/main/java/ufrn/imd/utils/NameSpace.java
@@ -0,0 +1,11 @@
+package ufrn.imd.utils;
+
+public class NameSpace {
+
+    public final static Integer PORT_BALANCE_SERVICE = 1908;
+    public final static Integer PORT_DEPOSIT_SERVICE = 1907;
+    public final static String HOST_DEPOSIT_SERVICE =
+            String.format("rmi://127.0.0.1:%d/%s", PORT_DEPOSIT_SERVICE, "deposit");
+    public final static String HOST_BALANCE_SERVICE =
+            String.format("rmi://127.0.0.1:%d/%s", PORT_BALANCE_SERVICE, "balance");
+}
diff --git a/banking-server/target/classes/ufrn/imd/BankingServerApp.class b/banking-server/target/classes/ufrn/imd/BankingServerApp.class
new file mode 100644
index 0000000000000000000000000000000000000000..e981c23cd377d28abc4078145c4d6009f4c2c7e6
GIT binary patch
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

literal 0
HcmV?d00001

diff --git a/banking-server/target/classes/ufrn/imd/controller/Controller.class b/banking-server/target/classes/ufrn/imd/controller/Controller.class
new file mode 100644
index 0000000000000000000000000000000000000000..4707c271c661d159f8019f881ffc3f31e61a85d3
GIT binary patch
literal 252
zcmZ8c%W48a5Ue&Pqb6#Of{=5(I3EylTH+}XP{@6p?JOg+GcwKwzs-Xm;70}91UBHI
z=&pWLSD$_kM*y!FDRc-=%~uNA)upyE<P^Q<q>DCH=n@_`=G$m*LZv^}8@5^DjxheM
zrrPNx*D*6;l(=%c%&G8>Lnch0-&^@I*2V?>*Ls<K5(aO3%iHW?*eTo-CRc)OTSiy0
mNtPGR%bD@Nz4>KDybx{#xAGT>Uxl8qzOb&uf#5;%4u)s-d_xcb

literal 0
HcmV?d00001

diff --git a/banking-server/target/classes/ufrn/imd/domain/Account.class b/banking-server/target/classes/ufrn/imd/domain/Account.class
new file mode 100644
index 0000000000000000000000000000000000000000..a4b43e01d80f1a91b78f2901d9f2ba08f07e460b
GIT binary patch
literal 1315
zcmZ{jU2oD*9LAqh3JffR0b|a$ZB8AqmwGL_M7Nk=h+d%F7pQm^Xp>UB@Kb3bG4a9=
z;D<6kr!Aw9vL!t|J<tC+zyAw=|NZ_0;1!<dp&^xpZXk_}K<UQ%YMEop8JQpYH}=36
z$h?$}^e+Wc^+qp;E#$Ju8@K~QU~l%>b4)oInnQPDNymIW7`QWsQJNeIR60w$w&U9)
z+iNL@Z39J=Xzk1<ecKZ#$An$qlg=p6l?_x-70C82A`R?S;k7&KkL^|#HGyhyk#x<j
z?MZ7azgawDI@4g=v%RTwolos+0r5_taOFBv-*Wt(HJ;gNRzm%00{WFZWLU8y9s7O2
z_AxXncie$B?pZXaar9C5zsRY;erH1!S^_WXvCI}Fh<%EZjeUu-YV-usBinDYjJx$l
zOt5g_`7}JQC0(Knax@6jV1-spqI)T!$3n6j_lXqBCQq9;iw>;%M6}e<=T@^~6iX=I
zb!Xndek)aPjA&LaRO@iWvCzO=q2nI*aF_4<swv!QYS@BzPED|KD!6V@!>Q%-0e2=>
z!8P6d1@R-0J>*jzg9eZIG(rImaLAnsKH^gak9mpCwW@-fr*mYRXLA&q=X2~Vy=sh5
zE;<UxVVnO&4rnRxZiexZH=P1#b$3+_JN?z00#EVI$2g8|USj`5_B%xyme`d<>?e2{
z1z%FFj57i95>)-F!78R%N0oRjRNca5A~=C(I7t90tb^Q71gWEu1X5TBIUva41`t&n
m)wm{36F_#>L5>qa&TyUt5^G&pkrRT{H-M<tD3FVw2j+irY1&8t

literal 0
HcmV?d00001

diff --git a/banking-server/target/classes/ufrn/imd/domain/Client.class b/banking-server/target/classes/ufrn/imd/domain/Client.class
new file mode 100644
index 0000000000000000000000000000000000000000..bb9cd9b4e1c8f13d9f1421b515a67c9eb8a0a2d7
GIT binary patch
literal 484
zcmZWm%TB{E5FDpz1ARbgOKEu=xB&<90X!sBgj5v4p^&?qnBpq2rNrUDUvWa>zz6VA
zh;@Plf>;^v?%3m5`{VQN9l#m(ns89_;I>gmgQ2_RPux$qTKKo~rHBke<5VhX&KYV4
zhoOfRhGFrLDPN|sAM2D$<xdhRl=0AH7?c81`!kVAp2%lDPXy`aWg3bsms;IVFB#Z1
zLuaB@Zn!cbPYO{dOZH<7j*J=l!H=7%GGZaJ69!lDloWfv$eGEcS`g>)DAI)@*W=)?
z$%~4z3KJcZ!g?T;xGB=P$nGkay+B7i2{}0@*WX3gJj$G5^iQzrn)I48U1X8ClD5-U
zRX(=Xu@8^#mthqyw$VbH;tqA_V2%DRHp;k%emM`YX}hOEZ$UVu%rA4Ge)J0VQZCyf
Vv@{hlBDA759@7za`wpRl-7h`$YN7xD

literal 0
HcmV?d00001

diff --git a/banking-server/target/classes/ufrn/imd/utils/NameSpace.class b/banking-server/target/classes/ufrn/imd/utils/NameSpace.class
new file mode 100644
index 0000000000000000000000000000000000000000..8e3544457d0587d06e53b5e9bf8eaaace60ff7db
GIT binary patch
literal 849
zcmZ`%ZEq4m5Pp`I-f>=EINDmOR%?qwRj&BO2-S#4BME_~M@X7}Aj`4fHOEnpqyJ0$
z!Nx>?fIrGO3s}&mcgf7o?7Tet%>4TO{U?Ao$Y}^6tRSKziUo$1Gk(EMmwP?4-aZp{
zz_4)Ocuw$^A)L-MHK>Rw&~)5^&Jdr4SG+*<gwLQ{aCao?U552^B~!f-QHWs)%L-O>
z#9=UOjJm#OI{l703LJN6)_7l7=iC+yt4H<YM(cgCTCA1IEvtOotdz<OiCc=U>R6K%
zCutwbM|G>x_?xEUF2kDNck-s0d-*E6Pk%0->X@maiX_4Ai1WeF2{hcpeFYD6Y~kTQ
zgjj*^cs(MdJMjCQn0cL^12VZSoX)u>3>M}&m_|towskzl4x#;6w;HYg&@vcvg{E05
zQiQY3X*{-&C7$X?&r00jDN-7Ah{ffq<B8g+-xhv@w_WlW)q&03Cifj_Po0tAlQU%4
ztll<{0)u*ByVGsZtii~)#i1h$E?o~TE9Z@E0vDnMiy$e7OsAwA%~;c;$C{9n4uQ$d
zBbgz~B+W=i_r8IB8DH;_l-EEQ&q(T%06fPFvQ%WRlRr}-`4!_za0TTOi*aQ*J|v9w
z=nsTW!e5cFP9nyJb%o7KJes)|rF(bcej*z)$i`bxNJbH(CI+2%s9}bzJT$x`%?Po4
G!~P$)mbD51

literal 0
HcmV?d00001

diff --git a/banking/src/ufrn/imd/repository/Repository.java b/banking/src/ufrn/imd/repository/Repository.java
new file mode 100644
index 0000000..a7b91a1
--- /dev/null
+++ b/banking/src/ufrn/imd/repository/Repository.java
@@ -0,0 +1,2 @@
+package ufrn.imd.repository;public interface Repository {
+}
diff --git a/banking/src/ufrn/imd/repository/impl/ClientRepository.java b/banking/src/ufrn/imd/repository/impl/ClientRepository.java
new file mode 100644
index 0000000..2713501
--- /dev/null
+++ b/banking/src/ufrn/imd/repository/impl/ClientRepository.java
@@ -0,0 +1,2 @@
+package ufrn.imd.repository.impl;public class ClientRepository {
+}
-- 
GitLab