public void execute(BankWindow bankWindow) { if (bankWindow.getCurrentOperation().getTimeOperation() != 0) { bankWindow.getCurrentOperation().doOperation(); } else { switch (bankWindow.getClient().getNumberOperation()) { case Credit.CREDIT: bankWindow.setCountCredits(bankWindow.getCountCredits() + 1); break; case Deposit.DEPOSIT: bankWindow.setCountDeposits(bankWindow.getCountDeposits() + 1); break; case Card.CARD: bankWindow.setCountCards(bankWindow.getCountCards() + 1); break; case Transfer.TRANSFER: bankWindow.setCountTransfers(bankWindow.getCountTransfers() + 1); break; case Payment.PAYMENT: bankWindow.setCountPayments(bankWindow.getCountPayments() + 1); break; } bankWindow.setCountAllOperations(bankWindow.getCountAllOperations() + 1); ObjectPoolClient pool = ObjectPoolClient.getInstance(); pool.releaseClient(bankWindow.getClient()); bankWindow.setClient(null); bankWindow.getManager().pushOperation(bankWindow.getCurrentOperation()); bankWindow.setCurrentOperation(null); if(bankWindow.isBreak == true) { bankWindow.setState(new BankWindowBreakState()); bankWindow.isBreak = false; } else bankWindow.setState(new BankWindowFreeState()); } }