2
0
Fork 0
ff/source/_posts/Cross-Unit-Converter-test.md

4.7 KiB

title: Cross Unit Converter test date: 2018-01-18 21:01:43 tags: - java - unit-converter

Unit groups

Unit groups

Building groups

/**
 * 
 * 
 * @author Willem Cazander
 * @version 1.0 Oct 17, 2015
 */
public class UnitXCModuleKelvin implements UnitXCConfigModule {
	
	public static final String GROUP_ID           = "kelvin";
	public static final String GROUP_BASE_TYPE_ID = "K";
	private static final String[] GROUP_QUANTITIES = {"thermodynamic_temperature"};
	
	public static final String TYPE_KELVIN_ID  = GROUP_BASE_TYPE_ID;
	public static final String TYPE_KELVIN_NAME  = GROUP_ID;
	public static final String TYPE_KELVIN_FLAG  = buildFlag(GROUP_ID,TYPE_KELVIN_NAME);
	private static final String TYPE_KELVIN_WIKI  = "Kelvin";
	
	public static final String TYPE_CELSIUS_ID  = "°C";
	public static final String TYPE_CELSIUS_NAME  = "celsius";
	public static final String TYPE_CELSIUS_FLAG  = buildFlag(GROUP_ID,TYPE_CELSIUS_NAME);
	private static final double TYPE_CELSIUS_OFFSET = 273.15;
	private static final String TYPE_CELSIUS_WIKI  = "Celsius";
	
	public static final String TYPE_FAHRENHEIT_ID  = "°F";
	public static final String TYPE_FAHRENHEIT_NAME  = "fahrenheit";
	public static final String TYPE_FAHRENHEIT_FLAG  = buildFlag(GROUP_ID,TYPE_FAHRENHEIT_NAME);
	private static final double TYPE_FAHRENHEIT_OFFSET = 459.67;
	private static final Fraction TYPE_FAHRENHEIT_FRACTION = Fraction.getFraction(5,9);
	private static final String TYPE_FAHRENHEIT_WIKI  = "Fahrenheit";
	
	public static final String TYPE_RANKINE_ID  = "°R";
	public static final String TYPE_RANKINE_NAME  = "rankine";
	public static final String TYPE_RANKINE_FLAG  = buildFlag(GROUP_ID,TYPE_RANKINE_NAME);
	private static final String TYPE_RANKINE_WIKI  = "Rankine_scale";
	
	public static final String TYPE_ROMER_ID  = "Rø";
	public static final String TYPE_ROMER_NAME  = "rømer";
	public static final String TYPE_ROMER_FLAG  = buildFlag(GROUP_ID,TYPE_ROMER_NAME);
	public static final String TYPE_ROMER_ALIAS_NAME  = "romer";
	public static final String TYPE_ROMER_ALIAS_FLAG  = buildFlag(GROUP_ID,TYPE_ROMER_ALIAS_NAME);
	private static final Fraction TYPE_ROMER_FRACTION = Fraction.getFraction(40,21);
	private static final double   TYPE_ROMER_FRACTION_OFFSET = 7.5;
	private static final String TYPE_ROMER_WIKI  = "Rømer_scale";
	
	@Override
	public void configModule(UnitXCConfigBuilder builder) {
		builder.createUnitGroupBase(GROUP_ID)
			.addQuantityIds(GROUP_QUANTITIES)
			.setBaseTypeId(     TYPE_KELVIN_ID)
			.createSIUnitTypes()
				.setId(         TYPE_KELVIN_ID)
				.setName(       TYPE_KELVIN_NAME)
				.addTypeFlag(   TYPE_KELVIN_FLAG)
				.setWebLinkWiki(TYPE_KELVIN_WIKI)
			.build()
			.createSIUnitTypes()
				.setId(         TYPE_CELSIUS_ID)
				.setName(       TYPE_CELSIUS_NAME)
				.addTypeFlag(   TYPE_CELSIUS_FLAG)
				.setWebLinkWiki(TYPE_CELSIUS_WIKI)
				.createToBaseConverterSteps().offsetUp(TYPE_CELSIUS_OFFSET).build()
				.createFromBaseConverterSteps().offsetDown(TYPE_CELSIUS_OFFSET).build()
			.build()
			.createSIUnitTypes()
				.setId(          TYPE_FAHRENHEIT_ID)
				.setName(        TYPE_FAHRENHEIT_NAME)
				.addTypeFlag(    TYPE_FAHRENHEIT_FLAG)
				.addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL)
				.setWebLinkWiki( TYPE_FAHRENHEIT_WIKI)
				.createToBaseConverterSteps()
					.offsetUp(   TYPE_FAHRENHEIT_OFFSET)
					.multiply(   TYPE_FAHRENHEIT_FRACTION)
				.build()
				.createFromBaseConverterSteps()
					.multiply(   TYPE_FAHRENHEIT_FRACTION.invert())
					.offsetDown( TYPE_FAHRENHEIT_OFFSET)
				.build()
			.build()
			.createSIUnitTypes()
				.setId(          TYPE_RANKINE_ID)
				.setName(        TYPE_RANKINE_NAME)
				.addTypeFlag (   TYPE_RANKINE_FLAG)
				.setWebLinkWiki( TYPE_RANKINE_WIKI)
				.createToBaseConverterSteps().multiply(TYPE_FAHRENHEIT_FRACTION).build()
				.createFromBaseConverterSteps().multiply(TYPE_FAHRENHEIT_FRACTION.invert()).build()
			.build()
			.createSIUnitTypes()
				.setId(          TYPE_ROMER_ID)
				.setName(        TYPE_ROMER_NAME)
				.addTypeFlag(    TYPE_ROMER_FLAG)
				.setWebLinkWiki( TYPE_ROMER_WIKI)
				.createToBaseConverterSteps()
					.offsetUp(   TYPE_CELSIUS_OFFSET)
					.multiply(   TYPE_ROMER_FRACTION)
					.offsetUp(   TYPE_ROMER_FRACTION_OFFSET)
				.build()
				.createFromBaseConverterSteps()
					.offsetDown( TYPE_ROMER_FRACTION_OFFSET)
					.multiply(   TYPE_ROMER_FRACTION.invert())
					.offsetDown( TYPE_CELSIUS_OFFSET)
				.build()
			.build()
			.createSIUnitTypes()
				.setAliasOfType( TYPE_ROMER_ID)
				.setId(          TYPE_ROMER_ALIAS_NAME)
				.setName(        TYPE_ROMER_ALIAS_NAME)
				.addTypeFlag(    TYPE_ROMER_ALIAS_FLAG)
			.build()
		.build()
		;
	}
}