/**
 * Converts from one unit to another (e.g., inches to feet)
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0   (Implemented getMultiplier)
 */
public class UnitConverter
{


    /**
     * Default Constructor
     */
    public UnitConverter()
    {
    }


    /**
     * Perform a conversion
     *
     * @param value    The number to convert
     * @param from     The units for value (e.g., "inches")
     * @param to       The units to convert to (e.g., "feet")
     * @return         The converted value
     */
    public double convert(double value, String from, String to)
    {
	double     result;

	result = value * getMultiplier(from, to);
	return result;
    }



    /**
     * Get the multiplier needed for a conversion
     *
     * @param from     The units to convert from (e.g., "inches")
     * @param to       The units to convert to (e.g., "feet")
     * @return         What "from" needs to be multiplied by to get "to"
     */
    public double getMultiplier(String from, String to)
    {
	double        multiplier;

	multiplier = 1.0;
	if        (from.equals("inches")) {

	    if      (to.equals("feet"))   multiplier = 1.0/12.0;
	    else if (to.equals("yards"))  multiplier = 1.0/12.0/3.0;
	    else if (to.equals("miles"))  multiplier = 1.0/12.0/3.0/1760.0;

	} else if (from.equals("feet")) {

	    if      (to.equals("inches")) multiplier = 12.0;
	    else if (to.equals("yards"))  multiplier = 1.0/3.0;
	    else if (to.equals("miles"))  multiplier = 1.0/3.0/1760.0;

	} else if (from.equals("yards")) {

	    if      (to.equals("inches")) multiplier = 3.0*12.0;
	    else if (to.equals("feet"))   multiplier = 3.0;
	    else if (to.equals("miles"))  multiplier = 1.0/1760.0;

	} else if (from.equals("miles")) {

	    if      (to.equals("inches")) multiplier = 12.0*3.0*1760.0;
	    else if (to.equals("yards"))  multiplier = 1760.0;
	    else if (to.equals("feet"))   multiplier = 3.0*1760.0;
	}

	return multiplier;
    }

}
