gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated: migrating to java.time


From: gnunet
Subject: [libeufin] branch master updated: migrating to java.time
Date: Mon, 25 May 2020 18:01:50 +0200

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new 313f461  migrating to java.time
313f461 is described below

commit 313f461250a03566dc850000229420c4355e0206
Author: MS <address@hidden>
AuthorDate: Mon May 25 18:01:30 2020 +0200

    migrating to java.time
---
 .../src/main/kotlin/tech/libeufin/nexus/Helpers.kt |  6 ++--
 nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt  |  6 ++--
 nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt  | 15 ++++++----
 .../tech/libeufin/sandbox/EbicsProtocolBackend.kt  | 21 +++++++------
 util/src/main/kotlin/time.kt                       | 34 +++++++++++++---------
 5 files changed, 49 insertions(+), 33 deletions(-)

diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
index e194269..6766d30 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
@@ -113,6 +113,9 @@ fun processCamtMessage(
         if (acct == null) {
             throw NexusError(HttpStatusCode.NotFound, "user not found")
         }
+        val bookingDate = parseDashedDate(
+            
camt53doc.pickString("//*[local-name()='BookgDt']//*[local-name()='Dt']")
+        )
         RawBankTransactionEntity.new {
             bankAccount = acct
             unstructuredRemittanceInformation =
@@ -121,8 +124,7 @@ fun processCamtMessage(
             currency = 
camt53doc.pickString("//*[local-name()='Ntry']//*[local-name()='Amt']/@Ccy")
             amount = 
camt53doc.pickString("//*[local-name()='Ntry']//*[local-name()='Amt']")
             status = 
camt53doc.pickString("//*[local-name()='Ntry']//*[local-name()='Sts']")
-            bookingDate =
-                
parseDashedDate(camt53doc.pickString("//*[local-name()='BookgDt']//*[local-name()='Dt']")).millis
+            this.bookingDate = bookingDate.millis()
             counterpartIban =
                 camt53doc.pickString("//*[local-name()='${if 
(this.transactionType == "DBIT") "CdtrAcct" else 
"DbtrAcct"}']//*[local-name()='IBAN']")
             counterpartName =
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
index 7becd84..8c042a1 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
@@ -5,9 +5,9 @@ import com.fasterxml.jackson.annotation.JsonSubTypes
 import com.fasterxml.jackson.annotation.JsonTypeInfo
 import com.fasterxml.jackson.annotation.JsonTypeName
 import com.fasterxml.jackson.databind.JsonNode
-import org.joda.time.DateTime
 import tech.libeufin.util.*
 import java.time.LocalDate
+import java.time.LocalDateTime
 
 data class EbicsBackupRequestJson(
     val passphrase: String
@@ -22,7 +22,7 @@ data class EbicsStandardOrderParamsJson(val dateRange: 
EbicsDateRangeJson?) {
         var dateRange: EbicsDateRange? = if (this.dateRange != null) {
             EbicsDateRange(
                 LocalDate.parse(this.dateRange.start ?: "1970-01-31"),
-                LocalDate.parse(this.dateRange.end ?: 
DateTime.now().toDashedDate())
+                LocalDate.parse(this.dateRange.end ?: 
LocalDateTime.now().toDashedDate())
             )
         } else {
             null
@@ -165,7 +165,7 @@ data class PaymentStatus(
     val creditorName: String,
     val amount: String,
     val subject: String,
-    val submissionDate: String,
+    val submissionDate: String?,
     val preparationDate: String
 )
 
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 8b3054e..5a30093 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -58,7 +58,6 @@ import io.ktor.utils.io.jvm.javaio.toByteReadChannel
 import io.ktor.utils.io.jvm.javaio.toInputStream
 import org.jetbrains.exposed.sql.and
 import org.jetbrains.exposed.sql.transactions.transaction
-import org.joda.time.DateTime
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 import org.slf4j.event.Level
@@ -69,6 +68,7 @@ import java.util.*
 import java.util.zip.InflaterInputStream
 import javax.crypto.EncryptedPrivateKeyInfo
 import javax.sql.rowset.serial.SerialBlob
+import java.time.LocalDateTime
 
 data class NexusError(val statusCode: HttpStatusCode, val reason: String) :
     Exception("${reason} (HTTP status $statusCode)")
@@ -442,6 +442,7 @@ fun serverMain() {
                         val preparedPayment = preparedPayment
                     }
                 }
+                val sd = res.preparedPayment.submissionDate
                 call.respond(
                     PaymentStatus(
                         uuid = res.preparedPayment.id.value,
@@ -451,8 +452,10 @@ fun serverMain() {
                         creditorIban = res.preparedPayment.creditorIban,
                         amount = 
"${res.preparedPayment.sum}:${res.preparedPayment.currency}",
                         subject = res.preparedPayment.subject,
-                        submissionDate = 
DateTime(res.preparedPayment.submissionDate).toDashedDate(),
-                        preparationDate = 
DateTime(res.preparedPayment.preparationDate).toDashedDate()
+                        submissionDate = if (sd != null) {
+                            importDateFromMillis(sd).toDashedDate()
+                        } else null,
+                        preparationDate = 
importDateFromMillis(res.preparedPayment.preparationDate).toDashedDate()
                     )
                 )
                 return@get
@@ -556,8 +559,8 @@ fun serverMain() {
                     RawBankTransactionEntity.find {
                         (RawBankTransactionsTable.bankAccount eq bankAccount) 
and
                                 RawBankTransactionsTable.bookingDate.between(
-                                    parseDashedDate(start ?: 
"1970-01-01").millis,
-                                    parseDashedDate(end ?: 
DateTime.now().toDashedDate()).millis
+                                    parseDashedDate(start ?: 
"1970-01-01").millis(),
+                                    parseDashedDate(end ?: 
LocalDateTime.now().toDashedDate()).millis()
                                 )
                     }.forEach {
                         ret.transactions.add(
@@ -566,7 +569,7 @@ fun serverMain() {
                                 counterpartBic = it.counterpartBic,
                                 counterpartIban = it.counterpartIban,
                                 counterpartName = it.counterpartName,
-                                date = DateTime(it.bookingDate).toDashedDate(),
+                                date = 
importDateFromMillis(it.bookingDate).toDashedDate(),
                                 subject = it.unstructuredRemittanceInformation,
                                 amount = "${it.currency}:${it.amount}"
                             )
diff --git 
a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 3fba96f..379c110 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -51,11 +51,11 @@ import javax.sql.rowset.serial.SerialBlob
 import javax.xml.datatype.DatatypeFactory
 import org.apache.commons.compress.utils.IOUtils
 import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
-import org.joda.time.DateTime
-import org.joda.time.Instant
 import java.io.BufferedInputStream
 import java.io.ByteArrayInputStream
 import java.nio.charset.Charset
+import java.time.Instant
+import java.time.LocalDateTime
 import java.time.ZoneId
 import java.time.ZonedDateTime
 import java.time.format.DateTimeFormatter
@@ -163,8 +163,8 @@ fun buildCamtString(type: Int, history: 
MutableList<RawPayment>): MutableList<St
      */
     val ret = mutableListOf<String>()
     history.forEach {
-        val dashedDate = DateTime.parse(it.date).toDashedDate()
-        val zonedDateTime = DateTime.now().toZonedString()
+        val dashedDate = expectNonNull(it.date)
+        val zonedDateTime = LocalDateTime.now().toZonedString()
         ret.add(
             constructXml(indent = true) {
                 root("Document") {
@@ -405,9 +405,12 @@ private fun constructCamtResponse(
 ): MutableList<String> {
 
     val dateRange = (header.static.orderDetails?.orderParams as 
EbicsRequest.StandardOrderParams).dateRange
-    val (start: DateTime, end: DateTime) = if (dateRange != null) {
-        Pair(DateTime(dateRange.start.toGregorianCalendar().time), 
DateTime(dateRange.end.toGregorianCalendar().time))
-    } else Pair(parseDashedDate("1970-01-01"), DateTime.now())
+    val (start: LocalDateTime, end: LocalDateTime) = if (dateRange != null) {
+        Pair(
+            
importDateFromMillis(dateRange.start.toGregorianCalendar().timeInMillis),
+            
importDateFromMillis(dateRange.end.toGregorianCalendar().timeInMillis)
+        )
+    } else Pair(parseDashedDate("1970-01-01"), LocalDateTime.now())
     val history = mutableListOf<RawPayment>()
     val bankAccount = getBankAccountFromSubscriber(subscriber)
     transaction {
@@ -423,7 +426,7 @@ private fun constructCamtResponse(
                     subject = it.subject,
                     creditorIban = it.creditorIban,
                     debitorIban = it.debitorIban,
-                    date = DateTime(it.date).toDashedDate(),
+                    date = importDateFromMillis(it.date).toDashedDate(),
                     amount = it.amount
                 )
             )
@@ -464,7 +467,7 @@ private fun handleCct(paymentRequest: String) {
             /** For now, the date discards any
              * information about hours and minor units of time.
              */
-            this.date = parseDashedDate(DateTime.now().toDashedDate()).millis
+            this.date = Instant.now().toEpochMilli()
         }
     }
 }
diff --git a/util/src/main/kotlin/time.kt b/util/src/main/kotlin/time.kt
index 07fe4a7..653799c 100644
--- a/util/src/main/kotlin/time.kt
+++ b/util/src/main/kotlin/time.kt
@@ -1,23 +1,31 @@
 package tech.libeufin.util
 
-import org.joda.time.DateTime
-import org.joda.time.format.DateTimeFormat
-import java.time.ZoneId
-import java.time.ZonedDateTime
+import java.time.*
 import java.time.format.DateTimeFormatter
 
-fun DateTime.toZonedString(): String {
+fun LocalDateTime.toZonedString(): String {
     val dateFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME
-    val instant = java.time.Instant.ofEpochMilli(this.millis)
-    val zoned = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault())
-    return dateFormatter.format(zoned)
+    return dateFormatter.format(this.atZone(ZoneId.systemDefault()))
 }
 
-fun DateTime.toDashedDate(): String {
-    return this.toString("y-MM-d")
+fun LocalDateTime.toDashedDate(): String {
+    val dtf = DateTimeFormatter.ISO_LOCAL_DATE
+    return dtf.format(this)
 }
 
-fun parseDashedDate(date: String): DateTime {
-    logger.debug("Parsing date: $date")
-    return DateTime.parse(date, DateTimeFormat.forPattern("y-M-d"))
+fun parseDashedDate(date: String): LocalDateTime {
+    val dtf = DateTimeFormatter.ISO_LOCAL_DATE
+    return LocalDateTime.from(LocalDate.parse(date, dtf))
 }
+
+fun importDateFromMillis(millis: Long): LocalDateTime {
+    return LocalDateTime.ofInstant(
+        Instant.ofEpochMilli(millis),
+        ZoneId.systemDefault()
+    )
+}
+
+fun LocalDateTime.millis(): Long {
+    val instant = Instant.from(this)
+    return instant.toEpochMilli()
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]