Move FiatMoney object to core-util module.

This commit is contained in:
Alex Hart
2021-09-30 11:44:18 -03:00
committed by Greyson Parrelli
parent 0fa13eb097
commit 7752b3aba3
12 changed files with 128 additions and 42 deletions

View File

@@ -0,0 +1,59 @@
package org.signal.core.util.money;
import androidx.annotation.NonNull;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.Currency;
public class FiatMoney {
private final BigDecimal amount;
private final Currency currency;
private final long timestamp;
public FiatMoney(@NonNull BigDecimal amount, @NonNull Currency currency) {
this(amount, currency, 0);
}
public FiatMoney(@NonNull BigDecimal amount, @NonNull Currency currency, long timestamp) {
this.amount = amount;
this.currency = currency;
this.timestamp = timestamp;
}
public @NonNull BigDecimal getAmount() {
return amount;
}
public @NonNull Currency getCurrency() {
return currency;
}
public long getTimestamp() {
return timestamp;
}
/**
* @return amount, rounded to the default fractional amount.
*/
public @NonNull String getDefaultPrecisionString() {
NumberFormat formatter = NumberFormat.getInstance();
formatter.setMinimumFractionDigits(currency.getDefaultFractionDigits());
formatter.setGroupingUsed(false);
return formatter.format(amount);
}
/**
* @return amount, in smallest possible units (cents, yen, etc.)
*/
public @NonNull String getMinimumUnitPrecisionString() {
NumberFormat formatter = NumberFormat.getInstance();
formatter.setMaximumFractionDigits(0);
formatter.setGroupingUsed(false);
BigDecimal multiplicand = BigDecimal.TEN.pow(currency.getDefaultFractionDigits());
return formatter.format(amount.multiply(multiplicand));
}
}