summaryrefslogtreecommitdiff
path: root/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
diff options
context:
space:
mode:
Diffstat (limited to 'taler-kotlin-common/src/main/java/net/taler/common/Amount.kt')
-rw-r--r--taler-kotlin-common/src/main/java/net/taler/common/Amount.kt21
1 files changed, 19 insertions, 2 deletions
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"