intellij version of CashMachineBlueJ

CashMachine.java 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package rocks.zipcode.atm;
  2. import rocks.zipcode.atm.bank.Account;
  3. import rocks.zipcode.atm.bank.AccountData;
  4. import rocks.zipcode.atm.bank.Bank;
  5. import java.util.ArrayList;
  6. import java.util.function.Consumer;
  7. import java.util.function.Supplier;
  8. /**
  9. * @author ZipCodeWilmington
  10. */
  11. public class CashMachine {
  12. private final Bank bank;
  13. private AccountData accountData = null;
  14. public CashMachine(Bank bank) {
  15. this.bank = bank;
  16. }
  17. private Consumer<AccountData> update = data -> {
  18. accountData = data;
  19. };
  20. public void login(int id) {
  21. tryCall(
  22. () -> bank.getAccountById(id),
  23. update
  24. );
  25. }
  26. public void deposit(double amount) {
  27. if (accountData != null) {
  28. tryCall(
  29. () -> bank.deposit(accountData, amount),
  30. update
  31. );
  32. }
  33. }
  34. public void withdraw(double amount) {
  35. if (accountData != null) {
  36. tryCall(
  37. () -> bank.withdraw(accountData, amount),
  38. update
  39. );
  40. }
  41. }
  42. public void exit() {
  43. if (accountData != null) {
  44. accountData = null;
  45. }
  46. }
  47. public String accountIdToString(){
  48. return "Account id: " + accountData.getId() + "\n";
  49. }
  50. public String nameToString(){
  51. return "Name : " + accountData.getName() + "\n";
  52. }
  53. public String emailToString(){
  54. return "Email : " + accountData.getEmail() + "\n";
  55. }
  56. public String balanceToString(){
  57. return "Balance : " + accountData.getBalance() + "\n";
  58. }
  59. public ArrayList<String> listAccounts(){
  60. return bank.listAccounts();
  61. }
  62. public int newBasicAccount(String name, String email, double balance) {
  63. bank.addBasicAccount(name,email,balance);
  64. return bank.newId();
  65. }
  66. public int newPremiumAccount(String name, String email, double balance) {
  67. bank.addPremiumAccount(name,email,balance);
  68. return bank.newId();
  69. }
  70. @Override
  71. public String toString() {
  72. return accountData != null ? accountData.toString() : "Try account 1000 or 2000 and click submit.";
  73. }
  74. private <T> void tryCall(Supplier<ActionResult<T> > action, Consumer<T> postAction) {
  75. try {
  76. ActionResult<T> result = action.get();
  77. if (result.isSuccess()) {
  78. T data = result.getData();
  79. postAction.accept(data);
  80. } else {
  81. String errorMessage = result.getErrorMessage();
  82. throw new RuntimeException(errorMessage);
  83. }
  84. } catch (Exception e) {
  85. System.out.println("Error: " + e.getMessage());
  86. }
  87. }
  88. }