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

128 lines
4.7 KiB
Markdown
Raw Normal View History

2020-01-03 20:14:21 +00:00
---
title: Cross Unit Converter test
date: 2018-01-18 21:01:43
tags:
- java
- unit-converter
---
### Unit groups
![Unit groups](unitxc-groups.png "Unit groups")
### Building groups
``` java
/**
*
*
* @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()
;
}
}
```