package com.spun.util.parser;
import com.spun.util.StringUtils;
public class MassAmount extends TemplateDouble
{
public static final int GRAMS = 0;
public static final int KILOGRAMS = 1;
public static final int POUNDS = 2;
public static final String UNITS[] = {"Grams", "Kilograms", "Pounds"};
private static final double UNIT_CONVERSIONS[] = {1, .001, 0.00220467};
/************************************************************************/
public MassAmount(double amount)
{
super(amount, "", "", 0, 2);
}
/************************************************************************/
public MassAmount(double amount, int units)
{
super(convertUnits(amount, units, GRAMS), "", "", 0, 2);
}
/************************************************************************/
public static int getUnits(String value)
{
return StringUtils.resolveEnumeration(value, UNITS);
}
/************************************************************************/
public static double convertUnits(double amount, int fromUnits, int toUnits)
{
return (amount / UNIT_CONVERSIONS[fromUnits]) * UNIT_CONVERSIONS[toUnits];
}
/************************************************************************/
public double convertUnits(int toUnits)
{
return this.amount * UNIT_CONVERSIONS[toUnits];
}
/************************************************************************/
public double getAmountInUnits(int desiredUnits)
{
return convertUnits(desiredUnits);
}
/************************************************************************/
public String inUnits(String desiredUnits)
{
return inFormat(getAmountInUnits(getUnits(desiredUnits)), defaultPrefix, defaultMaximumPrecision, defaultMinimumPrecision, defaultPostfix, true);
}
/************************************************************************/
public String inUnits(String desiredUnits, int maximumPrecision, int minimumPrecision)
{
return inFormat(getAmountInUnits(getUnits(desiredUnits)), defaultPrefix, maximumPrecision, getDefaultMinimumPrecision(maximumPrecision),
defaultPostfix, true);
}
/************************************************************************/
public int getPoundsRoundedUp()
{
return getRoundedUp(MassAmount.POUNDS);
}
/************************************************************************/
public int getRoundedUp(int inUnits)
{
return (int) Math.ceil(convertUnits(inUnits) - 0.001);
}
/************************************************************************/
/************************************************************************/
}