From 0744ccf9d28ed09e158a13ad544add6ebc51c094 Mon Sep 17 00:00:00 2001 From: c-poteat Date: Fri, 12 Nov 2021 19:28:34 -0500 Subject: [PATCH 01/10] Updated project --- src/main/java/rocks/zipcode/atm/CashMachineApp.java | 4 ++-- .../java/rocks/zipcode/atm/bank/AccountData.java | 1 + src/main/java/rocks/zipcode/atm/bank/Bank.java | 12 ++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index c0fada8..310f7a6 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -20,8 +20,8 @@ public class CashMachineApp extends Application { private CashMachine cashMachine = new CashMachine(new Bank()); private Parent createContent() { - VBox vbox = new VBox(10); - vbox.setPrefSize(600, 600); + VBox vbox = new VBox(100); + vbox.setPrefSize(850, 600); TextArea areaInfo = new TextArea(); diff --git a/src/main/java/rocks/zipcode/atm/bank/AccountData.java b/src/main/java/rocks/zipcode/atm/bank/AccountData.java index 0255385..2a0feb4 100644 --- a/src/main/java/rocks/zipcode/atm/bank/AccountData.java +++ b/src/main/java/rocks/zipcode/atm/bank/AccountData.java @@ -30,6 +30,7 @@ public String getEmail() { return email; } + public int getBalance() { return balance; } diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index 5bd5bbf..5249025 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -13,12 +13,20 @@ public class Bank { private Map accounts = new HashMap<>(); public Bank() { + accounts.put(1, new BasicAccount(new AccountData( + 1, "Example 1", "example1@gmail.com", 500 + ))); + + accounts.put(2000, new PremiumAccount(new AccountData( + 2, "Example 2", "example2@gmail.com", 200 + ))); + accounts.put(1000, new BasicAccount(new AccountData( - 1000, "Example 1", "example1@gmail.com", 500 + 3, "Example 1", "example1@gmail.com", 500 ))); accounts.put(2000, new PremiumAccount(new AccountData( - 2000, "Example 2", "example2@gmail.com", 200 + 3, "Example 2", "example2@gmail.com", 200 ))); } From b675cdd99b6cee993388d08a8da20fe96d49ff46 Mon Sep 17 00:00:00 2001 From: c-poteat Date: Fri, 12 Nov 2021 21:07:31 -0500 Subject: [PATCH 02/10] updated --- .../java/rocks/zipcode/atm/CashMachine.java | 4 ++-- .../rocks/zipcode/atm/CashMachineApp.java | 21 +++++++++++++++---- .../java/rocks/zipcode/atm/bank/Account.java | 10 ++++----- .../rocks/zipcode/atm/bank/AccountData.java | 17 ++++++++++----- .../java/rocks/zipcode/atm/bank/Bank.java | 20 +++++++++--------- .../zipcode/atm/bank/PremiumAccount.java | 4 ++-- 6 files changed, 48 insertions(+), 28 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachine.java b/src/main/java/rocks/zipcode/atm/CashMachine.java index d6f8f74..91b6b0f 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachine.java +++ b/src/main/java/rocks/zipcode/atm/CashMachine.java @@ -29,7 +29,7 @@ public void login(int id) { ); } - public void deposit(int amount) { + public void deposit(Float amount) { if (accountData != null) { tryCall( () -> bank.deposit(accountData, amount), @@ -38,7 +38,7 @@ public void deposit(int amount) { } } - public void withdraw(int amount) { + public void withdraw(Float amount) { if (accountData != null) { tryCall( () -> bank.withdraw(accountData, amount), diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index 310f7a6..9a9dc6c 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -1,5 +1,6 @@ package rocks.zipcode.atm; +import javafx.scene.control.Alert; import rocks.zipcode.atm.bank.Bank; import javafx.application.Application; import javafx.scene.Parent; @@ -20,8 +21,8 @@ public class CashMachineApp extends Application { private CashMachine cashMachine = new CashMachine(new Bank()); private Parent createContent() { - VBox vbox = new VBox(100); - vbox.setPrefSize(850, 600); + VBox vbox = new VBox(50); + vbox.setPrefSize(850, 850); TextArea areaInfo = new TextArea(); @@ -35,7 +36,7 @@ private Parent createContent() { Button btnDeposit = new Button("Deposit"); btnDeposit.setOnAction(e -> { - int amount = Integer.parseInt(field.getText()); + Float amount = Float.parseFloat(field.getText()); cashMachine.deposit(amount); areaInfo.setText(cashMachine.toString()); @@ -43,8 +44,20 @@ private Parent createContent() { Button btnWithdraw = new Button("Withdraw"); btnWithdraw.setOnAction(e -> { - int amount = Integer.parseInt(field.getText()); + Alert overdrawn = new Alert(Alert.AlertType.NONE); + Float amount = Float.parseFloat(field.getText()); cashMachine.withdraw(amount); + if(amount < 0) { + // set alert type + overdrawn.setAlertType(Alert.AlertType.INFORMATION); + + // set content text + overdrawn.setContentText("Cannot draw a negative amount"); + + // show the dialog + overdrawn.show(); + + } areaInfo.setText(cashMachine.toString()); }); diff --git a/src/main/java/rocks/zipcode/atm/bank/Account.java b/src/main/java/rocks/zipcode/atm/bank/Account.java index 53a0fa8..55fb09f 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Account.java +++ b/src/main/java/rocks/zipcode/atm/bank/Account.java @@ -15,11 +15,11 @@ public AccountData getAccountData() { return accountData; } - public void deposit(int amount) { + public void deposit(float amount) { updateBalance(getBalance() + amount); } - public boolean withdraw(int amount) { + public boolean withdraw(float amount) { if (canWithdraw(amount)) { updateBalance(getBalance() - amount); return true; @@ -28,15 +28,15 @@ public boolean withdraw(int amount) { } } - protected boolean canWithdraw(int amount) { + protected boolean canWithdraw(float amount) { return getBalance() >= amount; } - public int getBalance() { + public float getBalance() { return accountData.getBalance(); } - private void updateBalance(int newBalance) { + private void updateBalance(float newBalance) { accountData = new AccountData(accountData.getId(), accountData.getName(), accountData.getEmail(), newBalance); } diff --git a/src/main/java/rocks/zipcode/atm/bank/AccountData.java b/src/main/java/rocks/zipcode/atm/bank/AccountData.java index 2a0feb4..483514d 100644 --- a/src/main/java/rocks/zipcode/atm/bank/AccountData.java +++ b/src/main/java/rocks/zipcode/atm/bank/AccountData.java @@ -1,5 +1,7 @@ package rocks.zipcode.atm.bank; +import javafx.scene.control.Alert; + /** * @author ZipCodeWilmington */ @@ -9,9 +11,9 @@ public final class AccountData { private final String name; private final String email; - private final int balance; + private final float balance; - AccountData(int id, String name, String email, int balance) { + AccountData(int id, String name, String email, float balance) { this.id = id; this.name = name; this.email = email; @@ -31,15 +33,20 @@ public String getEmail() { } - public int getBalance() { + public float getBalance() { return balance; } @Override public String toString() { + if(balance < 0) { + return "Cannot overdraw account"; + } return "Account id: " + id + '\n' + "Name: " + name + '\n' + "Email: " + email + '\n' + "Balance: " + balance; - } -} + + + } + } \ No newline at end of file diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index 5249025..55f0c4e 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -14,19 +14,18 @@ public class Bank { public Bank() { accounts.put(1, new BasicAccount(new AccountData( - 1, "Example 1", "example1@gmail.com", 500 + 1, "Grim Reaper", "grimreaper@gmail.com", 5000 ))); - accounts.put(2000, new PremiumAccount(new AccountData( - 2, "Example 2", "example2@gmail.com", 200 + accounts.put(2, new BasicAccount(new AccountData( + 2, "Mad Max", "madmax3000@gmail.com", 6500 ))); - - accounts.put(1000, new BasicAccount(new AccountData( - 3, "Example 1", "example1@gmail.com", 500 + accounts.put(3, new PremiumAccount(new AccountData( + 3, "Darth Vader", "dVader@gmail.com", 1000000 ))); - accounts.put(2000, new PremiumAccount(new AccountData( - 3, "Example 2", "example2@gmail.com", 200 + accounts.put(4, new PremiumAccount(new AccountData( + 4, "John Snow", "jsnow@gmail.com", 554 ))); } @@ -35,19 +34,20 @@ public ActionResult getAccountById(int id) { if (account != null) { return ActionResult.success(account.getAccountData()); + } else { return ActionResult.fail("No account with id: " + id + "\nTry account 1000 or 2000"); } } - public ActionResult deposit(AccountData accountData, int amount) { + public ActionResult deposit(AccountData accountData, Float amount) { Account account = accounts.get(accountData.getId()); account.deposit(amount); return ActionResult.success(account.getAccountData()); } - public ActionResult withdraw(AccountData accountData, int amount) { + public ActionResult withdraw(AccountData accountData, Float amount) { Account account = accounts.get(accountData.getId()); boolean ok = account.withdraw(amount); diff --git a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java index e4c9616..d656026 100644 --- a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java @@ -5,14 +5,14 @@ */ public class PremiumAccount extends Account { - private static final int OVERDRAFT_LIMIT = 100; + private static final float OVERDRAFT_LIMIT = 100; public PremiumAccount(AccountData accountData) { super(accountData); } @Override - protected boolean canWithdraw(int amount) { + protected boolean canWithdraw(float amount) { return getBalance() + OVERDRAFT_LIMIT >= amount; } } From 1a8737615c67d0382f5e677d40801f2adf15c75e Mon Sep 17 00:00:00 2001 From: c-poteat Date: Fri, 12 Nov 2021 23:32:40 -0500 Subject: [PATCH 03/10] updated --- .../java/rocks/zipcode/atm/CashMachine.java | 2 +- .../rocks/zipcode/atm/CashMachineApp.java | 67 ++++++++++++++++--- .../java/rocks/zipcode/atm/bank/Bank.java | 2 +- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachine.java b/src/main/java/rocks/zipcode/atm/CashMachine.java index 91b6b0f..ebae498 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachine.java +++ b/src/main/java/rocks/zipcode/atm/CashMachine.java @@ -55,7 +55,7 @@ public void exit() { @Override public String toString() { - return accountData != null ? accountData.toString() : "Try account 1000 or 2000 and click submit."; + return accountData != null ? accountData.toString() : "Please login first!"; } private void tryCall(Supplier > action, Consumer postAction) { diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index 9a9dc6c..92dc50e 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -1,6 +1,9 @@ package rocks.zipcode.atm; import javafx.scene.control.Alert; +import javafx.scene.effect.DropShadow; +import javafx.scene.text.Font; +import javafx.scene.text.FontPosture; import rocks.zipcode.atm.bank.Bank; import javafx.application.Application; import javafx.scene.Parent; @@ -16,33 +19,72 @@ * @author ZipCodeWilmington */ public class CashMachineApp extends Application { + Button btnLogin; + Button btnSubmit; + Button btnDeposit; + Button btnWithdraw; + int password; + private TextField field = new TextField(); private CashMachine cashMachine = new CashMachine(new Bank()); + private void disableButtons() { + btnDeposit.setVisible(false); + btnSubmit.setVisible(false); + btnWithdraw.setVisible(false); + disableButtons(); + } + private Parent createContent() { - VBox vbox = new VBox(50); - vbox.setPrefSize(850, 850); + + VBox vbox = new VBox(20); + vbox.setPrefSize(500, 450); TextArea areaInfo = new TextArea(); + areaInfo.setPrefHeight(75); + areaInfo.setPrefWidth(100); + btnLogin = new Button("Please Login"); + + btnLogin.setTranslateX(10); + btnLogin.setTranslateY(50); + btnLogin.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); + btnLogin.setOnAction(e -> { + + password = Integer.parseInt(field.getText()); + password = 1007; + cashMachine.login(password); + areaInfo.setText(cashMachine.toString()); + + }); - Button btnSubmit = new Button("Set Account ID"); + + btnSubmit = new Button("Set Account ID"); + btnSubmit.setTranslateX(30); + btnSubmit.setTranslateY(200); + btnSubmit.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); btnSubmit.setOnAction(e -> { int id = Integer.parseInt(field.getText()); cashMachine.login(id); - areaInfo.setText(cashMachine.toString()); + areaInfo.setText(cashMachine.toString()); }); - Button btnDeposit = new Button("Deposit"); + btnDeposit = new Button("Deposit"); + btnDeposit.setTranslateX(50); + btnDeposit.setTranslateY(200); + btnDeposit.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); btnDeposit.setOnAction(e -> { Float amount = Float.parseFloat(field.getText()); cashMachine.deposit(amount); - areaInfo.setText(cashMachine.toString()); + areaInfo.setText(cashMachine.toString()); }); - Button btnWithdraw = new Button("Withdraw"); + btnWithdraw = new Button("Withdraw"); + btnWithdraw.setTranslateX(25); + btnWithdraw.setTranslateY(163); + btnWithdraw.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); btnWithdraw.setOnAction(e -> { Alert overdrawn = new Alert(Alert.AlertType.NONE); Float amount = Float.parseFloat(field.getText()); @@ -59,10 +101,13 @@ private Parent createContent() { } - areaInfo.setText(cashMachine.toString()); + areaInfo.setText(cashMachine.toString()); }); - Button btnExit = new Button("Exit"); + Button btnExit = new Button("Reset"); + btnExit.setTranslateX(60); + btnExit.setTranslateY(220); + btnExit.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); btnExit.setOnAction(e -> { cashMachine.exit(); @@ -71,6 +116,7 @@ private Parent createContent() { FlowPane flowpane = new FlowPane(); + flowpane.getChildren().add(btnLogin); flowpane.getChildren().add(btnSubmit); flowpane.getChildren().add(btnDeposit); flowpane.getChildren().add(btnWithdraw); @@ -79,6 +125,9 @@ private Parent createContent() { return vbox; } + + + @Override public void start(Stage stage) throws Exception { stage.setScene(new Scene(createContent())); diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index 55f0c4e..9aa8872 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -36,7 +36,7 @@ public ActionResult getAccountById(int id) { return ActionResult.success(account.getAccountData()); } else { - return ActionResult.fail("No account with id: " + id + "\nTry account 1000 or 2000"); + return ActionResult.fail("No account with id: " + id + "\nTry account numbers 1, 2, 3, 4"); } } From 3c247e5eb892b055fb25c27edaca3bd73a0f9a85 Mon Sep 17 00:00:00 2001 From: carnell Date: Mon, 15 Nov 2021 13:31:13 -0500 Subject: [PATCH 04/10] Updated project --- .DS_Store | Bin 0 -> 6148 bytes pom.xml | 8 + src/.DS_Store | Bin 0 -> 6148 bytes .../java/rocks/zipcode/atm/ActionResult.java | 76 ++--- .../java/rocks/zipcode/atm/CashMachine.java | 155 ++++----- .../rocks/zipcode/atm/CashMachineApp.java | 318 ++++++++++-------- .../java/rocks/zipcode/atm/bank/Account.java | 93 ++--- .../rocks/zipcode/atm/bank/AccountData.java | 116 ++++--- .../java/rocks/zipcode/atm/bank/Bank.java | 125 +++---- .../rocks/zipcode/atm/bank/BasicAccount.java | 32 +- .../zipcode/atm/bank/PremiumAccount.java | 36 +- .../rocks/zipcode/atm/bank/AccountTest.java | 44 +++ 12 files changed, 566 insertions(+), 437 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/test/java/rocks/zipcode/atm/bank/AccountTest.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3b3b07067b324e5a9cdb26ddb917130a4987f099 GIT binary patch literal 6148 zcmeHK%}N6?5Ke5>v?BH(*kdlo}97VzCELB6bFnZzeO7?0m5KVT|$SuD6f~Vy}lZGnV${Qrk`A*b?RsR z!0Km8MW4DKoQJ(pyRvzt;>-`@UZRu3ZVy7PF2cC0Mol%0yQ!YXGY%n2qSUTb$783_ zsL95@GpWh(!A`v zGL4=_5fTH$05L!eEEEIw7!Ydbkv2XuISMt>0z1$2B% zAWDm_#oQoxK)6W-G^yM^F}O*GacSdRi@8CQ&bVF~=CLbJA1_?54&zdXGwvFso){no zW*I0Lvx4XUG5j)fANjK>WDx_zz&~Sv7h7Jd2}Rkn^;>y()=Fp{Xebz$qXGi@%q0K} h+()X~Y5Wp(h;uFG25}Y~*Xe+C5zvHCM-2P|10PItPtyPZ literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 541b012..d296103 100644 --- a/pom.xml +++ b/pom.xml @@ -5,6 +5,14 @@ com.almasb CashMachine 0.1-SNAPSHOT + + + junit + junit + 4.13.1 + test + + jar diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5f6f01e091ce88eae977ffd1f05b8363890016d1 GIT binary patch literal 6148 zcmeHK!Ab)$5KY=u(~8)GV2`!E8!^dKy?9=r)FdQfS1X|W62UFmKuT37Zr^pE@k zf5(|5EtV>H60tKdd6UUZLf$T!gfYgOqprZXKy&&ohRdUenLCE!G5Ow2mGag0VM9t&s0U=7F z)UH$~6T8u<$;N@5)#T)Gw_cNbjr}YuiR~Tx=(IC;K93@BjHE>JbCPz`tUETP?TMge{rcy0AH{wGy-gih^;u##ss& isuV*kmf|X?67Wkj03Cz5M(}{pML^L&4KeVm4153x%utyC literal 0 HcmV?d00001 diff --git a/src/main/java/rocks/zipcode/atm/ActionResult.java b/src/main/java/rocks/zipcode/atm/ActionResult.java index 8d41185..420a47d 100644 --- a/src/main/java/rocks/zipcode/atm/ActionResult.java +++ b/src/main/java/rocks/zipcode/atm/ActionResult.java @@ -1,38 +1,38 @@ -package rocks.zipcode.atm; - -/** - * @author ZipCodeWilmington - */ -public class ActionResult { - - private T data; - private String errorMessage; - - private ActionResult(T data) { - this.data = data; - } - - private ActionResult(String errorMessage) { - this.errorMessage = errorMessage; - } - - public T getData() { - return data; - } - - public String getErrorMessage() { - return errorMessage; - } - - public boolean isSuccess() { - return data != null; - } - - public static ActionResult success(E data) { - return new ActionResult(data); - } - - public static ActionResult fail(String errorMessage) { - return new ActionResult(errorMessage); - } -} +package rocks.zipcode.atm; + +/** + * @author ZipCodeWilmington + */ +public class ActionResult { + + private T data; + private String errorMessage; + + private ActionResult(T data) { + this.data = data; + } + + private ActionResult(String errorMessage) { + this.errorMessage = errorMessage; + } + + public T getData() { + return data; + } + + public String getErrorMessage() { + return errorMessage; + } + + public boolean isSuccess() { + return data != null; + } + + public static ActionResult success(E data) { + return new ActionResult(data); + } + + public static ActionResult fail(String errorMessage) { + return new ActionResult(errorMessage); + } +} diff --git a/src/main/java/rocks/zipcode/atm/CashMachine.java b/src/main/java/rocks/zipcode/atm/CashMachine.java index ebae498..c9a6e84 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachine.java +++ b/src/main/java/rocks/zipcode/atm/CashMachine.java @@ -1,75 +1,80 @@ -package rocks.zipcode.atm; - -import rocks.zipcode.atm.bank.AccountData; -import rocks.zipcode.atm.bank.Bank; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -/** - * @author ZipCodeWilmington - */ -public class CashMachine { - - private final Bank bank; - private AccountData accountData = null; - - public CashMachine(Bank bank) { - this.bank = bank; - } - - private Consumer update = data -> { - accountData = data; - }; - - public void login(int id) { - tryCall( - () -> bank.getAccountById(id), - update - ); - } - - public void deposit(Float amount) { - if (accountData != null) { - tryCall( - () -> bank.deposit(accountData, amount), - update - ); - } - } - - public void withdraw(Float amount) { - if (accountData != null) { - tryCall( - () -> bank.withdraw(accountData, amount), - update - ); - } - } - - public void exit() { - if (accountData != null) { - accountData = null; - } - } - - @Override - public String toString() { - return accountData != null ? accountData.toString() : "Please login first!"; - } - - private void tryCall(Supplier > action, Consumer postAction) { - try { - ActionResult result = action.get(); - if (result.isSuccess()) { - T data = result.getData(); - postAction.accept(data); - } else { - String errorMessage = result.getErrorMessage(); - throw new RuntimeException(errorMessage); - } - } catch (Exception e) { - System.out.println("Error: " + e.getMessage()); - } - } -} +package rocks.zipcode.atm; + +import javafx.scene.control.TextField; +import rocks.zipcode.atm.bank.AccountData; +import rocks.zipcode.atm.bank.Bank; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +/** + * @author ZipCodeWilmington + */ +public class CashMachine { + + private final Bank bank; + private AccountData accountData = null; + + public CashMachine(Bank bank) { + this.bank = bank; + } + + private Consumer update = data -> { + accountData = data; + }; + + public Object login(int id) { + tryCall( + () -> bank.getAccountById(id), + update + ); + return null; + } + + public void deposit(Float amount) { + if (accountData != null) { + tryCall( + () -> bank.deposit(accountData, amount), + update + ); + } + } + + public void withdraw(Float amount) { + if (accountData != null) { + tryCall( + () -> bank.withdraw(accountData, (float) amount), + update + + ); + } + } + + public void exit() { + if (accountData != null) { + accountData = null; + } + } + + @Override + public String toString() { + return accountData != null ? accountData.toString() : "Cleared"; + } + + private void tryCall(Supplier > action, Consumer postAction) { + try { + ActionResult result = action.get(); + if (result.isSuccess()) { + T data = result.getData(); + postAction.accept(data); + } else { + String errorMessage = result.getErrorMessage(); + throw new RuntimeException(errorMessage); + } + } catch (Exception e) { + System.out.println("Error: " + e.getMessage()); + } + } + +} + diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index 92dc50e..86bdac8 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -1,140 +1,178 @@ -package rocks.zipcode.atm; - -import javafx.scene.control.Alert; -import javafx.scene.effect.DropShadow; -import javafx.scene.text.Font; -import javafx.scene.text.FontPosture; -import rocks.zipcode.atm.bank.Bank; -import javafx.application.Application; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; -import javafx.scene.layout.VBox; -import javafx.stage.Stage; -import javafx.scene.layout.FlowPane; - -/** - * @author ZipCodeWilmington - */ -public class CashMachineApp extends Application { - Button btnLogin; - Button btnSubmit; - Button btnDeposit; - Button btnWithdraw; - int password; - - - private TextField field = new TextField(); - private CashMachine cashMachine = new CashMachine(new Bank()); - - private void disableButtons() { - btnDeposit.setVisible(false); - btnSubmit.setVisible(false); - btnWithdraw.setVisible(false); - disableButtons(); - } - - private Parent createContent() { - - VBox vbox = new VBox(20); - vbox.setPrefSize(500, 450); - - TextArea areaInfo = new TextArea(); - areaInfo.setPrefHeight(75); - areaInfo.setPrefWidth(100); - btnLogin = new Button("Please Login"); - - btnLogin.setTranslateX(10); - btnLogin.setTranslateY(50); - btnLogin.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); - btnLogin.setOnAction(e -> { - - password = Integer.parseInt(field.getText()); - password = 1007; - cashMachine.login(password); - areaInfo.setText(cashMachine.toString()); - - }); - - - btnSubmit = new Button("Set Account ID"); - btnSubmit.setTranslateX(30); - btnSubmit.setTranslateY(200); - btnSubmit.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); - btnSubmit.setOnAction(e -> { - int id = Integer.parseInt(field.getText()); - cashMachine.login(id); - - areaInfo.setText(cashMachine.toString()); - }); - - btnDeposit = new Button("Deposit"); - btnDeposit.setTranslateX(50); - btnDeposit.setTranslateY(200); - btnDeposit.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); - btnDeposit.setOnAction(e -> { - Float amount = Float.parseFloat(field.getText()); - cashMachine.deposit(amount); - - areaInfo.setText(cashMachine.toString()); - }); - - btnWithdraw = new Button("Withdraw"); - btnWithdraw.setTranslateX(25); - btnWithdraw.setTranslateY(163); - btnWithdraw.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); - btnWithdraw.setOnAction(e -> { - Alert overdrawn = new Alert(Alert.AlertType.NONE); - Float amount = Float.parseFloat(field.getText()); - cashMachine.withdraw(amount); - if(amount < 0) { - // set alert type - overdrawn.setAlertType(Alert.AlertType.INFORMATION); - - // set content text - overdrawn.setContentText("Cannot draw a negative amount"); - - // show the dialog - overdrawn.show(); - - } - - areaInfo.setText(cashMachine.toString()); - }); - - Button btnExit = new Button("Reset"); - btnExit.setTranslateX(60); - btnExit.setTranslateY(220); - btnExit.setStyle("-fx-font: 20 arial; -fx-base: #db6204;"); - btnExit.setOnAction(e -> { - cashMachine.exit(); - - areaInfo.setText(cashMachine.toString()); - }); - - FlowPane flowpane = new FlowPane(); - - flowpane.getChildren().add(btnLogin); - flowpane.getChildren().add(btnSubmit); - flowpane.getChildren().add(btnDeposit); - flowpane.getChildren().add(btnWithdraw); - flowpane.getChildren().add(btnExit); - vbox.getChildren().addAll(field, flowpane, areaInfo); - return vbox; - } - - - - - @Override - public void start(Stage stage) throws Exception { - stage.setScene(new Scene(createContent())); - stage.show(); - } - - public static void main(String[] args) { - launch(args); - } -} +package rocks.zipcode.atm; +import javafx.scene.control.*; +import javafx.scene.layout.*; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.stage.StageStyle; +import rocks.zipcode.atm.bank.Bank; +import javafx.application.Application; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import javafx.scene.layout.VBox; + + + +/** + * @author ZipCodeWilmington + */ +public class CashMachineApp extends Application { + Button btnSubmit; + Button btnDeposit; + Button btnWithdraw; + Button btnClear; + Button btnExit; + Float OVERDRAFT_LIMIT = Float.valueOf(100); +// Button btnAllAccounts; + +private TextField accountId = new TextField(); +private TextField deposit = new TextField(); +private TextField withdraw = new TextField(); +private CashMachine cashMachine = new CashMachine(new Bank()); + + private Parent createContent() { + + withdraw.setMaxWidth(180); + withdraw.setTranslateX(575); + withdraw.setTranslateY(5); + deposit.setMaxWidth(175); + deposit.setTranslateX(300); + deposit.setTranslateY(40); + accountId.setTranslateX(50); + accountId.setTranslateY(75); + accountId.setMaxWidth(175); + + accountId.setStyle("-fx-text-inner-color: Green;"); + accountId.setFont(Font.font("Verdana", FontWeight.BOLD, 12)); + deposit.setStyle("-fx-text-inner-color: Green;"); + deposit.setFont(Font.font("Verdana", FontWeight.BOLD, 12)); + withdraw.setStyle("-fx-text-inner-color: Green;"); + withdraw.setFont(Font.font("Verdana", FontWeight.BOLD, 12)); + VBox vbox = new VBox(10); + vbox.setPrefSize(500, 500); + + TextArea areaInfo = new TextArea(); + areaInfo.setMaxWidth(500); + areaInfo.setTranslateX(140); + areaInfo.setFont(Font.font("Verdana", FontWeight.BOLD, 15)); + areaInfo.setStyle("-fx-text-inner-color: Green;"); + accountId.setPromptText("Enter Account ID"); + deposit.setPromptText("Enter Deposit Amount"); + withdraw.setPromptText("Enter Withdraw Amount"); + + areaInfo.setPrefHeight(200); + areaInfo.setPrefWidth(200); + + btnSubmit = new Button("Login/Submit"); + btnSubmit.setTranslateX(5); + btnSubmit.setTranslateY(250); + btnSubmit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); + + btnSubmit.setOnAction(e -> { + areaInfo.setText("Please input account id 10, 20, 30, or 40 to start."); + btnDeposit.setVisible(true); + btnWithdraw.setVisible(true); + btnClear.setVisible(true); + btnExit.setVisible(true); + // btnAllAccounts.setVisible(true); + int id = Integer.parseInt(accountId.getText()); + cashMachine.login(id); + areaInfo.setText(cashMachine.toString()); + }); + btnDeposit = new Button("Deposit"); + btnDeposit.setTranslateX(30); + btnDeposit.setTranslateY(250); + btnDeposit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); + btnDeposit.setOnAction(e -> { + Float amount = Float.parseFloat(deposit.getText()); + if (amount < 0) { + areaInfo.setText("Input cannot be negative. Please try again."); + } else { + cashMachine.deposit(amount); + areaInfo.setText(cashMachine.toString()); + } + }); + btnWithdraw = new Button("Withdraw"); + btnWithdraw.setTranslateX(380); + btnWithdraw.setTranslateY(250); + btnWithdraw.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); + btnWithdraw.setOnAction(e -> { + Float amount = Float.parseFloat(withdraw.getText()); + if (amount < OVERDRAFT_LIMIT) { + areaInfo.setText("Sorry, this withdrawal would exceed the overdraft limit"); + } + if (amount < 0) { + areaInfo.setText("Sorry, you can not withdraw a negative amount"); + } else { + cashMachine.withdraw(amount); + areaInfo.setText(cashMachine.toString()); + } + }); + btnClear = new Button("Clear"); + btnClear.setTranslateX(85); + btnClear.setTranslateY(250); + btnClear.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); + btnClear.setOnAction(e -> { + accountId.clear(); + deposit.clear(); + withdraw.clear(); + cashMachine.exit(); + areaInfo.setText(cashMachine.toString()); + }); + btnExit = new Button("Exit"); + btnExit.setTranslateX(35); + btnExit.setTranslateY(300); + btnExit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); + btnExit.setOnAction(e -> { + System.exit(0); + areaInfo.setText(cashMachine.toString()); + + }); + +// btnAllAccounts = new Button("All Accounts"); +// btnAllAccounts.setTranslateX(300); +// btnAllAccounts.setTranslateY(250); +// btnAllAccounts.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); +// btnAllAccounts.setOnAction(e -> { + +// areaInfo.setText(cashMachine.toString()); +// }); + + FlowPane flowpane = new FlowPane(); + flowpane.getChildren().add(btnSubmit); + flowpane.getChildren().add(btnDeposit); + flowpane.getChildren().add(btnWithdraw); + flowpane.getChildren().add(btnClear); + flowpane.getChildren().add(btnExit); +// flowpane.getChildren().add(btnAllAccounts); + vbox.getChildren().addAll(accountId, deposit, withdraw, flowpane, areaInfo); + return vbox; + + + } + +@Override +public void start(Stage stage) throws Exception { + stage.setTitle("Welcome to ZipCloud Bank"); + stage.setWidth(800); + stage.setHeight(600); + stage.initStyle(StageStyle.DECORATED); + stage.setScene(new Scene(createContent())); + stage.show(); + + btnDeposit.setVisible(false); + btnWithdraw.setVisible(false); + btnClear.setVisible(false); + btnExit.setVisible(false); + +// btnAllAccounts.setVisible(false); + + } + +public static void main(String[] args) { + launch(args); + } +} + + + diff --git a/src/main/java/rocks/zipcode/atm/bank/Account.java b/src/main/java/rocks/zipcode/atm/bank/Account.java index 55fb09f..17ac750 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Account.java +++ b/src/main/java/rocks/zipcode/atm/bank/Account.java @@ -1,43 +1,50 @@ -package rocks.zipcode.atm.bank; - -/** - * @author ZipCodeWilmington - */ -public abstract class Account { - - private AccountData accountData; - - public Account(AccountData accountData) { - this.accountData = accountData; - } - - public AccountData getAccountData() { - return accountData; - } - - public void deposit(float amount) { - updateBalance(getBalance() + amount); - } - - public boolean withdraw(float amount) { - if (canWithdraw(amount)) { - updateBalance(getBalance() - amount); - return true; - } else { - return false; - } - } - - protected boolean canWithdraw(float amount) { - return getBalance() >= amount; - } - - public float getBalance() { - return accountData.getBalance(); - } - - private void updateBalance(float newBalance) { - accountData = new AccountData(accountData.getId(), accountData.getName(), accountData.getEmail(), - newBalance); - } -} +package rocks.zipcode.atm.bank; + +/** + * @author ZipCodeWilmington + */ +public abstract class Account { + + private AccountData accountData; + + public Account(AccountData accountData) { + this.accountData = accountData; + } + + public static Float getBalance(Float amount) { + return amount; + } + + public AccountData getAccountData() { + return accountData; + } + + public void deposit(Float amount) { + updateBalance(getBalance() + amount); + } + + public boolean withdraw (Float amount){ + if (canWithdraw(amount)) { + updateBalance(getBalance() - amount); + return true; + } else { + return false; + } + } + + protected boolean canWithdraw (Float amount){ + return getBalance() >= amount; + } + + public Float getBalance () { + return accountData.getBalance(); + } + + private void updateBalance (Float newBalance){ + accountData = new AccountData(accountData.getId(), accountData.getName(), accountData.getEmail(), + newBalance); + } + protected abstract boolean canWithdraw ( float amount); + +} + diff --git a/src/main/java/rocks/zipcode/atm/bank/AccountData.java b/src/main/java/rocks/zipcode/atm/bank/AccountData.java index 483514d..e5d29c7 100644 --- a/src/main/java/rocks/zipcode/atm/bank/AccountData.java +++ b/src/main/java/rocks/zipcode/atm/bank/AccountData.java @@ -1,52 +1,64 @@ -package rocks.zipcode.atm.bank; - -import javafx.scene.control.Alert; - -/** - * @author ZipCodeWilmington - */ -public final class AccountData { - - private final int id; - private final String name; - private final String email; - - private final float balance; - - AccountData(int id, String name, String email, float balance) { - this.id = id; - this.name = name; - this.email = email; - this.balance = balance; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - - public float getBalance() { - return balance; - } - - @Override - public String toString() { - if(balance < 0) { - return "Cannot overdraw account"; - } - return "Account id: " + id + '\n' + - "Name: " + name + '\n' + - "Email: " + email + '\n' + - "Balance: " + balance; - - - } - } \ No newline at end of file +package rocks.zipcode.atm.bank; + + +import java.math.BigDecimal; +import java.text.DecimalFormat; + +import javafx.scene.control.Alert; + + +/** + * @author ZipCodeWilmington + */ +public final class AccountData { + + private final int id; + private final String name; + private final String email; + private final Float balance; + + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + + AccountData( int id, String name, String email,float balance){ + this.id = id; + this.name = name; + this.email = email; + this.balance = balance; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + public Float getBalance() { + return balance; + } + public static float round(float d,int decimalPlace){ + BigDecimal bd = new BigDecimal(Float.toString(d)); + bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP); + return bd.floatValue(); + } + + + @Override + public String toString () { + return "Account id: " + id + '\n' + + "Name: " + name + '\n' + + "Email: " + email + '\n' + + "Balance: " + String.format("$" + "%,.2f", Float.valueOf(decimalFormat.format(balance))); + + } + + } + + + + + diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index 9aa8872..e4bbbba 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -1,60 +1,65 @@ -package rocks.zipcode.atm.bank; - -import rocks.zipcode.atm.ActionResult; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author ZipCodeWilmington - */ -public class Bank { - - private Map accounts = new HashMap<>(); - - public Bank() { - accounts.put(1, new BasicAccount(new AccountData( - 1, "Grim Reaper", "grimreaper@gmail.com", 5000 - ))); - - accounts.put(2, new BasicAccount(new AccountData( - 2, "Mad Max", "madmax3000@gmail.com", 6500 - ))); - accounts.put(3, new PremiumAccount(new AccountData( - 3, "Darth Vader", "dVader@gmail.com", 1000000 - ))); - - accounts.put(4, new PremiumAccount(new AccountData( - 4, "John Snow", "jsnow@gmail.com", 554 - ))); - } - - public ActionResult getAccountById(int id) { - Account account = accounts.get(id); - - if (account != null) { - return ActionResult.success(account.getAccountData()); - - } else { - return ActionResult.fail("No account with id: " + id + "\nTry account numbers 1, 2, 3, 4"); - } - } - - public ActionResult deposit(AccountData accountData, Float amount) { - Account account = accounts.get(accountData.getId()); - account.deposit(amount); - - return ActionResult.success(account.getAccountData()); - } - - public ActionResult withdraw(AccountData accountData, Float amount) { - Account account = accounts.get(accountData.getId()); - boolean ok = account.withdraw(amount); - - if (ok) { - return ActionResult.success(account.getAccountData()); - } else { - return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance()); - } - } -} +package rocks.zipcode.atm.bank; + +import rocks.zipcode.atm.ActionResult; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ZipCodeWilmington + */ +public class Bank { + + private Map accounts = new HashMap<>(); + + public Bank() { + accounts.put(10, new BasicAccount(new AccountData( + 10, "Darth Vader", "deathstar@gmail.com", 1500.25f + ))); + + accounts.put(20, new PremiumAccount(new AccountData( + 20, "Clark Kent", "dailyplanet@gmail.com", 2156.56f + ))); + accounts.put(30, new BasicAccount(new AccountData( + 30, "Norman Bates", "batesmotel@gmail.com", -298.23f + ))); + accounts.put(40, new PremiumAccount(new AccountData( + 40, "Marty McFly", "backIIthefuture@gmail.com", 6008.58f + + ))); + } + + public ActionResult getAccountById(int id) { + Account account = accounts.get(id); + + if (account != null) { + return ActionResult.success(account.getAccountData()); + + } else { + return ActionResult.fail("No account with id: " + id + "\nPlease input account numbers 10, 20, 30, 40"); + } + } + + public ActionResult deposit(AccountData accountData, Float amount) { + Account account = accounts.get(accountData.getId()); + + account.deposit(amount); + return ActionResult.success(account.getAccountData()); + } + + public ActionResult withdraw(AccountData accountData, Float amount) { + Account account = accounts.get(accountData.getId()); + boolean ok = account.withdraw(amount); + + if (ok) { + return ActionResult.success(account.getAccountData()); + + } else { + return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance()); + } + + } + public Map getAccounts() { + return accounts; + } +} diff --git a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java index 08e94a3..145286a 100644 --- a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java @@ -1,11 +1,21 @@ -package rocks.zipcode.atm.bank; - -/** - * @author ZipCodeWilmington - */ -public class BasicAccount extends Account { - - public BasicAccount(AccountData accountData) { - super(accountData); - } -} +package rocks.zipcode.atm.bank; + +/** + * @author ZipCodeWilmington + */ +public class BasicAccount extends Account { + + public BasicAccount(AccountData accountData) { + super(accountData); + } + + @Override + protected boolean canWithdraw(float amount) { + return false; + } + + +} + + + diff --git a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java index d656026..444c543 100644 --- a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java @@ -1,18 +1,18 @@ -package rocks.zipcode.atm.bank; - -/** - * @author ZipCodeWilmington - */ -public class PremiumAccount extends Account { - - private static final float OVERDRAFT_LIMIT = 100; - - public PremiumAccount(AccountData accountData) { - super(accountData); - } - - @Override - protected boolean canWithdraw(float amount) { - return getBalance() + OVERDRAFT_LIMIT >= amount; - } -} +package rocks.zipcode.atm.bank; + +/** + * @author ZipCodeWilmington + */ +public class PremiumAccount extends Account { + + private static final float OVERDRAFT_LIMIT = 100; + + public PremiumAccount(AccountData accountData) { + super(accountData); + } + + @Override + protected boolean canWithdraw(float amount) { + return getBalance() + OVERDRAFT_LIMIT >= amount; + } +} diff --git a/src/test/java/rocks/zipcode/atm/bank/AccountTest.java b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java new file mode 100644 index 0000000..6a26a72 --- /dev/null +++ b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java @@ -0,0 +1,44 @@ +package rocks.zipcode.atm.bank; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class AccountTest { + + @Test + public void deposit() { + // Given + Bank bank = new Bank(); + Account account = bank.getAccounts().get(10); + + //When + account.deposit(100.00f); + + + // Expected + Float expected = 1500.25f + 100.00f; + Float actual = account.getBalance(); + + Assert.assertEquals(actual, expected); + } + + @Test + public void withdraw() { + // Given + Bank bank = new Bank(); + Account account = bank.getAccounts().get(10); + + //When + account.withdraw(100.00f); + + + // Expected + Float expected = 1500.25f - 100.00f; + Float actual = account.getBalance(); + + Assert.assertEquals(actual, expected); + + } +} \ No newline at end of file From cfc0685f2e8571e7a0faa4c45b89c7be0e5b76d2 Mon Sep 17 00:00:00 2001 From: c-poteat Date: Mon, 15 Nov 2021 22:40:04 -0500 Subject: [PATCH 05/10] updated --- src/main/java/rocks/zipcode/atm/CashMachineApp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index 86bdac8..7cb6575 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -174,5 +174,5 @@ public static void main(String[] args) { } } - +/// From a3814e93c7b275e192bb78cc6986ebb7c3260a80 Mon Sep 17 00:00:00 2001 From: c-poteat Date: Mon, 15 Nov 2021 22:46:51 -0500 Subject: [PATCH 06/10] updated again --- .../java/rocks/zipcode/atm/CashMachineApp.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index 7cb6575..87478f6 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -12,7 +12,6 @@ import javafx.scene.layout.VBox; - /** * @author ZipCodeWilmington */ @@ -23,7 +22,6 @@ public class CashMachineApp extends Application { Button btnClear; Button btnExit; Float OVERDRAFT_LIMIT = Float.valueOf(100); -// Button btnAllAccounts; private TextField accountId = new TextField(); private TextField deposit = new TextField(); @@ -129,26 +127,14 @@ private Parent createContent() { }); -// btnAllAccounts = new Button("All Accounts"); -// btnAllAccounts.setTranslateX(300); -// btnAllAccounts.setTranslateY(250); -// btnAllAccounts.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); -// btnAllAccounts.setOnAction(e -> { - -// areaInfo.setText(cashMachine.toString()); -// }); - FlowPane flowpane = new FlowPane(); flowpane.getChildren().add(btnSubmit); flowpane.getChildren().add(btnDeposit); flowpane.getChildren().add(btnWithdraw); flowpane.getChildren().add(btnClear); flowpane.getChildren().add(btnExit); -// flowpane.getChildren().add(btnAllAccounts); vbox.getChildren().addAll(accountId, deposit, withdraw, flowpane, areaInfo); return vbox; - - } @Override @@ -165,14 +151,10 @@ public void start(Stage stage) throws Exception { btnClear.setVisible(false); btnExit.setVisible(false); -// btnAllAccounts.setVisible(false); - } - public static void main(String[] args) { launch(args); } } -/// From 10bc4e0629b1998a95f89cfc494a19fed8e850f0 Mon Sep 17 00:00:00 2001 From: c-poteat Date: Tue, 16 Nov 2021 13:18:00 -0500 Subject: [PATCH 07/10] Updated project --- .../rocks/zipcode/atm/CashMachineApp.java | 102 ++++++++++-------- .../java/rocks/zipcode/atm/bank/Bank.java | 2 + .../rocks/zipcode/atm/bank/BasicAccount.java | 2 + .../zipcode/atm/bank/PremiumAccount.java | 11 +- .../rocks/zipcode/atm/bank/AccountTest.java | 2 +- 5 files changed, 69 insertions(+), 50 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index 87478f6..ba57151 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -1,8 +1,12 @@ package rocks.zipcode.atm; +import com.sun.javafx.scene.text.TextLayoutFactory; import javafx.scene.control.*; import javafx.scene.layout.*; +import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.scene.text.TextAlignment; import javafx.stage.StageStyle; import rocks.zipcode.atm.bank.Bank; import javafx.application.Application; @@ -11,35 +15,41 @@ import javafx.stage.Stage; import javafx.scene.layout.VBox; - /** * @author ZipCodeWilmington */ public class CashMachineApp extends Application { - Button btnSubmit; - Button btnDeposit; - Button btnWithdraw; - Button btnClear; - Button btnExit; - Float OVERDRAFT_LIMIT = Float.valueOf(100); + private Button btnSubmit; + private Button btnDeposit; + private Button btnWithdraw; + private Button btnClear; + private Button btnExit; + Float OVERDRAFT_LIMIT = Float.valueOf(100); private TextField accountId = new TextField(); private TextField deposit = new TextField(); private TextField withdraw = new TextField(); + private CashMachine cashMachine = new CashMachine(new Bank()); private Parent createContent() { - withdraw.setMaxWidth(180); withdraw.setTranslateX(575); - withdraw.setTranslateY(5); + withdraw.setTranslateY(25); deposit.setMaxWidth(175); deposit.setTranslateX(300); - deposit.setTranslateY(40); + deposit.setTranslateY(100); accountId.setTranslateX(50); - accountId.setTranslateY(75); + accountId.setTranslateY(133); accountId.setMaxWidth(175); + // Banner + Text text = new Text("ZipCloud Bank"); + text.setTranslateX(280); + text.setTranslateY(0); + text.setFill(Color.GREEN); + text.setFont(Font.font("Verdana", FontWeight.BOLD, 25)); + accountId.setStyle("-fx-text-inner-color: Green;"); accountId.setFont(Font.font("Verdana", FontWeight.BOLD, 12)); deposit.setStyle("-fx-text-inner-color: Green;"); @@ -50,6 +60,7 @@ private Parent createContent() { vbox.setPrefSize(500, 500); TextArea areaInfo = new TextArea(); + areaInfo.setMaxWidth(500); areaInfo.setTranslateX(140); areaInfo.setFont(Font.font("Verdana", FontWeight.BOLD, 15)); @@ -67,15 +78,15 @@ private Parent createContent() { btnSubmit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); btnSubmit.setOnAction(e -> { - areaInfo.setText("Please input account id 10, 20, 30, or 40 to start."); - btnDeposit.setVisible(true); - btnWithdraw.setVisible(true); - btnClear.setVisible(true); - btnExit.setVisible(true); - // btnAllAccounts.setVisible(true); - int id = Integer.parseInt(accountId.getText()); - cashMachine.login(id); - areaInfo.setText(cashMachine.toString()); + areaInfo.setText("Please input account id 10, 20, 30, or 40 to start."); + btnDeposit.setVisible(true); + btnWithdraw.setVisible(true); + btnClear.setVisible(true); + btnExit.setVisible(true); + // btnAllAccounts.setVisible(true); + int id = Integer.parseInt(accountId.getText()); + cashMachine.login(id); + areaInfo.setText(cashMachine.toString()); }); btnDeposit = new Button("Deposit"); btnDeposit.setTranslateX(30); @@ -85,6 +96,7 @@ private Parent createContent() { Float amount = Float.parseFloat(deposit.getText()); if (amount < 0) { areaInfo.setText("Input cannot be negative. Please try again."); + deposit.clear(); } else { cashMachine.deposit(amount); areaInfo.setText(cashMachine.toString()); @@ -96,34 +108,31 @@ private Parent createContent() { btnWithdraw.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); btnWithdraw.setOnAction(e -> { Float amount = Float.parseFloat(withdraw.getText()); - if (amount < OVERDRAFT_LIMIT) { - areaInfo.setText("Sorry, this withdrawal would exceed the overdraft limit"); - } - if (amount < 0) { - areaInfo.setText("Sorry, you can not withdraw a negative amount"); - } else { - cashMachine.withdraw(amount); - areaInfo.setText(cashMachine.toString()); - } + if (amount < 0) { + areaInfo.setText("Sorry, you can not withdraw a negative amount"); + } else { + cashMachine.withdraw(amount); + areaInfo.setText(cashMachine.toString()); + } }); btnClear = new Button("Clear"); btnClear.setTranslateX(85); btnClear.setTranslateY(250); btnClear.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); btnClear.setOnAction(e -> { - accountId.clear(); - deposit.clear(); - withdraw.clear(); - cashMachine.exit(); - areaInfo.setText(cashMachine.toString()); + accountId.clear(); + deposit.clear(); + withdraw.clear(); + cashMachine.exit(); + areaInfo.setText(cashMachine.toString()); }); btnExit = new Button("Exit"); btnExit.setTranslateX(35); btnExit.setTranslateY(300); btnExit.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); btnExit.setOnAction(e -> { - System.exit(0); - areaInfo.setText(cashMachine.toString()); + System.exit(0); + areaInfo.setText(cashMachine.toString()); }); @@ -133,8 +142,10 @@ private Parent createContent() { flowpane.getChildren().add(btnWithdraw); flowpane.getChildren().add(btnClear); flowpane.getChildren().add(btnExit); - vbox.getChildren().addAll(accountId, deposit, withdraw, flowpane, areaInfo); + vbox.getChildren().addAll(accountId, deposit, text, withdraw, flowpane, areaInfo); return vbox; + + } @Override @@ -143,18 +154,21 @@ public void start(Stage stage) throws Exception { stage.setWidth(800); stage.setHeight(600); stage.initStyle(StageStyle.DECORATED); - stage.setScene(new Scene(createContent())); - stage.show(); + stage.setScene(new Scene(createContent())); - btnDeposit.setVisible(false); - btnWithdraw.setVisible(false); - btnClear.setVisible(false); - btnExit.setVisible(false); + stage.show(); + + btnDeposit.setVisible(false); + btnWithdraw.setVisible(false); + btnClear.setVisible(false); + btnExit.setVisible(false); } public static void main(String[] args) { launch(args); - } + } } +/////************* + diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index e4bbbba..98431ef 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -53,6 +53,8 @@ public ActionResult withdraw(AccountData accountData, Float amount) if (ok) { return ActionResult.success(account.getAccountData()); + } else if(amount < 0) { + return ActionResult.fail("Withdraw failed: Cannot withdraw negative numbers"); } else { return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance()); diff --git a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java index 145286a..e39cded 100644 --- a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java @@ -12,9 +12,11 @@ public BasicAccount(AccountData accountData) { @Override protected boolean canWithdraw(float amount) { return false; + } + } diff --git a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java index 444c543..f35e28a 100644 --- a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java @@ -5,14 +5,15 @@ */ public class PremiumAccount extends Account { - private static final float OVERDRAFT_LIMIT = 100; + private static final int OVERDRAFT_LIMIT = 100; - public PremiumAccount(AccountData accountData) { - super(accountData); - } + public PremiumAccount(AccountData accountData) { + super(accountData); + } @Override protected boolean canWithdraw(float amount) { return getBalance() + OVERDRAFT_LIMIT >= amount; } -} + +} \ No newline at end of file diff --git a/src/test/java/rocks/zipcode/atm/bank/AccountTest.java b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java index 6a26a72..9ad1a2f 100644 --- a/src/test/java/rocks/zipcode/atm/bank/AccountTest.java +++ b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java @@ -41,4 +41,4 @@ public void withdraw() { Assert.assertEquals(actual, expected); } -} \ No newline at end of file +} From a830a21943d7b04197f3aa98731b7019e0272ebd Mon Sep 17 00:00:00 2001 From: c-poteat Date: Tue, 16 Nov 2021 13:20:34 -0500 Subject: [PATCH 08/10] Updated project --- src/main/java/rocks/zipcode/atm/CashMachineApp.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index ba57151..cce4ea4 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -1,12 +1,10 @@ package rocks.zipcode.atm; -import com.sun.javafx.scene.text.TextLayoutFactory; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; -import javafx.scene.text.TextAlignment; import javafx.stage.StageStyle; import rocks.zipcode.atm.bank.Bank; import javafx.application.Application; @@ -39,7 +37,7 @@ private Parent createContent() { deposit.setMaxWidth(175); deposit.setTranslateX(300); deposit.setTranslateY(100); - accountId.setTranslateX(50); + accountId.setTranslateX(30); accountId.setTranslateY(133); accountId.setMaxWidth(175); From 84d2cfdbffb70c9e55235c1c6d04778600df3ced Mon Sep 17 00:00:00 2001 From: c-poteat Date: Wed, 17 Nov 2021 07:15:51 -0500 Subject: [PATCH 09/10] Fixed overdraft bugs --- src/main/java/rocks/zipcode/atm/CashMachine.java | 2 +- .../java/rocks/zipcode/atm/CashMachineApp.java | 8 ++++---- src/main/java/rocks/zipcode/atm/bank/Account.java | 15 +++++---------- .../java/rocks/zipcode/atm/bank/AccountData.java | 2 +- src/main/java/rocks/zipcode/atm/bank/Bank.java | 11 +++++++---- .../java/rocks/zipcode/atm/bank/BasicAccount.java | 8 +------- .../rocks/zipcode/atm/bank/PremiumAccount.java | 2 +- 7 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachine.java b/src/main/java/rocks/zipcode/atm/CashMachine.java index c9a6e84..838ec2d 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachine.java +++ b/src/main/java/rocks/zipcode/atm/CashMachine.java @@ -43,7 +43,7 @@ public void deposit(Float amount) { public void withdraw(Float amount) { if (accountData != null) { tryCall( - () -> bank.withdraw(accountData, (float) amount), + () -> bank.withdraw(accountData,amount), update ); diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index cce4ea4..e007c67 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -106,12 +106,12 @@ private Parent createContent() { btnWithdraw.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); btnWithdraw.setOnAction(e -> { Float amount = Float.parseFloat(withdraw.getText()); - if (amount < 0) { - areaInfo.setText("Sorry, you can not withdraw a negative amount"); - } else { +// if (amount < 0) { +// areaInfo.setText("Sorry, you can not withdraw a negative amount"); +// } else { cashMachine.withdraw(amount); areaInfo.setText(cashMachine.toString()); - } + }); btnClear = new Button("Clear"); btnClear.setTranslateX(85); diff --git a/src/main/java/rocks/zipcode/atm/bank/Account.java b/src/main/java/rocks/zipcode/atm/bank/Account.java index 17ac750..37afff6 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Account.java +++ b/src/main/java/rocks/zipcode/atm/bank/Account.java @@ -11,19 +11,15 @@ public Account(AccountData accountData) { this.accountData = accountData; } - public static Float getBalance(Float amount) { - return amount; - } - public AccountData getAccountData() { return accountData; } - public void deposit(Float amount) { + public void deposit(float amount) { updateBalance(getBalance() + amount); } - public boolean withdraw (Float amount){ + public boolean withdraw (float amount){ if (canWithdraw(amount)) { updateBalance(getBalance() - amount); return true; @@ -32,19 +28,18 @@ public boolean withdraw (Float amount){ } } - protected boolean canWithdraw (Float amount){ + protected boolean canWithdraw (float amount){ return getBalance() >= amount; } - public Float getBalance () { + public float getBalance () { return accountData.getBalance(); } - private void updateBalance (Float newBalance){ + private void updateBalance (float newBalance){ accountData = new AccountData(accountData.getId(), accountData.getName(), accountData.getEmail(), newBalance); } - protected abstract boolean canWithdraw ( float amount); } diff --git a/src/main/java/rocks/zipcode/atm/bank/AccountData.java b/src/main/java/rocks/zipcode/atm/bank/AccountData.java index e5d29c7..7019bc8 100644 --- a/src/main/java/rocks/zipcode/atm/bank/AccountData.java +++ b/src/main/java/rocks/zipcode/atm/bank/AccountData.java @@ -40,7 +40,7 @@ public String getEmail() { public Float getBalance() { return balance; } - public static float round(float d,int decimalPlace){ + public static Float round(float d,int decimalPlace){ BigDecimal bd = new BigDecimal(Float.toString(d)); bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP); return bd.floatValue(); diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index 98431ef..c316936 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -3,6 +3,7 @@ import rocks.zipcode.atm.ActionResult; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -42,8 +43,8 @@ public ActionResult getAccountById(int id) { public ActionResult deposit(AccountData accountData, Float amount) { Account account = accounts.get(accountData.getId()); - account.deposit(amount); + return ActionResult.success(account.getAccountData()); } @@ -53,15 +54,17 @@ public ActionResult withdraw(AccountData accountData, Float amount) if (ok) { return ActionResult.success(account.getAccountData()); - } else if(amount < 0) { - return ActionResult.fail("Withdraw failed: Cannot withdraw negative numbers"); +// } else if(amount < 0) { +// return ActionResult.fail("Withdraw failed: Cannot withdraw negative numbers"); } else { return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance()); } } + public Map getAccounts() { return accounts; - } + } } + diff --git a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java index e39cded..cd94df1 100644 --- a/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/BasicAccount.java @@ -8,16 +8,10 @@ public class BasicAccount extends Account { public BasicAccount(AccountData accountData) { super(accountData); } - - @Override - protected boolean canWithdraw(float amount) { - return false; - - } +} -} diff --git a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java index f35e28a..25cf2f4 100644 --- a/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java +++ b/src/main/java/rocks/zipcode/atm/bank/PremiumAccount.java @@ -5,7 +5,7 @@ */ public class PremiumAccount extends Account { - private static final int OVERDRAFT_LIMIT = 100; + private static final float OVERDRAFT_LIMIT = 100; public PremiumAccount(AccountData accountData) { super(accountData); From db82d3ed52ebe107e399e3f1b6086bd37d4dbccf Mon Sep 17 00:00:00 2001 From: c-poteat Date: Wed, 17 Nov 2021 08:06:31 -0500 Subject: [PATCH 10/10] updated application --- .../java/rocks/zipcode/atm/CashMachineApp.java | 18 ++++++++++++------ .../java/rocks/zipcode/atm/bank/Account.java | 2 +- .../rocks/zipcode/atm/bank/AccountData.java | 10 ++++++++-- src/main/java/rocks/zipcode/atm/bank/Bank.java | 11 ++++------- .../rocks/zipcode/atm/bank/AccountTest.java | 4 ++-- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/main/java/rocks/zipcode/atm/CashMachineApp.java b/src/main/java/rocks/zipcode/atm/CashMachineApp.java index e007c67..b8a4db9 100644 --- a/src/main/java/rocks/zipcode/atm/CashMachineApp.java +++ b/src/main/java/rocks/zipcode/atm/CashMachineApp.java @@ -12,6 +12,7 @@ import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.layout.VBox; +import rocks.zipcode.atm.bank.PremiumAccount; /** * @author ZipCodeWilmington @@ -22,12 +23,16 @@ public class CashMachineApp extends Application { private Button btnWithdraw; private Button btnClear; private Button btnExit; - Float OVERDRAFT_LIMIT = Float.valueOf(100); + private PremiumAccount premiumAccount; private TextField accountId = new TextField(); private TextField deposit = new TextField(); private TextField withdraw = new TextField(); + +public float getPremiumAcct() { + return premiumAccount.getBalance(); +} private CashMachine cashMachine = new CashMachine(new Bank()); private Parent createContent() { @@ -106,12 +111,13 @@ private Parent createContent() { btnWithdraw.setStyle("-fx-font: 15 arial; -fx-base: #0A8B54;"); btnWithdraw.setOnAction(e -> { Float amount = Float.parseFloat(withdraw.getText()); -// if (amount < 0) { -// areaInfo.setText("Sorry, you can not withdraw a negative amount"); + if (amount < 0) { + areaInfo.setText("Sorry, you can not withdraw a negative amount"); +// } else if(amount ) // } else { - cashMachine.withdraw(amount); - areaInfo.setText(cashMachine.toString()); - + cashMachine.withdraw(amount); + areaInfo.setText(cashMachine.toString()); + } }); btnClear = new Button("Clear"); btnClear.setTranslateX(85); diff --git a/src/main/java/rocks/zipcode/atm/bank/Account.java b/src/main/java/rocks/zipcode/atm/bank/Account.java index 37afff6..966fcea 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Account.java +++ b/src/main/java/rocks/zipcode/atm/bank/Account.java @@ -37,7 +37,7 @@ public float getBalance () { } private void updateBalance (float newBalance){ - accountData = new AccountData(accountData.getId(), accountData.getName(), accountData.getEmail(), + accountData = new AccountData(accountData.getId(), accountData.getAcctType(), accountData.getName(), accountData.getEmail(), newBalance); } diff --git a/src/main/java/rocks/zipcode/atm/bank/AccountData.java b/src/main/java/rocks/zipcode/atm/bank/AccountData.java index 7019bc8..fe2fa44 100644 --- a/src/main/java/rocks/zipcode/atm/bank/AccountData.java +++ b/src/main/java/rocks/zipcode/atm/bank/AccountData.java @@ -13,14 +13,16 @@ public final class AccountData { private final int id; + private final String acctType; private final String name; private final String email; private final Float balance; DecimalFormat decimalFormat = new DecimalFormat("#.##"); - AccountData( int id, String name, String email,float balance){ + AccountData( int id, String acctType, String name, String email,float balance){ this.id = id; + this.acctType = acctType; this.name = name; this.email = email; this.balance = balance; @@ -30,6 +32,10 @@ public int getId() { return id; } + public String getAcctType() { + return acctType; + } + public String getName() { return name; } @@ -46,10 +52,10 @@ public static Float round(float d,int decimalPlace){ return bd.floatValue(); } - @Override public String toString () { return "Account id: " + id + '\n' + + "Account type: " + acctType + '\n' + "Name: " + name + '\n' + "Email: " + email + '\n' + "Balance: " + String.format("$" + "%,.2f", Float.valueOf(decimalFormat.format(balance))); diff --git a/src/main/java/rocks/zipcode/atm/bank/Bank.java b/src/main/java/rocks/zipcode/atm/bank/Bank.java index c316936..5573fbd 100644 --- a/src/main/java/rocks/zipcode/atm/bank/Bank.java +++ b/src/main/java/rocks/zipcode/atm/bank/Bank.java @@ -15,17 +15,17 @@ public class Bank { public Bank() { accounts.put(10, new BasicAccount(new AccountData( - 10, "Darth Vader", "deathstar@gmail.com", 1500.25f + 10,"Basic","Bruce Wayne", "brucewayne.wayneenterprises@google.com", 1045658.89f ))); accounts.put(20, new PremiumAccount(new AccountData( - 20, "Clark Kent", "dailyplanet@gmail.com", 2156.56f + 20, "Premium","Clark Kent" , "clarkkent.dailyplanet@gmail.com", 51456.58f ))); accounts.put(30, new BasicAccount(new AccountData( - 30, "Norman Bates", "batesmotel@gmail.com", -298.23f + 30, "Basic", "Steve Rogers", "steveRogers1.@army.mil", 23423479.23f ))); accounts.put(40, new PremiumAccount(new AccountData( - 40, "Marty McFly", "backIIthefuture@gmail.com", 6008.58f + 40, "Premium", "Peter Parker", "peterparker@midtownhigh.edu", 1232146f ))); } @@ -54,9 +54,6 @@ public ActionResult withdraw(AccountData accountData, Float amount) if (ok) { return ActionResult.success(account.getAccountData()); -// } else if(amount < 0) { -// return ActionResult.fail("Withdraw failed: Cannot withdraw negative numbers"); - } else { return ActionResult.fail("Withdraw failed: " + amount + ". Account has: " + account.getBalance()); } diff --git a/src/test/java/rocks/zipcode/atm/bank/AccountTest.java b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java index 9ad1a2f..6476eb3 100644 --- a/src/test/java/rocks/zipcode/atm/bank/AccountTest.java +++ b/src/test/java/rocks/zipcode/atm/bank/AccountTest.java @@ -18,7 +18,7 @@ public void deposit() { // Expected - Float expected = 1500.25f + 100.00f; + Float expected = 1045658.89f + 100.00f; Float actual = account.getBalance(); Assert.assertEquals(actual, expected); @@ -35,7 +35,7 @@ public void withdraw() { // Expected - Float expected = 1500.25f - 100.00f; + Float expected = 1045658.89f - 100.00f; Float actual = account.getBalance(); Assert.assertEquals(actual, expected);