Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dbb7c99ae3 | |||
| 39bc86e798 | |||
| 46b0410bc5 | |||
| adb6322144 |
@@ -1,315 +1,7 @@
|
||||
import bank.*;
|
||||
import bank.exceptions.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
private static void testingTransactions(Payment p1, Payment p2, Transfer t1, Transfer t2) throws TransactionAttributeException {
|
||||
System.out.println("Basic Testcases------------------");
|
||||
|
||||
Payment p1c = new Payment(p1);
|
||||
Payment p2c = new Payment(p2);
|
||||
|
||||
System.out.print(p1);
|
||||
System.out.print(p2);
|
||||
System.out.print(p1c);
|
||||
System.out.print(p2c);
|
||||
|
||||
Transfer t1c = new Transfer(t1);
|
||||
Transfer t2c = new Transfer(t2);
|
||||
|
||||
System.out.print(t1);
|
||||
System.out.print(t2);
|
||||
System.out.print(t1c);
|
||||
System.out.print(t2c);
|
||||
|
||||
System.out.println("\nTest Edgecases-----------------");
|
||||
|
||||
setInterestRateCatch(p2, -0.5);
|
||||
setInterestRateCatch(p2, 1.5);
|
||||
|
||||
setAmountCatch(t1, -5);
|
||||
|
||||
System.out.println("\nCompare Payments--------------");
|
||||
System.out.println(p1.equals(p1c));
|
||||
System.out.println(p1.equals(p2));
|
||||
|
||||
System.out.println(p1.equals(new ArrayList<>()));
|
||||
System.out.println(p1.equals(null));
|
||||
|
||||
System.out.println("\nCompare Transfers-------------");
|
||||
System.out.println(t1.equals(t1c));
|
||||
System.out.println(t1.equals(t2));
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static void testingBankWithTransactions(Transaction t1, Transaction t2, Transaction t3, Transaction t4, PrivateBank bank, String person) {
|
||||
// ------------------------ Bank: Adding Payments
|
||||
|
||||
if(t1 instanceof Payment){
|
||||
System.out.println("\n------------------------ Bank: Adding Payment");
|
||||
System.out.println("p1 IncIntr. before adding : 0.0 = " + ((Payment) t1).getIncomingInterest());
|
||||
System.out.println("p1 OutIntr. before adding : 0.0 = " + ((Payment) t1).getOutgoingInterest());
|
||||
System.out.println("p2 IncIntr. before adding : 0.0 = " + ((Payment) t2).getIncomingInterest());
|
||||
System.out.println("p2 OutIntr. before adding : 0.0 = " + ((Payment) t2).getOutgoingInterest());
|
||||
System.out.println("p3 IncIntr. before adding : 0.5 = " + ((Payment) t3).getIncomingInterest());
|
||||
System.out.println("p3 OutIntr. before adding : 0.0 = " + ((Payment) t3).getOutgoingInterest());
|
||||
System.out.println("p4 IncIntr. before adding : 0.0 = " + ((Payment) t4).getIncomingInterest());
|
||||
System.out.println("p4 OutIntr. before adding : 0.25= " + ((Payment) t4).getOutgoingInterest());
|
||||
}
|
||||
else if(t1 instanceof IncomingTransfer){
|
||||
System.out.println("\n------------------------ Bank: Adding IncomingTransfer");
|
||||
System.out.println("t1 Sender before adding : = " + ((IncomingTransfer) t1).getSender());
|
||||
System.out.println("t1 Recipient before adding : = " + ((IncomingTransfer) t1).getRecipient());
|
||||
System.out.println("t2 Sender before adding : Mustermann = " + ((IncomingTransfer) t2).getSender());
|
||||
System.out.println("t2 Recipient before adding : Musterfrau = " + ((IncomingTransfer) t2).getRecipient());
|
||||
System.out.println("t3 Sender before adding : Max Mustermann = " + ((IncomingTransfer) t3).getSender());
|
||||
System.out.println("t3 Recipient before adding : Maria Musterfrau = " + ((IncomingTransfer) t3).getRecipient());
|
||||
System.out.println("t4 Sender before adding : Maria Musterfrau = " + ((IncomingTransfer) t4).getSender());
|
||||
System.out.println("t4 Recipient before adding : Max Musterman = " + ((IncomingTransfer) t4).getRecipient());
|
||||
}
|
||||
else if(t1 instanceof OutgoingTransfer){
|
||||
System.out.println("\n------------------------ Bank: Adding OutgoingTransfer");
|
||||
System.out.println("t1 Sender before adding : = " + ((OutgoingTransfer) t1).getSender());
|
||||
System.out.println("t1 Recipient before adding : = " + ((OutgoingTransfer) t1).getRecipient());
|
||||
System.out.println("t2 Sender before adding : Mustermann = " + ((OutgoingTransfer) t2).getSender());
|
||||
System.out.println("t2 Recipient before adding : Musterfrau = " + ((OutgoingTransfer) t2).getRecipient());
|
||||
System.out.println("t3 Sender before adding : Max Mustermann = " + ((OutgoingTransfer) t3).getSender());
|
||||
System.out.println("t3 Recipient before adding : Maria Musterfrau = " + ((OutgoingTransfer) t3).getRecipient());
|
||||
System.out.println("t4 Sender before adding : Maria Musterfrau = " + ((OutgoingTransfer) t4).getSender());
|
||||
System.out.println("t4 Recipient before adding : Max Musterman = " + ((OutgoingTransfer) t4).getRecipient());
|
||||
}
|
||||
|
||||
addingTransactionCatch(bank, person, t1);
|
||||
addingTransactionCatch(bank, person, t1);
|
||||
addingTransactionCatch(bank, person, t2);
|
||||
addingTransactionCatch(bank, person, t3);
|
||||
addingTransactionCatch(bank, person, t4);
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Transactions");
|
||||
List<Transaction> p = bank.getTransactions(person);
|
||||
p.forEach(System.out::println);
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Balance");
|
||||
double balanceP1 = bank.getAccountBalance(person);
|
||||
System.out.println("balance of Person1 " + person + " = " + balanceP1);
|
||||
System.out.println("Payment = -15; Outgoing = -12.5; Incoming = 5");
|
||||
|
||||
|
||||
System.out.println("\n------------------------ Bank: Removing Transaction");
|
||||
|
||||
removingTransactionCatch(bank, person, t1);
|
||||
removingTransactionCatch(bank, person, t1);
|
||||
removingTransactionCatch(bank, person, t2);
|
||||
removingTransactionCatch(bank, person, t3);
|
||||
removingTransactionCatch(bank, person, t4);
|
||||
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Transactions");
|
||||
p = bank.getTransactions(person);
|
||||
p.forEach(System.out::println);
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Balance");
|
||||
balanceP1 = bank.getAccountBalance(person);
|
||||
System.out.println("balance of Person1 " + person + " 0 = " + balanceP1);
|
||||
}
|
||||
|
||||
/*
|
||||
private static void testingBankWithListOfTransactions(List transactions, PrivateBank bank, String person) {
|
||||
// ------------------------ Bank: Adding Payments
|
||||
|
||||
if(transactions.getFirst() instanceof Payment){
|
||||
System.out.println("\n------------------------ Bank: Adding Payment");
|
||||
System.out.println("p1 IncIntr. before adding : 0.0 = " + ((Payment) transactions.get(0)).getIncomingInterest());
|
||||
System.out.println("p1 OutIntr. before adding : 0.0 = " + ((Payment) transactions.get(0)).getOutgoingInterest());
|
||||
System.out.println("p2 IncIntr. before adding : 0.0 = " + ((Payment) transactions.get(1)).getIncomingInterest());
|
||||
System.out.println("p2 OutIntr. before adding : 0.0 = " + ((Payment) transactions.get(1)).getOutgoingInterest());
|
||||
System.out.println("p3 IncIntr. before adding : 0.5 = " + ((Payment) transactions.get(2)).getIncomingInterest());
|
||||
System.out.println("p3 OutIntr. before adding : 0.0 = " + ((Payment) transactions.get(2)).getOutgoingInterest());
|
||||
System.out.println("p4 IncIntr. before adding : 0.0 = " + ((Payment) transactions.get(3)).getIncomingInterest());
|
||||
System.out.println("p4 OutIntr. before adding : 0.25= " + ((Payment) transactions.get(3)).getOutgoingInterest());
|
||||
}
|
||||
else if(transactions.getFirst() instanceof IncomingTransfer){
|
||||
System.out.println("\n------------------------ Bank: Adding IncomingTransfer");
|
||||
System.out.println("t1 Sender before adding : = " + ((IncomingTransfer) transactions.get(0)).getSender());
|
||||
System.out.println("t1 Recipient before adding : = " + ((IncomingTransfer) transactions.get(0)).getRecipient());
|
||||
System.out.println("t2 Sender before adding : Mustermann = " + ((IncomingTransfer) transactions.get(1)).getSender());
|
||||
System.out.println("t2 Recipient before adding : Musterfrau = " + ((IncomingTransfer) transactions.get(1)).getRecipient());
|
||||
System.out.println("t3 Sender before adding : Max Mustermann = " + ((IncomingTransfer) transactions.get(2)).getSender());
|
||||
System.out.println("t3 Recipient before adding : Maria Musterfrau = " + ((IncomingTransfer) transactions.get(2)).getRecipient());
|
||||
System.out.println("t4 Sender before adding : Maria Musterfrau = " + ((IncomingTransfer) transactions.get(3)).getSender());
|
||||
System.out.println("t4 Recipient before adding : Max Musterman = " + ((IncomingTransfer) transactions.get(3)).getRecipient());
|
||||
}
|
||||
else if(transactions.getFirst() instanceof OutgoingTransfer){
|
||||
System.out.println("\n------------------------ Bank: Adding OutgoingTransfer");
|
||||
System.out.println("t1 Sender before adding : = " + ((OutgoingTransfer) transactions.get(0)).getSender());
|
||||
System.out.println("t1 Recipient before adding : = " + ((OutgoingTransfer) transactions.get(0)).getRecipient());
|
||||
System.out.println("t2 Sender before adding : Mustermann = " + ((OutgoingTransfer) transactions.get(1)).getSender());
|
||||
System.out.println("t2 Recipient before adding : Musterfrau = " + ((OutgoingTransfer) transactions.get(1)).getRecipient());
|
||||
System.out.println("t3 Sender before adding : Max Mustermann = " + ((OutgoingTransfer) transactions.get(2)).getSender());
|
||||
System.out.println("t3 Recipient before adding : Maria Musterfrau = " + ((OutgoingTransfer) transactions.get(2)).getRecipient());
|
||||
System.out.println("t4 Sender before adding : Maria Musterfrau = " + ((OutgoingTransfer) transactions.get(3)).getSender());
|
||||
System.out.println("t4 Recipient before adding : Max Musterman = " + ((OutgoingTransfer) transactions.get(3)).getRecipient());
|
||||
}
|
||||
|
||||
|
||||
addingTransactionCatch(bank, person, t1);
|
||||
addingTransactionCatch(bank, person, t1);
|
||||
addingTransactionCatch(bank, person, t2);
|
||||
addingTransactionCatch(bank, person, t3);
|
||||
addingTransactionCatch(bank, person, t4);
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Transactions");
|
||||
List<Transaction> p = bank.getTransactions(person);
|
||||
p.forEach(System.out::println);
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Balance");
|
||||
double balanceP1 = bank.getAccountBalance(person);
|
||||
System.out.println("balance of Person1 " + person + " = " + balanceP1);
|
||||
System.out.println("Payment = -15; Outgoing = -12.5; Incoming = 5");
|
||||
|
||||
|
||||
System.out.println("\n------------------------ Bank: Removing Transaction");
|
||||
|
||||
removingTransactionCatch(bank, person, t1);
|
||||
removingTransactionCatch(bank, person, t1);
|
||||
removingTransactionCatch(bank, person, t2);
|
||||
removingTransactionCatch(bank, person, t3);
|
||||
removingTransactionCatch(bank, person, t4);
|
||||
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Transactions");
|
||||
p = bank.getTransactions(person);
|
||||
p.forEach(System.out::println);
|
||||
|
||||
System.out.println("\n------------------------ Bank: Printing Balance");
|
||||
balanceP1 = bank.getAccountBalance(person);
|
||||
System.out.println("balance of Person1 " + person + " 0 = " + balanceP1);
|
||||
}
|
||||
|
||||
*/
|
||||
// ------------------------ Catch-Helper ------------------------
|
||||
|
||||
private static void accountCreationCatch(Bank bank, String account){
|
||||
try {
|
||||
bank.createAccount(account);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void accountCreationWihtListCatch(Bank bank, String account, List<Transaction> transactions){
|
||||
try {
|
||||
bank.createAccount(account, transactions);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void setInterestRateCatch(Payment p, double interestrate) {
|
||||
try {
|
||||
p.setIncomingInterest(interestrate);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
try {
|
||||
p.setOutgoingInterest(interestrate);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void setAmountCatch(Transaction t, double amount) {
|
||||
try {
|
||||
t.setAmount(amount);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void addingTransactionCatch(Bank bank, String person, Transaction transaction) {
|
||||
try {
|
||||
bank.addTransaction(person, transaction);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void removingTransactionCatch(Bank bank, String person, Transaction transaction) {
|
||||
try {
|
||||
bank.removeTransaction(person, transaction);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ------------------------ MAIN ------------------------
|
||||
|
||||
public static void main(String[] args) throws TransactionAttributeException, IOException, java.io.IOException, TransactionAlreadyExistException, AccountAlreadyExistsException, AccountDoesNotExistException {
|
||||
String person1 = "Max Mustermann";
|
||||
String person2 = "Maria Musterfrau";
|
||||
String person3 = "Tom Mustermann";
|
||||
String person4 = "Hannah Musterfrau";
|
||||
|
||||
// ------------------------ Transactions ------------------------
|
||||
|
||||
|
||||
Payment p1 = new Payment("01.01.24", 10, "Verwendungszweck P1");
|
||||
/*
|
||||
Payment p2 = new Payment("01.01.24", 10, "Verwendungszweck P2", 0, 0);
|
||||
Payment p3 = new Payment("01.01.24", -10, "Verwendungszweck P3", 0.5, 0);
|
||||
Payment p4 = new Payment("01.01.24", -10, "Verwendungszweck P4", 0, 0.25);
|
||||
|
||||
Transfer t1 = new Transfer("01.01.24", 10, "Verwendungszweck T1");
|
||||
Transfer t2 = new Transfer("01.01.24", 10, "Verwendungszweck T2", "Mustermann", "Musterfrau");
|
||||
Transfer t3 = new Transfer("01.01.24", 10, "Verwendungszweck T3", person1, person2);
|
||||
Transfer t4 = new Transfer("01.01.24", 10, "Verwendungszweck T4", person2, person1);
|
||||
Transfer t5 = new Transfer("01.01.24", 15, "Verwendungszweck T5", person2, person3);
|
||||
Transfer t6 = new Transfer("01.01.24", 20, "Verwendungszweck T6", person2, person4);
|
||||
|
||||
|
||||
IncomingTransfer it1 = new IncomingTransfer(t1.getDate(), t1.getAmount(), t1.getDescription());
|
||||
IncomingTransfer it2 = new IncomingTransfer(t2.getDate(), t2.getAmount(), t2.getDescription(), person2, person1);
|
||||
IncomingTransfer it3 = new IncomingTransfer(t3.getDate(), t3.getAmount(), t3.getDescription(), person3, person1);
|
||||
IncomingTransfer it4 = new IncomingTransfer(t4.getDate(), t4.getAmount(), t4.getDescription(), person4, person1);
|
||||
IncomingTransfer it5 = new IncomingTransfer(t5.getDate(), t5.getAmount(), t5.getDescription(), person4, person1);
|
||||
IncomingTransfer it6 = new IncomingTransfer(t6.getDate(), t6.getAmount(), t6.getDescription(), person3, person1);
|
||||
|
||||
OutgoingTransfer ot1 = new OutgoingTransfer(t1.getDate(), t1.getAmount(), t1.getDescription());
|
||||
OutgoingTransfer ot2 = new OutgoingTransfer(t2.getDate(), t2.getAmount(), t2.getDescription(), person2, person1);
|
||||
OutgoingTransfer ot3 = new OutgoingTransfer(t3.getDate(), t3.getAmount(), t3.getDescription(), person2, person1);
|
||||
OutgoingTransfer ot4 = new OutgoingTransfer(t4.getDate(), t4.getAmount(), t4.getDescription(), person2, person3);
|
||||
OutgoingTransfer ot5 = new OutgoingTransfer(t5.getDate(), t5.getAmount(), t5.getDescription(), person2, person3);
|
||||
OutgoingTransfer ot6 = new OutgoingTransfer(t6.getDate(), t6.getAmount(), t6.getDescription(), person2, person4);
|
||||
|
||||
List<Transaction> paymentsList = new ArrayList<>(Arrays.asList(p1, p2, p3, p4));
|
||||
List<Transaction> incomingTransfersList = new ArrayList<>(Arrays.asList(it2, it3, it4, it5, it6));
|
||||
List<Transaction> outgoingTransferList = new ArrayList<>(Arrays.asList(ot2, ot3, ot4, ot5, ot6));
|
||||
List<Transaction> incomingTransfersListWrong = new ArrayList<>(Arrays.asList(it1, it2, it3, it4, it5, it6));
|
||||
List<Transaction> outgoingTransferListWrong = new ArrayList<>(Arrays.asList(ot1, ot2, ot3, ot4, ot5, ot6));
|
||||
|
||||
testingTransactions(p1, p2, t1, t2);
|
||||
|
||||
*/
|
||||
|
||||
// ------------------------ Bank ------------------------
|
||||
|
||||
System.out.println("\n------------------------ Bank");
|
||||
PrivateBank bank = new PrivateBank("Sparkasse", 0.5, 0.25,"accountdata");
|
||||
PrivateBank bank1 = new PrivateBank("Commerzbank", 0.5, 0.25,"accountdata");
|
||||
|
||||
// ------------------------ Bank: Adding Accounts
|
||||
|
||||
bank.readAccounts();
|
||||
bank.writeAccount("Max");
|
||||
bank.addTransaction("Max",p1);
|
||||
bank.writeAccount("Max");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -221,7 +221,7 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
|
||||
// 2 setting as incoming transfer
|
||||
else if (transaction instanceof IncomingTransfer) {
|
||||
if (((IncomingTransfer) transaction).getSender().equals("") || ((IncomingTransfer) transaction).getRecipient().equals(""))
|
||||
if (((IncomingTransfer) transaction).getSender().isEmpty() || ((IncomingTransfer) transaction).getRecipient().isEmpty())
|
||||
throw new TransactionAttributeException("Transfer without sender or recipient");
|
||||
|
||||
else if (((IncomingTransfer) transaction).getRecipient().equals(account))
|
||||
@@ -232,7 +232,7 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
|
||||
// 3 setting as outgoing transfer
|
||||
else if (transaction instanceof OutgoingTransfer) {
|
||||
if (((OutgoingTransfer) transaction).getSender().equals("") || ((OutgoingTransfer) transaction).getRecipient().equals(""))
|
||||
if (((OutgoingTransfer) transaction).getSender().isEmpty() || ((OutgoingTransfer) transaction).getRecipient().isEmpty())
|
||||
throw new TransactionAttributeException("Transfer without sender or recipient");
|
||||
|
||||
else if (((OutgoingTransfer) transaction).getSender().equals(account))
|
||||
@@ -332,8 +332,16 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
*/
|
||||
@Override
|
||||
public List<Transaction> getTransactionsSorted(String account, boolean asc) {
|
||||
List<Transaction> transactions = this.accountsToTransactions.get(account);
|
||||
List<Transaction> transactions = new ArrayList<>(this.accountsToTransactions.get(account));
|
||||
|
||||
if (transactions == null || transactions.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
if (asc)
|
||||
transactions.sort(Comparator.comparingDouble(Transaction::calculate));
|
||||
else
|
||||
transactions.sort(Comparator.comparingDouble(Transaction::calculate).reversed());
|
||||
|
||||
return transactions;
|
||||
}
|
||||
|
||||
@@ -346,7 +354,7 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
*/
|
||||
@Override
|
||||
public List<Transaction> getTransactionsByType(String account, boolean positive) {
|
||||
List<Transaction> transactions = this.accountsToTransactions.get(account);
|
||||
List<Transaction> transactions = new ArrayList<>(this.accountsToTransactions.get(account));
|
||||
if (positive)
|
||||
transactions.removeIf(transaction -> transaction.calculate() >= 0);
|
||||
else
|
||||
@@ -359,7 +367,7 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
*
|
||||
* @throws IOException if an error occurs while deserializing
|
||||
*/
|
||||
public void readAccounts() throws IOException, java.io.IOException, AccountAlreadyExistsException, TransactionAlreadyExistException, AccountDoesNotExistException, TransactionAttributeException {
|
||||
public void readAccounts() throws IOException, AccountAlreadyExistsException, TransactionAlreadyExistException, TransactionAttributeException {
|
||||
/*
|
||||
1. JSONs einlesen
|
||||
2. for each Transaction
|
||||
@@ -367,23 +375,30 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
2. Objekte in einer Liste zusammenführen
|
||||
3. Konto mit einer Liste von Transaktionen erzeugen
|
||||
*/
|
||||
List<Transaction> transactions = new ArrayList<>();
|
||||
|
||||
File directory = new File(directoryName);
|
||||
File[] files = directory.listFiles();
|
||||
|
||||
if (files != null) {
|
||||
// jedes file ist ein Konto
|
||||
for (File file : files) {
|
||||
List<Transaction> transactions;
|
||||
String accountName = file.getName().substring(0, file.getName().lastIndexOf("."));
|
||||
String jsonContent;
|
||||
|
||||
try {
|
||||
jsonContent = Files.readString(Paths.get(directoryName + "/" + file.getName()));
|
||||
} catch (java.io.IOException e) {
|
||||
System.out.println("Zum Account: " + accountName + " konnte die Datei nicht geöffnet werden");
|
||||
continue;
|
||||
}
|
||||
|
||||
String jsonContent = Files.readString(Paths.get(directoryName + "/" + file.getName()));
|
||||
JsonElement accountData = JsonParser.parseString(jsonContent);
|
||||
|
||||
for (JsonElement account : accountData.getAsJsonArray()) {
|
||||
JsonObject accountObject = account.getAsJsonObject();
|
||||
Transaction t = deserialize(accountObject, null, null);
|
||||
transactions.add(t);
|
||||
try{
|
||||
transactions = readAccountHelper(accountData, accountName);
|
||||
} catch (IOException e){
|
||||
System.out.println(e);
|
||||
continue;
|
||||
}
|
||||
|
||||
createAccount(accountName, transactions);
|
||||
@@ -391,6 +406,21 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
}
|
||||
}
|
||||
|
||||
private List<Transaction> readAccountHelper(JsonElement accountData, String accountName) throws IOException {
|
||||
List<Transaction> transactions = new ArrayList<>();
|
||||
for (JsonElement account : accountData.getAsJsonArray()) {
|
||||
JsonObject accountObject = account.getAsJsonObject();
|
||||
Transaction t;
|
||||
try{
|
||||
t = deserialize(accountObject, null, null);
|
||||
} catch (JsonParseException e){
|
||||
throw new IOException("Fehler beim Laden des Accounts: " + accountName);
|
||||
}
|
||||
transactions.add(t);
|
||||
}
|
||||
return transactions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export Account to JSON
|
||||
*
|
||||
@@ -407,7 +437,11 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
List<Transaction> transactions = this.accountsToTransactions.get(account);
|
||||
|
||||
for (Transaction transaction : transactions)
|
||||
try{
|
||||
accountData.add(serialize(transaction, null, null));
|
||||
} catch (JsonParseException e){
|
||||
throw new IOException("Fehler beim Speichern des Accounts: " + account);
|
||||
}
|
||||
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
String filename = directoryName + "/" + account + ".json";
|
||||
@@ -450,8 +484,9 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
case "Payment":
|
||||
return new Payment(date, amount, description, transactionInstance.get("incomingInterest").getAsDouble(), transactionInstance.get("outgoingInterest").getAsDouble());
|
||||
|
||||
default:
|
||||
throw new JsonParseException("Unknown transaction type: " + transactionType);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -474,7 +509,8 @@ public class PrivateBank implements Bank, JsonSerializer<Transaction>, JsonDeser
|
||||
|
||||
else if (transaction instanceof Payment)
|
||||
rootObject.addProperty("CLASSNAME", "Payment");
|
||||
|
||||
else
|
||||
throw new JsonParseException("Unknown transaction type: " + transaction.getClass().getName());
|
||||
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package bank.exceptions;
|
||||
|
||||
public class IOException extends Exception {
|
||||
public IOException() {
|
||||
super("Fehler in der De-/ Serialisierung der Daten");
|
||||
public IOException(String message) {
|
||||
super("Fehler in der De-/ Serialisierung der Daten. " + message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,6 @@ import org.junit.jupiter.params.provider.CsvSource;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
@@ -23,7 +20,7 @@ public class PrivateBankTest {
|
||||
|
||||
@DisplayName("Set up a PrivateBank")
|
||||
@BeforeAll
|
||||
public static void init() throws AccountAlreadyExistsException, IOException, TransactionAlreadyExistException,
|
||||
public static void init() throws AccountAlreadyExistsException, TransactionAlreadyExistException,
|
||||
AccountDoesNotExistException, TransactionAttributeException {
|
||||
|
||||
String path = "accountdata";
|
||||
|
||||
Reference in New Issue
Block a user