-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBank.java
More file actions
129 lines (110 loc) · 4.57 KB
/
Bank.java
File metadata and controls
129 lines (110 loc) · 4.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.HashMap;
import java.util.ArrayList;
public class Bank {
private HashMap<Integer, BankAccount> accounts;
public Bank() {
accounts = new HashMap<>();
}
public Bank(String filename) throws FileNotFoundException {
accounts = new HashMap<>();
Scanner sc = new Scanner(new File(filename));
while (sc.hasNextLine()) {
try {
char type = sc.next().charAt(0);
BankAccount ba;
if (type == 'S') {
ba = SavingsAccount.read(sc);
} else {
ba = CheckingAccount.read(sc);
}
if (accounts.containsKey(ba.getAccountNumber())) {
throw new DuplicateAccountNumberException(ba.getAccountNumber());
}
accounts.put(ba.getAccountNumber(), ba);
} catch (InputMismatchException ex) {
System.out.println("Oops, input does not match proper input format");
sc.nextLine();
} catch (NegativeBalanceException ex) {
System.out.println(ex.getMessage());
sc.nextLine();
} catch (DuplicateAccountNumberException ex) {
System.out.println(ex.getMessage());
sc.nextLine();
}
}
sc.close();
}
public boolean contains(int accountNumber) {
return accounts.containsKey(accountNumber);
}
public MonetaryValue getBalance(int accountNumber) {
if (contains(accountNumber)) {
return accounts.get(accountNumber).getBalance();
}
return null;
}
public String getAccountInfo(int accountNumber) {
if (contains(accountNumber)) {
String result = accounts.get(accountNumber).toString();
if (accounts.get(accountNumber) instanceof SavingsAccount) {
SavingsAccount newSavings = (SavingsAccount) accounts.get(accountNumber);
return result + "\n" + "Monthly Interest:" + newSavings.getMonthlyInterest().toString();
} else if (accounts.get(accountNumber) instanceof CheckingAccount) {
return result + "\nMonthly Interest: " + new MonetaryValue();// question: can we get rid of savings acoount tostring?
}
return accounts.get(accountNumber).toString();
}
return null;
}
public boolean deposit(int accountNumber, MonetaryValue amount) {
if (contains(accountNumber)) {
if (amount.isNegative()) {
System.out.println("ERROR: cannot deposit negative amount of money.");
return false;
} else {
accounts.get(accountNumber).deposit(amount);
System.out.println("Deposit was successful. Balance of account is now: "
+ accounts.get(accountNumber).getBalance());
return true;
}
}
return false;
}
public boolean withdraw(int accountNumber, MonetaryValue amount) throws InsufficientFundException {
if (contains(accountNumber) && accounts.get(accountNumber).withdraw(amount)) {
System.out.println(
"Withdrawl was successful! Balance of account is now: " + accounts.get(accountNumber).getBalance());
return true;
}
return false;
}
public boolean add(BankAccount account) throws DuplicateAccountNumberException {
if (contains(account.getAccountNumber())) {
throw new DuplicateAccountNumberException(account.getAccountNumber());
}
accounts.put(account.getAccountNumber(), account);
return true;
}
public boolean remove(int accountnumber) {
if (!contains(accountnumber)) {
return false;
}
accounts.remove(accountnumber);
return true;
}
public void printArrayListTransactions(int accountNumber) {
if (!contains(accountNumber)) {
System.out.println("oops, this account number doesn't exist");
} else {
ArrayList<Transaction> arrListTransaction = accounts.get(accountNumber).getArrayListTransaction();//question: why do we make another ArrayList refference variable?
System.out.println("All transactions for account number " + accountNumber);
for (Transaction t : arrListTransaction) {
System.out.println(t.toString());
}
}
}
}