document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. public class Withdraw extends Transaction
  2. {
  3.  private int amount;
  4.  private Keypad keypad;
  5.  private CashDispenser cashDispenser;
  6.  
  7.  private final static int CANCELED = 6;
  8.  
  9.  public Withdraw(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase, Keypad atmKeypad, CashDispenser atmCashDispenser)
  10.  {
  11.  super( userAccountNumber, atmScreen, atmBankDatabase );
  12.  
  13.  keypad = atmKeypad;
  14.  cashDispenser = atmCashDispenser;
  15.  }
  16.  
  17.  public void execute()
  18.  {
  19.  boolean cashDispensed = false;
  20.  double availableBalance;
  21.  
  22.  BankDatabase bankDatabase = getBankDatabase();
  23.  Screen screen = getScreen();
  24.  
  25.  do
  26.  {
  27.  amount = displayMenuOfAmounts();
  28.  
  29.  if(amount != CANCELED)
  30.  {
  31.  availableBalance = bankDatabase.getAvailableBalance(getAccountNumber());
  32.  
  33.  if(amount <= availableBalance)
  34.  {
  35.  if(cashDispenser.isSufficientCashAvailable( amount ) )
  36.  {
  37.  bankDatabase.debit(getAccountNumber(), amount);
  38.  cashDispenser.dispenseCash(amount);
  39.  cashDispensed= true;
  40.  
  41.  screen.displayMessageLine("\\nUang anda telah" + " dikeluarkan. Silahkan ambil uang anda.");
  42.  }
  43.  
  44.  else
  45.  {
  46.  screen.displayMessageLine("\\nUang tidak cukup tersedia di ATM." + "\\n\\nSilakan pilih jumlah yang lebih kecil.");
  47.  }
  48.  }
  49.  
  50.  else
  51.  {
  52.  screen.displayMessageLine("\\nUang di akun anda tidak mencukupi." + "\\n\\nSilakan pilih jumlah yang lebih kecil.");
  53.  }
  54.  }
  55.  
  56.  else
  57.  {
  58.  screen.displayMessageLine( "\\nMembatalkan Transaksi..." );
  59.  return;
  60.  }
  61.  }while (!cashDispensed);
  62.  }
  63.  
  64.  private int displayMenuOfAmounts()
  65.  {
  66.  int userChoice = 0;
  67.  Screen screen = getScreen();
  68.  int[] amounts = {0,20,40,60,100,200};
  69.  
  70.  while(userChoice == 0)
  71.  {
  72.  screen.displayMessageLine( "\\nMenu Penarikan:" );
  73.  screen.displayMessageLine( "1 - $20" );
  74.  screen.displayMessageLine( "2 - $40" );
  75.  screen.displayMessageLine( "3 - $60" );
  76.  screen.displayMessageLine( "4 - $100" );
  77.  screen.displayMessageLine( "5 - $200" );
  78.  screen.displayMessageLine( "6 - Membatalkan Transaksi" );
  79.  screen.displayMessage( "\\nPilih menu penarikan: " );
  80.  
  81.  int input = keypad.getInput();
  82.  
  83.  switch(input)
  84.  {
  85.  case 1:
  86.  case 2:
  87.  case 3:
  88.  case 4:
  89.  case 5:
  90.  userChoice = amounts[input];
  91.  break;
  92.  case CANCELED:
  93.  userChoice = CANCELED;
  94.  break;
  95.  default:
  96.  screen.displayMessageLine("\\nPilihan anda salah. Silahkan coba lagi.");
  97.  }
  98.  }
  99.  
  100.  return userChoice;
  101.  }
  102. }
');