9.5 KiB
9.5 KiB
title: Cross Unit Converter test
date: 2018-01-18 21:01:43
tags:
- java
- unit-converter
Unit groups
digraph G {
kelvin[shape=box,style=filled,color=".9 0.5 0.9",label="kelvin\nK\nkelvin\n(thermodynamic_temperature)",labelloc=b];
kelvin -> kelvin[color=red,label="174"];
ampere[shape=box,style=filled,color=".9 0.5 0.9",label="ampere\nA\nampere\n(electric_current)",labelloc=b];
ampere -> ampere[color=red,label="29"];
candela[shape=box,style=filled,color=".9 0.5 0.9",label="candela\ncd\ncandela\n(luminous_intensity)",labelloc=b];
candela -> candela[color=red,label="29"];
mole[shape=box,style=filled,color=".9 0.5 0.9",label="mole\nmol\nmole\n(amount_of_substance)",labelloc=b];
mole -> mole[color=red,label="30"];
metre[shape=box,style=filled,color=".9 0.5 0.9",label="metre\nm\nmetre\n(length)",labelloc=b];
metre -> metre[color=red,label="348"];
kilogram[shape=box,style=filled,color=".9 0.5 0.9",label="kilogram\ng\ngram\n(mass)",labelloc=b];
kilogram -> kilogram[color=red,label="174"];
second[shape=box,style=filled,color=".9 0.5 0.9",label="second\ns\nsecond\n(time)",labelloc=b];
second -> second[color=red,label="174"];
square_metre[label="square_metre\nm²\nsquare metre\n(area)",labelloc=b];
square_metre -> square_metre[color=red,label="351"];
metre -> square_metre[dir=none];
cubic_metre[label="cubic_metre\nm³\ncubic metre\n(volume)",labelloc=b];
cubic_metre -> cubic_metre[color=red,label="348"];
metre -> cubic_metre[dir=none];
metre_per_second[label="metre_per_second\nm/s\nmetre per second\n(speed,velocity)",labelloc=b];
metre_per_second -> metre_per_second[color=red,label="60552"];
metre -> metre_per_second[dir=none];
second -> metre_per_second[dir=none];
cubic_metre_per_second[label="cubic_metre_per_second\nm³/s\ncubic metre per second\n(volumetric_flow)",labelloc=b];
cubic_metre_per_second -> cubic_metre_per_second[color=red,label="60552"];
cubic_metre -> cubic_metre_per_second[dir=none];
second -> cubic_metre_per_second[dir=none];
metre_per_second_squared[label="metre_per_second_squared\nm/s²\nMeter per second squared\n(acceleration)",labelloc=b];
metre_per_second_squared -> metre_per_second_squared[color=red,label="10536049"];
metre_per_second -> metre_per_second_squared[dir=none];
second -> metre_per_second_squared[dir=none];
metre_per_second_cubed[label="metre_per_second_cubed\nm/s²/s\nMeter per second squared per second\n(jerk,jolt,surge,lurch)",labelloc=b];
metre_per_second_cubed -> metre_per_second_cubed[color=red,label="1833272526"];
metre_per_second_squared -> metre_per_second_cubed[dir=none];
second -> metre_per_second_cubed[dir=none];
metre_per_quartic_second[label="metre_per_quartic_second\nm/s²/s/s\nMeter per second squared per second per second\n(snap,jounce)",labelloc=b];
metre_per_quartic_second -> metre_per_quartic_second[color=red,label="318989419524"];
metre_per_second_cubed -> metre_per_quartic_second[dir=none];
second -> metre_per_quartic_second[dir=none];
newton[label="newton\nN\nnewton\n(force,weight)",labelloc=b];
newton -> newton[color=red,label="1833272527"];
kilogram -> newton[dir=none];
metre_per_second_squared -> newton[dir=none];
kilogram_per_square_metre[label="kilogram_per_square_metre\ng/m²\ngram per square metre\n(area_density)",labelloc=b];
kilogram_per_square_metre -> kilogram_per_square_metre[color=red,label="61074"];
kilogram -> kilogram_per_square_metre[dir=none];
square_metre -> kilogram_per_square_metre[dir=none];
kilogram_per_cubic_metre[label="kilogram_per_cubic_metre\ng/m³\ngram per cubic metre\n(density,mass_density)",labelloc=b];
kilogram_per_cubic_metre -> kilogram_per_cubic_metre[color=red,label="60552"];
kilogram -> kilogram_per_cubic_metre[dir=none];
cubic_metre -> kilogram_per_cubic_metre[dir=none];
cubic_metre_per_kilogram[label="cubic_metre_per_kilogram\nm³/g\ncubic metre per gram\n(specific_volume)",labelloc=b];
cubic_metre_per_kilogram -> cubic_metre_per_kilogram[color=red,label="60552"];
cubic_metre -> cubic_metre_per_kilogram[dir=none];
kilogram -> cubic_metre_per_kilogram[dir=none];
mole_per_cubic_metre[label="mole_per_cubic_metre\nmol/m³\nmole per cubic metre\n(molarity)",labelloc=b];
mole_per_cubic_metre -> mole_per_cubic_metre[color=red,label="10440"];
mole -> mole_per_cubic_metre[dir=none];
cubic_metre -> mole_per_cubic_metre[dir=none];
cubic_metre_per_mole[label="cubic_metre_per_mole\nm³/mol\ncubic metre per mole\n(molar_volume)",labelloc=b];
cubic_metre_per_mole -> cubic_metre_per_mole[color=red,label="10440"];
cubic_metre -> cubic_metre_per_mole[dir=none];
mole -> cubic_metre_per_mole[dir=none];
newton_per_second[label="newton_per_second\nkg/m/s/s/s\nkilogram per metre per second per second per second\n(yank)",labelloc=b];
newton_per_second -> newton_per_second[color=red,label="318989419698"];
newton -> newton_per_second[dir=none];
second -> newton_per_second[dir=none];
Stats[shape=box,color=".9 0.2 0.8",label="unit groups: 21\ntotal units: 641656246143",labelloc=b];
}
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()
;
}
}