summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMS <ms@taler.net>2023-03-31 13:57:33 +0200
committerMS <ms@taler.net>2023-03-31 13:57:33 +0200
commit9fa7dbec7ada36d55893a80db8bd1eb71e72d10a (patch)
tree51ed2ec7ada5ec5e4eb0d2a860ab107795d16367
parent3be48ded81149a3379eaa9ddff1baa40f1d75c56 (diff)
downloadlibeufin-9fa7dbec7ada36d55893a80db8bd1eb71e72d10a.tar.gz
libeufin-9fa7dbec7ada36d55893a80db8bd1eb71e72d10a.tar.bz2
libeufin-9fa7dbec7ada36d55893a80db8bd1eb71e72d10a.zip
Polishing Sandbox.
Renaming the internal representation of a transaction and avoiding using free strings to express constants
-rw-r--r--sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt1
-rw-r--r--sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt12
-rw-r--r--sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt9
-rw-r--r--sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt8
-rw-r--r--sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt2
5 files changed, 18 insertions, 14 deletions
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
index 00688082..b0654950 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
@@ -423,6 +423,7 @@ object BankAccountTransactionsTable : LongIdTable() {
// Amount is a BigDecimal in String form.
val amount = text("amount")
val currency = text("currency")
+ // Milliseconds since the Epoch.
val date = long("date")
// Unique ID for this payment within the bank account.
val accountServicerReference = text("accountServicerReference")
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 051d1a09..d02ff7c3 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -235,7 +235,7 @@ fun <T> expectNonNull(x: T?): T {
return x;
}
-private fun getRelatedParty(branch: XmlElementBuilder, payment: RawPayment) {
+private fun getRelatedParty(branch: XmlElementBuilder, payment: XLibeufinBankTransaction) {
val otherParty = object {
var ibanPath = "CdtrAcct/Id/IBAN"
var namePath = "Cdtr/Nm"
@@ -244,7 +244,7 @@ private fun getRelatedParty(branch: XmlElementBuilder, payment: RawPayment) {
var bicPath = "CdtrAgt/FinInstnId/BIC"
var bic = payment.creditorBic
}
- if (payment.direction == "CRDT") {
+ if (payment.direction == XLibeufinBankDirection.CREDIT) {
otherParty.iban = payment.debtorIban
otherParty.ibanPath = "DbtrAcct/Id/IBAN"
otherParty.namePath = "Dbtr/Nm"
@@ -279,7 +279,7 @@ private fun getCreditDebitInd(balance: BigDecimal): String {
fun buildCamtString(
type: Int,
subscriberIban: String,
- history: MutableList<RawPayment>,
+ history: MutableList<XLibeufinBankTransaction>,
balancePrcd: BigDecimal, // Balance up to freshHistory (excluded).
balanceClbd: BigDecimal,
currency: String
@@ -521,7 +521,7 @@ private fun constructCamtResponse(
if (type == 52) {
if (dateRange != null)
throw EbicsOrderParamsIgnored("C52 does not support date ranges.")
- val history = mutableListOf<RawPayment>()
+ val history = mutableListOf<XLibeufinBankTransaction>()
transaction {
BankAccountFreshTransactionEntity.all().forEach {
if (it.transactionRef.account.label == bankAccount.label) {
@@ -545,8 +545,8 @@ private fun constructCamtResponse(
var base = prcdBalance
history.forEach { tx ->
when (tx.direction) {
- "DBIT" -> base -= parseDecimal(tx.amount)
- "CRDT" -> base += parseDecimal(tx.amount)
+ XLibeufinBankDirection.DEBIT -> base -= parseDecimal(tx.amount)
+ XLibeufinBankDirection.CREDIT -> base += parseDecimal(tx.amount)
else -> {
logger.error("Transaction with subject '${tx.subject}' is " +
"inconsistent: neither DBIT nor CRDT")
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
index 8fe70541..5d492914 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
@@ -215,8 +215,8 @@ fun getOrderTypeFromTransactionId(transactionID: String): String {
return uploadTransaction.orderType
}
-fun getHistoryElementFromTransactionRow(dbRow: BankAccountTransactionEntity): RawPayment {
- return RawPayment(
+fun getHistoryElementFromTransactionRow(dbRow: BankAccountTransactionEntity): XLibeufinBankTransaction {
+ return XLibeufinBankTransaction(
subject = dbRow.subject,
creditorIban = dbRow.creditorIban,
creditorBic = dbRow.creditorBic,
@@ -231,7 +231,8 @@ fun getHistoryElementFromTransactionRow(dbRow: BankAccountTransactionEntity): Ra
// and dbRow makes the document invalid!
// uid = "${dbRow.pmtInfId}-${it.msgId}"
uid = dbRow.accountServicerReference,
- direction = dbRow.direction,
+ // Eventually, the _database_ should contain the direction enum:
+ direction = XLibeufinBankDirection.convertCamtDirectionToXLibeufin(dbRow.direction),
pmtInfId = dbRow.pmtInfId
)
}
@@ -256,7 +257,7 @@ fun printConfig(demobank: DemobankConfigEntity) {
fun getHistoryElementFromTransactionRow(
dbRow: BankAccountFreshTransactionEntity
-): RawPayment {
+): XLibeufinBankTransaction {
return getHistoryElementFromTransactionRow(dbRow.transactionRef)
}
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
index 0d2a80d0..a1a4d70b 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
@@ -225,7 +225,7 @@ class Camt053Tick : CliktCommand(
val dbConnString = getDbConnFromEnv(SANDBOX_DB_ENV_VAR_NAME)
Database.connect(dbConnString)
dbCreateTables(dbConnString)
- val newStatements = mutableMapOf<String, MutableList<RawPayment>>()
+ val newStatements = mutableMapOf<String, MutableList<XLibeufinBankTransaction>>()
/**
* For each bank account, extract the latest statement and
* include all the later transactions in a new statement.
@@ -1336,8 +1336,8 @@ val sandboxApp: Application.() -> Unit = {
val baseUrl = URL(call.request.getBaseUrl())
val withdrawUri = url {
protocol = URLProtocol(
- "taler".plus(if (baseUrl.protocol.lowercase() == "http") "+http" else ""),
- -1
+ name = "taler".plus(if (baseUrl.protocol.lowercase() == "http") "+http" else ""),
+ defaultPort = -1
)
host = "withdraw"
val pathSegments = mutableListOf(
@@ -1492,7 +1492,7 @@ val sandboxApp: Application.() -> Unit = {
if (fromMs < 0) throw badRequest("'from_ms' param is less than 0")
val untilMs = expectLong(call.request.queryParameters["until_ms"] ?: Long.MAX_VALUE.toString())
if (untilMs < 0) throw badRequest("'until_ms' param is less than 0")
- val ret = mutableListOf<RawPayment>()
+ val ret = mutableListOf<XLibeufinBankTransaction>()
/**
* Case where page number wasn't given,
* therefore the results starts from the last transaction.
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt
index 2361b876..2ebe5fc2 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt
@@ -6,6 +6,8 @@ import org.jetbrains.exposed.sql.transactions.transaction
import tech.libeufin.util.*
import java.math.BigDecimal
+
+
/**
* Check whether the given bank account would surpass the
* debit threshold, in case the potential amount gets transferred.