/* Class that handles how money is represented
* Mostly just formats monetary values
*/
package com.databases.example.utils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Currency;
import java.util.Locale;
import static java.math.BigDecimal.ZERO;
public class Money {
private final String value;
private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_UP;
public Money(String value) {
this.value = value;
}
public Money(float value) {
this.value = value + "";
}
public Money(BigDecimal value) {
this.value = value + "";
}
public BigDecimal getBigDecimal(Locale locale) {
return new BigDecimal(value).setScale(Currency.getInstance(locale).getDefaultFractionDigits(), ROUNDING_MODE);
}
public String getNumberFormat(Locale locale) {
BigDecimal result = this.getBigDecimal(locale);
DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol + "-");
formatter.setNegativeSuffix("");
return formatter.format(result);
}
public boolean isPositive(Locale locale) {
BigDecimal result = new BigDecimal(value).setScale(Currency.getInstance(locale).getDefaultFractionDigits(), ROUNDING_MODE);
return result.compareTo(ZERO) >= 0;
}
// double result = 50.00 + 5.45 - 30.67;
// BigDecimal result2 = new BigDecimal(result).setScale(Currency.getInstance(getResources().getConfiguration().locale).getDefaultFractionDigits(), BigDecimal.ROUND_HALF_UP);
// Log.e("AccountsFragment-calculateBalance", "BigDecimal: " + result2);
// NumberFormat form = NumberFormat.getCurrencyInstance();
// Log.e("AccountsFragment-calculateBalance", "Amount: " + form.format(result2));
}//End Money