From 82b8b57dc16112b859150696199774fcf06655e1 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 18 Mar 2020 17:24:02 -0300 Subject: Factor out code from merchant-terminal into common library --- .../src/main/java/net/taler/common/Amount.kt | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'taler-kotlin-common/src/main/java/net/taler/common/Amount.kt') diff --git a/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt b/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt index 428ddef..0389db1 100644 --- a/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt +++ b/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt @@ -16,13 +16,14 @@ package net.taler.common +import org.json.JSONObject + data class Amount(val currency: String, val amount: String) { companion object { - + private const val FRACTIONAL_BASE = 1e8 private val SIGNED_REGEX = Regex("""([+\-])(\w+):([0-9.]+)""") - @Suppress("unused") fun fromString(strAmount: String): Amount { val components = strAmount.split(":") return Amount(components[0], components[1]) @@ -38,6 +39,22 @@ data class Amount(val currency: String, val amount: String) { // only display as many digits as required to precisely render the balance return Amount(currency, amountStr.removeSuffix(".0")) } + + fun fromJson(jsonAmount: JSONObject): Amount { + val amountCurrency = jsonAmount.getString("currency") + val amountValue = jsonAmount.getString("value") + val amountFraction = jsonAmount.getString("fraction") + val amountIntValue = Integer.parseInt(amountValue) + val amountIntFraction = Integer.parseInt(amountFraction) + return Amount( + amountCurrency, + (amountIntValue + amountIntFraction / FRACTIONAL_BASE).toString() + ) + } + } + + fun isZero(): Boolean { + return amount.toDouble() == 0.0 } override fun toString() = "$amount $currency" -- cgit v1.2.3