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;
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);

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