package me.kodysimpson;
import java.util.UUID;
public class Main {
public static void main(String[] args) {
//Create Banks for some countries
Bank US_BANK = new Bank("United States Bank");
Bank CANADA_BANK = new Bank("Canada Bank");
Bank UK_BANK = new Bank("United Kingdom Bank");
UUID bob_number = US_BANK.createNewAccount("Bob Jenkins");
try{
US_BANK.retrieveAccount("Bob Jenkins").depositAmount(1000);
System.out.println("Balance of Bob's Account: " + US_BANK.retrieveAccount("Bob Jenkins").getBalance());
//Withdraw 500 dollars from jenkins account using his account number
US_BANK.retrieveAccount(bob_number).withdrawAmount(500);
System.out.println("Balance of Bob's Account: " + US_BANK.retrieveAccount(bob_number).getBalance());
}catch (AccountNotFoundException ex){
System.out.println("Bank Error: " + ex);
}
}
}
package me.kodysimpson;
import java.util.ArrayList;
import java.util.UUID;
public class Bank {
private String name;
private ArrayList<Account> accounts = new ArrayList<>();
public Bank(String name) {
this.name = name;
}
public UUID createNewAccount(double initialBalance, String name){
Account account = new Account(initialBalance, name);
return account.getAccountNumber();
}
public UUID createNewAccount(String name){
Account account = new Account(0, name);
return account.getAccountNumber();
}
public Account retrieveAccount(UUID account_number) throws AccountNotFoundException{
Account result = null;
for (int i = 0; i < accounts.size(); i++){
if (accounts.get(i).getAccountNumber().equals(account_number)){
result = accounts.get(i);
}
}
if (result == null){
throw new AccountNotFoundException("Account under number: " + account_number.toString() + " not found.");
}
return result;
}
public Account retrieveAccount(String owner) throws AccountNotFoundException{
Account result = null;
for (int i = 0; i < accounts.size(); i++){
if (accounts.get(i).getOwner().equals(owner)){
result = accounts.get(i);
}
}
if (result == null){
throw new AccountNotFoundException("Account under name: " + owner + " not found.");
}
return result;
}
public void removeAccount(UUID account_number) throws AccountNotFoundException{
boolean found = false;
for (int i = 0; i < accounts.size(); i++){
if (accounts.get(i).getAccountNumber().equals(account_number)){
accounts.remove(i);
found = true;
}
}
if (found == false){
throw new AccountNotFoundException("Account under number: " + account_number.toString() + " not found.");
}
}
}
package me.kodysimpson;
import java.util.Objects;
import java.util.UUID;
public class Account {
private UUID accountNumber;
private String owner;
private double balance;
public Account(double initialBalance, String owner){
this.accountNumber = UUID.randomUUID();
this.owner = owner;
this.balance = initialBalance;
}
public void withdrawAmount(double amount){
this.balance = balance - amount;
}
public void depositAmount(double amount){
this.balance = balance + amount;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public UUID getAccountNumber(){
return accountNumber;
}
public String getOwner() {
return owner;
}
@Override
public String toString() {
return "Account Report{" +
"accountNumber=" + accountNumber.toString() +
", owner='" + owner + '\'' +
", balance=" + balance +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Account account = (Account) o;
return accountNumber.equals(account.accountNumber);
}
@Override
public int hashCode() {
return Objects.hash(accountNumber);
}
}
package me.kodysimpson;
public class AccountNotFoundException extends Exception{
public AccountNotFoundException(String message) {
super(message);
}
}