|
1 | 1 | package com.codedifferently.lesson17.bank; |
2 | 2 |
|
3 | 3 | import com.codedifferently.lesson17.bank.exceptions.AccountNotFoundException; |
| 4 | +import java.lang.reflect.Method; |
4 | 5 | import java.util.HashMap; |
5 | 6 | import java.util.Map; |
6 | 7 | import java.util.Set; |
@@ -53,15 +54,30 @@ public void depositFunds(String accountNumber, double amount) { |
53 | 54 | } |
54 | 55 |
|
55 | 56 | /** |
56 | | - * Deposits funds into an account using a check. |
| 57 | + * Deposits funds into an account using a check-like instrument. |
57 | 58 | * |
58 | 59 | * @param accountNumber The account number. |
59 | 60 | * @param check The check to deposit. |
60 | 61 | */ |
61 | 62 | public void depositFunds(String accountNumber, Check check) { |
62 | 63 | CheckingAccount account = getAccountOrThrow(accountNumber); |
63 | 64 | check.depositFunds(account); |
64 | | - double amt = check.getAmount(); |
| 65 | + |
| 66 | + double amt = 0.0; |
| 67 | + try { |
| 68 | + Method m = check.getClass().getMethod("getAmount"); |
| 69 | + Object v = m.invoke(check); |
| 70 | + if (v instanceof Number) amt = ((Number) v).doubleValue(); |
| 71 | + } catch (Exception e1) { |
| 72 | + try { |
| 73 | + Method m = check.getClass().getMethod("getValue"); |
| 74 | + Object v = m.invoke(check); |
| 75 | + if (v instanceof Number) amt = ((Number) v).doubleValue(); |
| 76 | + } catch (Exception e2) { |
| 77 | + amt = 0.0; |
| 78 | + } |
| 79 | + } |
| 80 | + |
65 | 81 | String note = check.getClass().getSimpleName(); |
66 | 82 | auditLog.record(accountNumber, amt, TransactionType.DEPOSIT_CHECK, note); |
67 | 83 | } |
|
0 commit comments