/*
* Copyright (c) 2014. ThanksMister LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.thanksmister.btcblue.utils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Conversions
{
private Conversions()
{
}
public static double diffOfTwoValues(String value1, String value2)
{
return convertToDouble(value1) - convertToDouble(value2);
}
public static double sumOfTwoValues(String value1, String value2)
{
return convertToDouble(value1) + convertToDouble(value2);
}
public static double sumOfTwoValues(double value1, String value2)
{
return value1 + convertToDouble(value2);
}
public static String convertDollarsCents(String centValue)
{
// Declaration of variables.
double dollars;
double cents;
String inputNumberString;
double inputNumber;
double calculatedAnswer;
// Convert String to int
inputNumber = Double.parseDouble(centValue);
// Calculate the number
dollars = inputNumber / 100;
cents = inputNumber % 100;
return dollars + "." + cents;
}
public static String convertToCents(String cents)
{
if(cents == null) return "0.00";
if(cents.contains(".")) return cents;
if(cents.length() < 2) {
return "0.0" + cents;
} else if (cents.length() == 2) {
return "0." + cents;
} else if (cents.length() > 2) {
String dollars = cents.substring(0, cents.length() - 2);
String andcents = cents.substring(cents.length() - 2, cents.length());
return dollars + "." + andcents;
}
return cents;
}
public static String formatCurrencyAmount(String amount)
{
return formatCurrencyAmount(amount, 2, 2);
}
public static String formatBitcoinAmount(Double amount)
{
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(amount);
return f;
}
public static String formatWholeNumber(Double amount)
{
NumberFormat formatter = new DecimalFormat("###");
String f = formatter.format(amount);
return f;
}
public static String formatCurrencyAmount(Double amount)
{
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(amount);
return formatCurrencyAmount(f, 2, 2);
}
public static String formatCurrencyAmount(Double amount, int max, int min)
{
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(amount);
return formatCurrencyAmount(f, max, min);
}
private static String formatCurrencyAmount(String amount, int maxDecimal, int minDecimal)
{
try{
if(amount == null) return "";
if(amount.equals("") || amount.equals(".")) amount = "0.00";
if (amount.length() > 0 && (amount.lastIndexOf(".") > amount.length() )) { // return default if multiple periods
return "0.00";
}
if(amount.contains(",")) amount = amount.replace(",", ".");
BigDecimal balanceNumber = new BigDecimal(amount);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(maxDecimal);
df.setMinimumFractionDigits(minDecimal);
df.setGroupingUsed(false);
if (balanceNumber.compareTo(BigDecimal.ZERO) == -1) {
balanceNumber = balanceNumber.multiply(new BigDecimal(-1));
}
return df.format(balanceNumber);
} catch (NumberFormatException e) {
return "0.00";
}
}
private static String removeLastChar(String str)
{
str = str.substring(0, str.length()-1);
return str;
}
public static double convertToDouble (String value)
{
if (value == null || Strings.isBlank(value)) return 0;
try {
return Double.parseDouble(value);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return 0;
}
public static double convertToDoubleOrDefault (String value, double defaultValue)
{
if (value == null)
return defaultValue;
try {
return Double.parseDouble(value);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return defaultValue;
}
public static float convertToFloat (String value)
{
try {
return Float.parseFloat(value);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return 0;
}
public static String formatCurrencyAmount(Float amount, int maxDecimal, int minDecimal)
{
BigDecimal balanceNumber = new BigDecimal(amount);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(maxDecimal);
df.setMinimumFractionDigits(minDecimal);
df.setGroupingUsed(false);
if (balanceNumber.compareTo(BigDecimal.ZERO) == -1) {
balanceNumber = balanceNumber.multiply(new BigDecimal(-1));
}
return df.format(balanceNumber);
}
public static String formatBitcoinAmount(String btc, int maxDecimal, int minDecimal)
{
if(btc == null) return null;
Double balanceNumber = Double.parseDouble(btc);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(maxDecimal);
df.setMinimumFractionDigits(minDecimal);
df.setGroupingUsed(false);
return df.format(balanceNumber);
}
}