44 lines
941 B
Java
44 lines
941 B
Java
package dev.banking.processor;
|
|
|
|
import dev.banking.model.*;
|
|
|
|
import java.util.Map;
|
|
|
|
public class TransactionProcessor {
|
|
|
|
private final Map<Integer, BankAccount> accounts;
|
|
|
|
public TransactionProcessor(
|
|
Map<Integer, BankAccount> accounts
|
|
) {
|
|
this.accounts = accounts;
|
|
}
|
|
|
|
public void process(Transaction tx) {
|
|
|
|
BankAccount source =
|
|
accounts.get(tx.getSourceAccountId());
|
|
|
|
switch (tx.getType()) {
|
|
|
|
case DEPOSIT -> {
|
|
source.deposit(tx.getAmount());
|
|
}
|
|
|
|
case WITHDRAW -> {
|
|
source.withdraw(tx.getAmount());
|
|
}
|
|
|
|
case TRANSFER -> {
|
|
|
|
BankAccount target =
|
|
accounts.get(tx.getTargetAccountId());
|
|
|
|
source.transfer(
|
|
target,
|
|
tx.getAmount()
|
|
);
|
|
}
|
|
}
|
|
}
|
|
} |