package ufrn.imd;

import ufrn.imd.controller.Controller;
import ufrn.imd.controller.impl.*;
import ufrn.imd.repository.impl.ClientRepository;
import ufrn.imd.service.impl.*;

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 {
        ClientRepository clientRepository = new ClientRepository();
        DepositServiceImpl depositService = new DepositServiceImpl(clientRepository);
        BalanceServiceImpl balanceService = new BalanceServiceImpl(clientRepository);
        WithdrawalServiceImpl withdrawalService = new WithdrawalServiceImpl(clientRepository);
        TransferServiceImpl transferService = new TransferServiceImpl(clientRepository);
        AuthenticatorServiceImpl authenticatorService = new AuthenticatorServiceImpl(clientRepository);

        Controller depositController = new DepositControllerImpl(depositService);
        Controller balanceController = new BalanceControllerImpl(balanceService);
        Controller withdrawalController = new WithdrawalControllerImpl(withdrawalService);
        Controller transferController = new TransferControllerImpl(transferService);
        Controller authenticatorController = new AuthenticatorControllerImpl(authenticatorService);
    }
}