package unsynch;

import java.util.*;

/**
 * Bank z kilkoma kontami
 * @version 1.30 2004-08-01
 * @author Cay Horstmann
 */
public class Bank
{
   private final double[] accounts;

   /**
    * Tworzy bank.
    * @param n liczba kont
    * @param initialBalance saldo początkowe na każdym koncie
    */
   public Bank(int n, double initialBalance)
   {
      accounts = new double[n];
      Arrays.fill(accounts, initialBalance);
   }

   /**
    * Przelewa pieniądze pomiędzy kontami.
    * @param from konto, z którego ma nastąpić przelew
    * @param to konto, na które mają zostać przelane środki
    * @param amount kwota do przelania
    */
   public void transfer(int from, int to, double amount)
   {
      if (accounts[from] < amount) return;
      System.out.print(Thread.currentThread());
      accounts[from] -= amount;
      System.out.printf(" %10.2f from %d to %d", amount, from, to);
      accounts[to] += amount;
      System.out.printf(" Total Balance: %10.2f%n", getTotalBalance());
   }

   /**
    * Zwraca sumę sald wszystkich kont.
    * @return saldo ogólne
    */
   public double getTotalBalance()
   {
      double sum = 0;

      for (double a : accounts)
         sum += a;

      return sum;
   }

   /**
    * Zwraca liczbę kont w banku.
    * @return liczba kont
    */
   public int size()
   {
      return accounts.length;
   }
}
