import java.util.*;
import java.io.*;

public class BankAccountApp {

	public static void main(String[] args) throws Exception {
		Scanner in = new Scanner(new File("accounts.text"));

		final int CAPACITY = 100;

		BankAccount [] accounts = new BankAccount[CAPACITY];

		int size = 0;
		while (in.hasNextInt()) {
			accounts[size] = new BankAccount();
			readAccount(in, accounts[size]);
			size++;
		}

		System.out.println("-- After reading in and creating the accounts");
		printAccounts(accounts, size);

		System.out.println("--- Performing a deposit of 5000 on account at position 1");
		BankAccount.deposit(accounts[1], 5000);
		printAccounts(accounts, size);

		System.out.println("-- Sorting by owner");
		sort(accounts, size);
		printAccounts(accounts, size);
	}

	// ---------------- Input ----------------

	static void readAccount(Scanner in, BankAccount account) {
		account.accountNumber = readAccountNumber(in);
		account.owner = readOwner(in);
		account.balance = readBalance(in);		  // cents
		account.status = readStatus(in);
		account.openedDate = readOpenedDate(in);
	}

	static int readAccountNumber(Scanner in) {return in.nextInt();}
	static String readOwner(Scanner in) {return in.next();}
	static int readBalance(Scanner in) {return in.nextInt();}
	static String readStatus(Scanner in) {return in.next();}
	static String readOpenedDate(Scanner in) {return in.next();}

	// ---------------- Output ----------------

	static void printAccounts(BankAccount [] accounts, int size) {
		System.out.println("ACCOUNTS");
		System.out.println("-------------");
		for (int i = 0; i < size; i++) { 
			BankAccount.printAccount(accounts[i]);
			System.out.println();
		}
	} 

	// ---------------- Sort ----------------
	
	static void sort(BankAccount [] accounts, int size) {
		boolean swapped = true;
		for (int last = size-1; size > 0 && swapped; size --) {
			swapped = false;
			for (int i = 0; i < last; i++)
				if (accounts[i].owner.compareTo(accounts[i+1].owner) > 0) {
					swap(accounts, i, i+1);
					swapped = true;
				}
		}
	}

	static void swap(BankAccount [] accounts, int idx1, int idx2) {
		BankAccount t = accounts[idx1];
		accounts[idx1] = accounts[idx2];
		accounts[idx2] = t;
	}
}
