intellij version of CashMachineBlueJ

CashMachine.java 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package rocks.zipcode.atm;
  2. import javafx.scene.control.Alert;
  3. import rocks.zipcode.atm.bank.AccountData;
  4. import rocks.zipcode.atm.bank.Bank;
  5. import java.util.function.Consumer;
  6. import java.util.function.Supplier;
  7. /**
  8. * @author ZipCodeWilmington
  9. */
  10. public class CashMachine {
  11. private final Bank bank;
  12. private AccountData accountData = null;
  13. public CashMachine(Bank bank) {
  14. this.bank = bank;
  15. }
  16. private Consumer<AccountData> update = data -> {
  17. accountData = data;
  18. };
  19. public void login(int id) {
  20. tryCall(
  21. () -> bank.getAccountById(id),
  22. update
  23. );
  24. }
  25. public void deposit(float amount) {
  26. if (accountData != null) {
  27. tryCall(
  28. () -> bank.deposit(accountData, amount),
  29. update
  30. );
  31. }
  32. }
  33. public void withdraw(float amount) {
  34. if (accountData != null) {
  35. tryCall(
  36. () -> bank.withdraw(accountData, amount),
  37. update
  38. );
  39. // Over draft check for alert message?
  40. }
  41. }
  42. public void exit() {
  43. if (accountData != null) {
  44. accountData = null;
  45. }
  46. }
  47. @Override
  48. public String toString() {
  49. return accountData != null ? accountData.toString() : "Try account 1000 or 2000 and click submit.";
  50. }
  51. private <T> void tryCall(Supplier<ActionResult<T> > action, Consumer<T> postAction) {
  52. try {
  53. ActionResult<T> result = action.get();
  54. if (result.isSuccess()) {
  55. T data = result.getData();
  56. postAction.accept(data);
  57. } else {
  58. String errorMessage = result.getErrorMessage();
  59. // Create alert here, rather than throwing an exception
  60. throw new RuntimeException(errorMessage);
  61. }
  62. } catch (Exception e) {
  63. System.out.println("Error: " + e.getMessage());
  64. }
  65. }
  66. }