document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. public class Withdrawal extends Transaction
  2. {
  3. private int amount;
  4.  
  5. private Keypad keypad;
  6. private CashDispenser cashDispenser;
  7. private final static int CANCELED = 6;
  8.  
  9. public Withdrawal(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase, Keypad atmKeypad,CashDispenser atmCashDispenser)
  10. {
  11. super(userAccountNumber, atmScreen, atmBankDatabase);
  12. keypad = atmKeypad;
  13. cashDispenser = atmCashDispenser;
  14. }
  15.  
  16. @Override
  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. screen.displayMessageLine( "\\nYour cash has been" +
  41. " dispensed. Please take your cash now." );
  42. }
  43. else
  44. screen.displayMessageLine(
  45. "\\nInsufficient cash available in the ATM." +
  46. "\\n\\nPlease choose a smaller amount." );
  47. }
  48. else
  49. {
  50. screen.displayMessageLine(
  51. "\\nInsufficient funds in your account." +
  52. "\\n\\nPlease choose a smaller amount." );
  53. }
  54. }
  55. else
  56. {
  57. screen.displayMessageLine("\\nCancelling transaction...");
  58. return;
  59. }
  60.  
  61. } while (!cashDispensed);
  62. }
  63.  
  64. private int displayMenuOfAmounts()
  65. {
  66. int userChoice = 0;
  67.  
  68. Screen screen = getScreen();
  69.  
  70. int[] amounts = {0, 20, 40, 60, 100, 200};
  71.  
  72. while(userChoice == 0)
  73. {
  74. screen.displayMessageLine( "\\nWithdrawal Menu:" );
  75. screen.displayMessageLine( "1 - $20" );
  76. screen.displayMessageLine( "2 - $40" );
  77. screen.displayMessageLine( "3 - $60" );
  78. screen.displayMessageLine( "4 - $100" );
  79. screen.displayMessageLine( "5 - $200" );
  80. screen.displayMessageLine( "6 - Cancel transaction" );
  81. screen.displayMessage( "\\nChoose a withdrawal amount: " );
  82.  
  83. int input = keypad.getInput();
  84.  
  85. switch (input)
  86. {
  87. case 1:
  88. case 2:
  89. case 3:
  90. case 4:
  91. case 5:
  92. userChoice = amounts[input];
  93. break;
  94. case CANCELED:
  95. userChoice = CANCELED;
  96. break;
  97. default:
  98. screen.displayMessageLine("\\nInvalid selection. Try again.");
  99. }
  100. }
  101.  
  102. return userChoice;
  103. }
  104. }
');