package me.zacharias.bank; import me.zacharias.bank.transaction.Transaction; import me.zacharias.bank.transaction.TransactionType; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.UUID; public class User { UUID id; String name; ArrayList accounts; public User(String name) { this.name = name; id = UUID.randomUUID(); accounts = new ArrayList<>(); } public UUID createAccount(String name) { Account account = new BankAccount(name); accounts.add(account); return account.getId(); } public UUID createSavingsAccount(String name) { Account account = new SavingsAccount(name); accounts.add(account); return account.getId(); } public Account getAccount(String name) { for (Account account : accounts) { if (account.name.equals(name)) { return account; } } return null; } public Account getAccount(@NotNull UUID id) { for (Account account : accounts) { if (account.id.equals(id)) { return account; } } return null; } public void deleteAccount(@NotNull Account account) { Account base = null; for(Account a : accounts) { if(a.getId().equals(account.getId())) { base = a; } } if(base == null) { throw new IllegalArgumentException("No other bank accounts found"); } base.handleTransaction(new Transaction(account.getBalance(), "Account closed", account.getId(), base.getId(), TransactionType.CLOSE)); accounts.remove(account); } public String getName() { return name; } public ArrayList getAccounts() { return accounts; } }