128 lines
4.7 KiB
Markdown
128 lines
4.7 KiB
Markdown
---
|
|
title: Cross Unit Converter test
|
|
date: 2018-01-18 21:01:43
|
|
tags:
|
|
- java
|
|
- unit-converter
|
|
---
|
|
|
|
### 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()
|
|
;
|
|
}
|
|
}
|
|
```
|