57 lines
1.4 KiB
Java
57 lines
1.4 KiB
Java
package dev.banking.model;
|
|
|
|
/**
|
|
* Represents a transfer operation between two accounts.
|
|
*/
|
|
public final class TransferTransaction
|
|
extends Transaction {
|
|
|
|
private final int sourceAccountId;
|
|
private final int targetAccountId;
|
|
|
|
public TransferTransaction(
|
|
int sourceAccountId,
|
|
int targetAccountId,
|
|
int amount
|
|
) {
|
|
super(amount);
|
|
|
|
if (sourceAccountId < 0) {
|
|
throw new IllegalArgumentException(
|
|
"Invalid source account id."
|
|
);
|
|
}
|
|
|
|
if (targetAccountId < 0) {
|
|
throw new IllegalArgumentException(
|
|
"Invalid target account id."
|
|
);
|
|
}
|
|
|
|
if (sourceAccountId == targetAccountId) {
|
|
throw new IllegalArgumentException(
|
|
"Source and target accounts must be different."
|
|
);
|
|
}
|
|
|
|
this.sourceAccountId = sourceAccountId;
|
|
this.targetAccountId = targetAccountId;
|
|
}
|
|
|
|
public int getSourceAccountId() {
|
|
return sourceAccountId;
|
|
}
|
|
|
|
public int getTargetAccountId() {
|
|
return targetAccountId;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "TransferTransaction{" +
|
|
"sourceAccountId=" + sourceAccountId +
|
|
", targetAccountId=" + targetAccountId +
|
|
", amount=" + getAmount() +
|
|
'}';
|
|
}
|
|
} |