feat: add advanced multithreading banking system skeleton
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user