From 875187314580e465b5c090eb991878d5c6c17085 Mon Sep 17 00:00:00 2001 From: Willem Date: Sat, 10 Jun 2017 18:04:59 +0200 Subject: [PATCH] added groups and started on i18n --- ff-unitxc-converter/pom.xml | 6 + .../net/forwardfire/unitxc/UnitXCFactory.java | 80 +++++------ .../builder/AbstractUnitXCGroupBuilder.java | 23 ++-- .../builder/AbstractUnitXCTypeBuilder.java | 12 +- .../config/builder/UnitXCConfigBuilder.java | 32 ++++- .../UnitXCGroupCompoundPairBuilder.java | 20 +++ .../builder/UnitXCTypeSIPrefixBuilder.java | 2 +- .../converter/UnitXConverterEngine.java | 8 +- .../unitxc/model/AbstractUnitXCGroup.java | 52 ++++---- .../model/DefaultUnitXCGroupQuantity.java | 58 ++++++++ .../model/DefaultUnitXCResourceValue.java | 59 ++++++++ .../unitxc/model/DefaultUnitXCType.java | 16 +-- .../unitxc/model/UnitXCConfig.java | 19 +-- .../forwardfire/unitxc/model/UnitXCGroup.java | 9 +- .../unitxc/model/UnitXCGroupBase.java | 6 +- .../model/UnitXCGroupCompoundExponent.java | 7 +- .../unitxc/model/UnitXCGroupCompoundPair.java | 13 +- .../unitxc/model/UnitXCGroupJump.java | 3 - .../unitxc/model/UnitXCGroupQuantity.java | 48 +++++++ .../unitxc/model/UnitXCGroupSource.java | 50 +++++++ .../unitxc/model/UnitXCModule.java | 43 ++++++ .../unitxc/model/UnitXCResourceBundle.java | 73 ++++++++++ .../unitxc/model/UnitXCResourceValue.java | 44 ++++++ .../forwardfire/unitxc/model/UnitXCType.java | 4 +- .../unitxc/model/step/RuleStepCode.java | 80 +++++++++++ .../model/step/RuleStepCodePrinter.java | 105 +++++++++++++++ .../unitxc/model/step/RuleStepCodeStyle.java | 7 + .../step/UnitXCConverterStepAutoRounding.java | 17 +++ .../step/UnitXCConverterStepCondition.java | 68 ++++++++++ .../UnitXCConverterStepConditionEquality.java | 42 ++++-- .../step/UnitXCConverterStepOperation.java | 17 +++ .../UnitXCConverterStepOperationOperator.java | 45 +++++-- .../step/UnitXCConverterStepPowerOfTen.java | 26 ++++ .../step/UnitXCConverterStepReference.java | 49 ++++--- .../unitxc/model/step/UnitXConverterStep.java | 2 + .../model/step/UnitXConverterStepContext.java | 2 - ...UnitXConverterStepValueNamedParameter.java | 15 +++ .../UnitXConverterStepValueNamedVariable.java | 15 +++ .../value/UnitXConverterStepValueRead.java | 3 + .../UnitXConverterStepValueReadWrite.java | 3 + ...nitXConverterStepValueReferenceDouble.java | 13 ++ ...erterStepValueReferenceDoubleFraction.java | 8 +- ...itXConverterStepValueReferenceInteger.java | 13 ++ ...nitXConverterStepValueReferenceString.java | 18 +++ ...icCurrent.java => UnitXCModuleAmpere.java} | 19 ++- ...ntensity.java => UnitXCModuleCandela.java} | 19 ++- ...mperature.java => UnitXCModuleKelvin.java} | 25 ++-- ...uleMass.java => UnitXCModuleKilogram.java} | 27 ++-- ...duleLength.java => UnitXCModuleMetre.java} | 37 +++-- ...leSubstance.java => UnitXCModuleMole.java} | 35 +++-- ...oduleTime.java => UnitXCModuleSecond.java} | 15 +-- ...olume.java => UnitXCModuleCubicMetre.java} | 20 ++- ...=> UnitXCModuleCubicMetrePerKilogram.java} | 19 ++- ...ava => UnitXCModuleCubicMetrePerMole.java} | 19 ++- ...a => UnitXCModuleCubicMetrePerSecond.java} | 17 +-- ...=> UnitXCModuleKilogramPerCubicMetre.java} | 19 ++- ...> UnitXCModuleKilogramPerSquareMetre.java} | 17 +-- ...=> UnitXCModuleMetrePerQuarticSecond.java} | 19 ++- ...d.java => UnitXCModuleMetrePerSecond.java} | 23 ++-- ...a => UnitXCModuleMetrePerSecondCubed.java} | 17 +-- ...=> UnitXCModuleMetrePerSecondSquared.java} | 21 ++- .../UnitXCModuleMolarConcentration.java | 54 -------- .../UnitXCModuleMolePerCubicMetre.java | 51 +++++++ .../derived/UnitXCModuleNewtonPerSecond.java | 51 +++++++ ...Area.java => UnitXCModuleSquareMetre.java} | 23 ++-- .../module/named/UnitXCModuleNewton.java | 22 ++- .../unitxc/UnitXCBundle.properties | 122 +++++++++++++++++ .../unitxc/UnitXCConverterStepTest.java | 126 ++++++++++++++++-- .../forwardfire/unitxc/UnitXCManagerTest.java | 25 ++-- todo.md | 8 +- 70 files changed, 1592 insertions(+), 493 deletions(-) create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCGroupQuantity.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCResourceValue.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupQuantity.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupSource.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCModule.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceBundle.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceValue.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCode.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodePrinter.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodeStyle.java rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleElectricCurrent.java => UnitXCModuleAmpere.java} (77%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleLuminousIntensity.java => UnitXCModuleCandela.java} (74%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleTemperature.java => UnitXCModuleKelvin.java} (87%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleMass.java => UnitXCModuleKilogram.java} (89%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleLength.java => UnitXCModuleMetre.java} (91%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleSubstance.java => UnitXCModuleMole.java} (72%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/{UnitXCModuleTime.java => UnitXCModuleSecond.java} (89%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleVolume.java => UnitXCModuleCubicMetre.java} (74%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleAreaDensity.java => UnitXCModuleCubicMetrePerKilogram.java} (67%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleMolarVolume.java => UnitXCModuleCubicMetrePerMole.java} (67%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleVolumetricFlow.java => UnitXCModuleCubicMetrePerSecond.java} (69%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleSpecificVolume.java => UnitXCModuleKilogramPerCubicMetre.java} (66%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleMassDensity.java => UnitXCModuleKilogramPerSquareMetre.java} (69%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleJounce.java => UnitXCModuleMetrePerQuarticSecond.java} (67%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleSpeed.java => UnitXCModuleMetrePerSecond.java} (67%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleJerk.java => UnitXCModuleMetrePerSecondCubed.java} (68%) rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleAcceleration.java => UnitXCModuleMetrePerSecondSquared.java} (72%) delete mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarConcentration.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolePerCubicMetre.java create mode 100644 ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleNewtonPerSecond.java rename ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/{UnitXCModuleArea.java => UnitXCModuleSquareMetre.java} (79%) create mode 100644 ff-unitxc-converter/src/main/resources/net/forwardfire/unitxc/UnitXCBundle.properties diff --git a/ff-unitxc-converter/pom.xml b/ff-unitxc-converter/pom.xml index e88cb40..66a0658 100644 --- a/ff-unitxc-converter/pom.xml +++ b/ff-unitxc-converter/pom.xml @@ -18,5 +18,11 @@ commons-lang3 compile + + commons-io + commons-io + 2.5 + test + \ No newline at end of file diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/UnitXCFactory.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/UnitXCFactory.java index 8e0fe4e..8cfce33 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/UnitXCFactory.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/UnitXCFactory.java @@ -31,25 +31,26 @@ import net.forwardfire.unitxc.config.UnitXCConfigManager; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCConfig; -import net.forwardfire.unitxc.module.UnitXCModuleSubstance; -import net.forwardfire.unitxc.module.UnitXCModuleElectricCurrent; -import net.forwardfire.unitxc.module.UnitXCModuleLength; -import net.forwardfire.unitxc.module.UnitXCModuleLuminousIntensity; -import net.forwardfire.unitxc.module.UnitXCModuleMass; -import net.forwardfire.unitxc.module.UnitXCModuleTemperature; -import net.forwardfire.unitxc.module.UnitXCModuleTime; -import net.forwardfire.unitxc.module.derived.UnitXCModuleAcceleration; -import net.forwardfire.unitxc.module.derived.UnitXCModuleArea; -import net.forwardfire.unitxc.module.derived.UnitXCModuleAreaDensity; -import net.forwardfire.unitxc.module.derived.UnitXCModuleJerk; -import net.forwardfire.unitxc.module.derived.UnitXCModuleJounce; -import net.forwardfire.unitxc.module.derived.UnitXCModuleMassDensity; -import net.forwardfire.unitxc.module.derived.UnitXCModuleMolarConcentration; -import net.forwardfire.unitxc.module.derived.UnitXCModuleMolarVolume; -import net.forwardfire.unitxc.module.derived.UnitXCModuleSpecificVolume; -import net.forwardfire.unitxc.module.derived.UnitXCModuleSpeed; -import net.forwardfire.unitxc.module.derived.UnitXCModuleVolume; -import net.forwardfire.unitxc.module.derived.UnitXCModuleVolumetricFlow; +import net.forwardfire.unitxc.module.UnitXCModuleMole; +import net.forwardfire.unitxc.module.UnitXCModuleAmpere; +import net.forwardfire.unitxc.module.UnitXCModuleMetre; +import net.forwardfire.unitxc.module.UnitXCModuleCandela; +import net.forwardfire.unitxc.module.UnitXCModuleKilogram; +import net.forwardfire.unitxc.module.UnitXCModuleKelvin; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; +import net.forwardfire.unitxc.module.derived.UnitXCModuleMetrePerSecondSquared; +import net.forwardfire.unitxc.module.derived.UnitXCModuleSquareMetre; +import net.forwardfire.unitxc.module.derived.UnitXCModuleKilogramPerSquareMetre; +import net.forwardfire.unitxc.module.derived.UnitXCModuleMetrePerSecondCubed; +import net.forwardfire.unitxc.module.derived.UnitXCModuleMetrePerQuarticSecond; +import net.forwardfire.unitxc.module.derived.UnitXCModuleKilogramPerCubicMetre; +import net.forwardfire.unitxc.module.derived.UnitXCModuleMolePerCubicMetre; +import net.forwardfire.unitxc.module.derived.UnitXCModuleCubicMetrePerMole; +import net.forwardfire.unitxc.module.derived.UnitXCModuleNewtonPerSecond; +import net.forwardfire.unitxc.module.derived.UnitXCModuleCubicMetrePerKilogram; +import net.forwardfire.unitxc.module.derived.UnitXCModuleMetrePerSecond; +import net.forwardfire.unitxc.module.derived.UnitXCModuleCubicMetre; +import net.forwardfire.unitxc.module.derived.UnitXCModuleCubicMetrePerSecond; import net.forwardfire.unitxc.module.named.UnitXCModuleNewton; /** @@ -61,39 +62,40 @@ import net.forwardfire.unitxc.module.named.UnitXCModuleNewton; public final class UnitXCFactory { private static final List DEFAULT_CONFIG_MODULES = Collections.unmodifiableList(Arrays.asList( - new UnitXCModuleTemperature(), - new UnitXCModuleElectricCurrent(), - new UnitXCModuleLuminousIntensity(), - new UnitXCModuleSubstance(), - new UnitXCModuleLength(), - new UnitXCModuleMass(), - new UnitXCModuleTime(), + new UnitXCModuleKelvin(), + new UnitXCModuleAmpere(), + new UnitXCModuleCandela(), + new UnitXCModuleMole(), + new UnitXCModuleMetre(), + new UnitXCModuleKilogram(), + new UnitXCModuleSecond(), // currently ordered here - new UnitXCModuleArea(), - new UnitXCModuleVolume(), - new UnitXCModuleSpeed(), - new UnitXCModuleVolumetricFlow(), - new UnitXCModuleAcceleration(), - new UnitXCModuleJerk(), - new UnitXCModuleJounce(), + new UnitXCModuleSquareMetre(), + new UnitXCModuleCubicMetre(), + new UnitXCModuleMetrePerSecond(), + new UnitXCModuleCubicMetrePerSecond(), + new UnitXCModuleMetrePerSecondSquared(), + new UnitXCModuleMetrePerSecondCubed(), + new UnitXCModuleMetrePerQuarticSecond(), // named new UnitXCModuleNewton(), // more derived - new UnitXCModuleAreaDensity(), - new UnitXCModuleMassDensity(), - new UnitXCModuleSpecificVolume(), - new UnitXCModuleMolarConcentration(), - new UnitXCModuleMolarVolume() + new UnitXCModuleKilogramPerSquareMetre(), + new UnitXCModuleKilogramPerCubicMetre(), + new UnitXCModuleCubicMetrePerKilogram(), + new UnitXCModuleMolePerCubicMetre(), + new UnitXCModuleCubicMetrePerMole(), + new UnitXCModuleNewtonPerSecond() + )); protected UnitXCFactory() { } - private static UnitXCConfig buildAll(UnitXCConfig config,List configInit) { UnitXCConfigBuilder builder = new UnitXCConfigBuilder(config); configInit.forEach(ci -> ci.configModule(builder)); diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCGroupBuilder.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCGroupBuilder.java index 673d7c9..4436bd6 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCGroupBuilder.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCGroupBuilder.java @@ -23,9 +23,11 @@ package net.forwardfire.unitxc.config.builder; +import java.util.Arrays; import java.util.function.BiConsumer; import net.forwardfire.unitxc.model.AbstractUnitXCGroup; +import net.forwardfire.unitxc.model.DefaultUnitXCGroupQuantity; import net.forwardfire.unitxc.model.DefaultUnitXCType; /** @@ -48,22 +50,19 @@ abstract public class AbstractUnitXCGroupBuilder(this,new DefaultUnitXCType(),(p,v) -> p.getValue().addUnitType(v)); } - public B setId(String id) { - return make((v) -> v.setId(id)); - } - - public B setName(String name) { - return make((v) -> v.setName(name)); - } - - public B setDescription(String description) { - return make((v) -> v.setDescription(description)); - } - public B setBaseTypeId(String baseTypeId) { return make((v) -> v.setBaseTypeId(baseTypeId)); } + public B addQuantityId(String id) { + return make((v) -> v.addQuantity(new DefaultUnitXCGroupQuantity(null,"group."+v.getId()+".quantity",id))); + } + + public B addQuantityIds(String...ids) { + Arrays.asList(ids).forEach(id -> addQuantityId(id)); + return getBuilder(); + } + // public B addDerivedFrom(String fromId) { // return make((v) -> v.addDerivedFrom(fromId)); // } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCTypeBuilder.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCTypeBuilder.java index e1fd4b0..1567843 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCTypeBuilder.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/AbstractUnitXCTypeBuilder.java @@ -78,16 +78,12 @@ public abstract class AbstractUnitXCTypeBuilder extends AbstractUnitXCBuild return make((v) -> v.setAliasOfType(aliasOfType)); } - public B addWebsiteWiki(String websiteLink) { - return addWebsiteLink("https://en.wikipedia.org/wiki/"+websiteLink); + public B setWebLinkWiki(String websiteLink) { + return setWebLink(UnitXCConfigBuilder.WIKI_BASE_URL+websiteLink); } - public B addWebsiteLink(String websiteLink) { - return make((v) -> v.getWebsiteLinks().add(websiteLink)); - } - - public B addWebsiteLinks(Collection websiteLinks) { - return make((v) -> v.getWebsiteLinks().addAll(websiteLinks)); + public B setWebLink(String websiteLink) { + return make((v) -> v.setWebLink(websiteLink)); } public B addTypeFlag(String flag) { diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCConfigBuilder.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCConfigBuilder.java index 7449d48..05ed1da 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCConfigBuilder.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCConfigBuilder.java @@ -23,6 +23,10 @@ package net.forwardfire.unitxc.config.builder; +import java.util.Collections; +import java.util.Locale; +import java.util.ResourceBundle; + import org.apache.commons.lang3.Validate; import net.forwardfire.unitxc.model.AbstractUnitXCGroup; @@ -31,6 +35,7 @@ import net.forwardfire.unitxc.model.UnitXCGroup; import net.forwardfire.unitxc.model.UnitXCGroupBase; import net.forwardfire.unitxc.model.UnitXCGroupCompoundExponent; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; +import net.forwardfire.unitxc.model.UnitXCResourceBundle; /** * @@ -44,26 +49,41 @@ public class UnitXCConfigBuilder { public static final String TYPE_FLAG_IMPERIAL_EXTRA = "IMPERIAL_EXTRA"; public static final String TYPE_FLAG_ALIAS = "ALIAS"; + public static final String WIKI_BASE_URL = "https://en.wikipedia.org/wiki/"; + private final UnitXCConfig config; + private final UnitXCResourceBundle bundle; public UnitXCConfigBuilder(UnitXCConfig config) { this.config = Validate.notNull(config); + this.bundle = new UnitXCResourceBundle(); + this.initBundle(); + } + + private void initBundle() { + config.getLanguages().add(Locale.forLanguageTag("")); + for (Locale l:config.getLanguages()) { + String language = l.toLanguageTag(); + ResourceBundle b = ResourceBundle.getBundle("net.forwardfire.unitxc.UnitXCBundle", l); + System.out.println("loading bundle language: "+language+" baseBundle: "+b.getBaseBundleName()+" size: "+b.keySet().size()); + b.keySet().forEach(k -> bundle.addData(language, k, b.getString(k))); + } } protected UnitXCConfig getConfig() { return config; } - public UnitXCGroupBaseBuilder createUnitGroupBase() { - return new UnitXCGroupBaseBuilder(this, new UnitXCGroupBase(), (p,v) -> p.getConfig().addUnitGroup(v)); + public UnitXCGroupBaseBuilder createUnitGroupBase(String groupId) { + return new UnitXCGroupBaseBuilder(this, new UnitXCGroupBase(bundle,groupId), (p,v) -> p.getConfig().addUnitGroup(v)); } - public UnitXCGroupCompoundPairBuilder createUnitGroupCompoundPair(String parentGroupId, String parentPerGroupId) { - return new UnitXCGroupCompoundPairBuilder(this, new UnitXCGroupCompoundPair(findGroup(parentGroupId),findGroup(parentPerGroupId)), (p,v) -> p.getConfig().addUnitGroup(v)); + public UnitXCGroupCompoundPairBuilder createUnitGroupCompoundPair(String groupId, String parentGroupId, String parentPerGroupId) { + return new UnitXCGroupCompoundPairBuilder(this, new UnitXCGroupCompoundPair(bundle,groupId,findGroup(parentGroupId),findGroup(parentPerGroupId)), (p,v) -> p.getConfig().addUnitGroup(v)); } - public UnitXCGroupCompoundExponentBuilder createUnitGroupCompoundExponent(String parentGroupId, int exponent) { - return new UnitXCGroupCompoundExponentBuilder(this, new UnitXCGroupCompoundExponent(findGroup(parentGroupId),exponent), (p,v) -> p.getConfig().addUnitGroup(v)); + public UnitXCGroupCompoundExponentBuilder createUnitGroupCompoundExponent(String groupId, String parentGroupId, int exponent) { + return new UnitXCGroupCompoundExponentBuilder(this, new UnitXCGroupCompoundExponent(bundle,groupId,findGroup(parentGroupId),exponent), (p,v) -> p.getConfig().addUnitGroup(v)); } public UnitXCGroupExtendBuilder extendUnitGroup(String groupId) { diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCGroupCompoundPairBuilder.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCGroupCompoundPairBuilder.java index 361b101..1195022 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCGroupCompoundPairBuilder.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCGroupCompoundPairBuilder.java @@ -88,5 +88,25 @@ public class UnitXCGroupCompoundPairBuilder extends AbstractUnitXCGroupBuilder s + createGroupJump(perGroup.getId()) + .addJumpParameter(value.getId()+"_"+group.getId(),group.getId()) + .createToGroupConverterSteps() + .multiply(new UnitXConverterStepValueNamedParameter(value.getId()+"_"+group.getId())) + .build() + .build(); + + // s -> m/s + getParent().extendUnitGroup(perGroup.getId()) + .createGroupJump(value.getId()) + .addJumpParameter(value.getId()+"_"+group.getId(),group.getId()) + .createToGroupConverterSteps() + .divide(new UnitXConverterStepValueNamedParameter(value.getId()+"_"+group.getId())) + .build() + .build(); + } } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCTypeSIPrefixBuilder.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCTypeSIPrefixBuilder.java index df5b528..f2ab47c 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCTypeSIPrefixBuilder.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/config/builder/UnitXCTypeSIPrefixBuilder.java @@ -64,7 +64,7 @@ public class UnitXCTypeSIPrefixBuilder

extends AbstractUnitXCTypeBuilder quantities; private final List derivedFrom; private final List unitTypes; private final List groupJumps; - public AbstractUnitXCGroup() { + public AbstractUnitXCGroup(UnitXCResourceBundle bundle, String id) { + quantities = new ArrayList<>(); derivedFrom = new ArrayList<>(); unitTypes = new ArrayList<>(); groupJumps = new ArrayList<>(); + this.name = new DefaultUnitXCResourceValue(bundle,"group."+id+".name"); + this.description = new DefaultUnitXCResourceValue(bundle,"group."+id+".description"); + this.id = id; } public AbstractUnitXCGroup validate() { Validate.notBlank(id,"The id is blank"); - Validate.notBlank(name,"The name is blank"); - Validate.notBlank(description,"The description is blank"); Validate.notBlank(baseTypeId,"The baseTypeId is blank"); return this; } @@ -114,41 +117,21 @@ abstract public class AbstractUnitXCGroup implements UnitXCGroup { public String getId() { return id; } - /** - * @param id the id to set - */ - public void setId(String id) { - this.id = id; - } - + /** * @return the name */ - public String getName() { + public UnitXCResourceValue getName() { return name; } - /** - * @param name the name to set - */ - public void setName(String name) { - this.name = name; - } - /** * @return the description */ - public String getDescription() { + public UnitXCResourceValue getDescription() { return description; } - /** - * @param description the description to set - */ - public void setDescription(String description) { - this.description = description; - } - /** * @return the baseTypeId */ @@ -163,6 +146,17 @@ abstract public class AbstractUnitXCGroup implements UnitXCGroup { this.baseTypeId = baseTypeId; } + /** + * @return the quantities of the group. + */ + public List getQuantities() { + return quantities; + } + + public void addQuantity(UnitXCGroupQuantity quantity) { + this.quantities.add(quantity); + } + /** * @return the derivedFrom */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCGroupQuantity.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCGroupQuantity.java new file mode 100644 index 0000000..24fb015 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCGroupQuantity.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.model; + +/** + * The unit group quantity. + * + * @author Willem Cazander + * @version 1.0 Oct 31, 2016 + */ +public class DefaultUnitXCGroupQuantity implements UnitXCGroupQuantity { + + private final String id; + private final UnitXCResourceValue name; + private final UnitXCResourceValue wikiLink; + + public DefaultUnitXCGroupQuantity(UnitXCResourceBundle bundle, String parentKey, String id) { + this.name = new DefaultUnitXCResourceValue(bundle,parentKey+"."+id+".name"); + this.wikiLink = new DefaultUnitXCResourceValue(bundle,parentKey+"."+id+".wikiLink"); + this.id = id; + } + + @Override + public String getId() { + return id; + } + + @Override + public UnitXCResourceValue getName() { + return name; + } + + @Override + public UnitXCResourceValue getWikiLink() { + return wikiLink; + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCResourceValue.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCResourceValue.java new file mode 100644 index 0000000..5f93b10 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCResourceValue.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.model; + +import java.util.List; + +/** + * The resource value wrapper holder + * + * @author Willem Cazander + * @version 1.0 Oct 31, 2016 + */ +public class DefaultUnitXCResourceValue implements UnitXCResourceValue { + + private final UnitXCResourceBundle bundle; + private final String bundleKey; + + public DefaultUnitXCResourceValue(UnitXCResourceBundle bundle, String bundleKey) { + super(); + this.bundle = bundle; + this.bundleKey = bundleKey; + } + + @Override + public String getBundleKey() { + return bundleKey; + } + + @Override + public List getLanguages() { + return bundle.getValueLanguages(getBundleKey()); + } + + @Override + public String getValue(String language) { + return bundle.getValue(language, getBundleKey()); + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCType.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCType.java index 00007b8..75119aa 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCType.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/DefaultUnitXCType.java @@ -44,14 +44,13 @@ public class DefaultUnitXCType implements UnitXCType { private String namePlural; private String aliasOfType; private UnitXCGroup unitGroup; + private String weblink; private final List toBaseConverterSteps; private final List fromBaseConverterSteps; private final List typeFlags; - private final List websiteLinks; public DefaultUnitXCType() { typeFlags = new ArrayList<>(); - websiteLinks = new ArrayList<>(); toBaseConverterSteps = new ArrayList<>(); fromBaseConverterSteps = new ArrayList<>(); } @@ -187,19 +186,18 @@ public class DefaultUnitXCType implements UnitXCType { } /** - * @return the websiteLinks + * @return the weblink */ @Override - public List getWebsiteLinks() { - return websiteLinks; + public String getWebLink() { + return weblink; } /** - * @param websiteLinks the websiteLinks to set + * @param webLink the webLink to set */ - public void setWebsiteLinks(List websiteLinks) { - this.websiteLinks.clear(); - this.websiteLinks.addAll(websiteLinks); + public void setWebLink(String weblink) { + this.weblink = weblink; } @Override diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCConfig.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCConfig.java index 49d33b4..7950f6d 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCConfig.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCConfig.java @@ -25,6 +25,7 @@ package net.forwardfire.unitxc.model; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.apache.commons.lang3.Validate; @@ -38,9 +39,11 @@ public class UnitXCConfig { private UnitXCRounding rounding; private final List unitGroups; + private final List languages; public UnitXCConfig() { unitGroups = new ArrayList<>(); + languages = new ArrayList<>(); } /** @@ -64,17 +67,17 @@ public class UnitXCConfig { return unitGroups; } - /** - * @param unitGroups the groups to set. - */ - public void setUnitGroups(List groups) { - this.unitGroups.clear(); - groups.forEach(group -> addUnitGroup(group)); - } - public void addUnitGroup(AbstractUnitXCGroup group) { Validate.notNull(group); group.validate(); unitGroups.add(group); } + + public List getLanguages() { + return languages; + } + + public void addLanguage(Locale language) { + languages.add(Validate.notNull(language)); + } } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroup.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroup.java index 1305b16..57334c1 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroup.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroup.java @@ -42,18 +42,23 @@ public interface UnitXCGroup { /** * @return the name */ - String getName(); + UnitXCResourceValue getName(); /** * @return the description */ - String getDescription(); + UnitXCResourceValue getDescription(); /** * @return the baseTypeId */ String getBaseTypeId(); + /** + * @return the quantities of the group. + */ + List getQuantities(); + /** * @return the derivedFrom */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupBase.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupBase.java index b5b7b72..c8f79ff 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupBase.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupBase.java @@ -34,10 +34,10 @@ import java.util.Iterator; */ public class UnitXCGroupBase extends AbstractUnitXCGroup { - public UnitXCGroupBase() { - + public UnitXCGroupBase(UnitXCResourceBundle bundle, String id) { + super(bundle, id); } - + @Override public long localUnitTypeSize() { return 0L; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupCompoundExponent.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupCompoundExponent.java index 1bcbc5e..bb83cb7 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupCompoundExponent.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCGroupCompoundExponent.java @@ -43,7 +43,8 @@ public class UnitXCGroupCompoundExponent extends AbstractUnitXCGroup { private String unitIdPostfix; private String unitNamePrefix; - public UnitXCGroupCompoundExponent(UnitXCGroup parentGroup,int exponent) { + public UnitXCGroupCompoundExponent(UnitXCResourceBundle bundle, String id,UnitXCGroup parentGroup,int exponent) { + super(bundle, id); this.parentGroup = Validate.notNull(parentGroup); this.exponent = exponent; Validate.isTrue(exponent > 1); @@ -89,8 +90,8 @@ public class UnitXCGroupCompoundExponent extends AbstractUnitXCGroup { .addTypeFlags(unitType.getTypeFlags()); for (int i=0;i getDerivedFrom(); + + /** + * @return the totalUnitTypes + */ + long getUnitTypeSize(); + + Iterator getUnitTypeIds(); + + UnitXCType getUnitType(String id); +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCModule.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCModule.java new file mode 100644 index 0000000..fac2719 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCModule.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.model; + +import java.util.List; + +/** + * The resource value wrapper + * + * @author Willem Cazander + * @version 1.0 Oct 31, 2016 + */ +public @interface UnitXCModule { + + String groupId(); + + String[] dependencies(); + +// public @interface UnitXCModuleDependency { +// String groupId(); +// } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceBundle.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceBundle.java new file mode 100644 index 0000000..1c06aed --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceBundle.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.model; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.Validate; + +/** + * The resource value wrapper + * + * @author Willem Cazander + * @version 1.0 Oct 31, 2016 + */ +public class UnitXCResourceBundle { + + private Map> data = new HashMap<>(); + + // FIXME: not public or interface or x + public void addData(String language,String key,String value) { + Map ld = data.get(language); + if (ld == null) { + ld = new HashMap<>(); + data.put(language, ld); + } + ld.put(key, value); + } + + public List getLanguages() { + return new ArrayList<>(data.keySet()); + } + + public List getValueLanguages(String key) { + List result = new ArrayList<>(); + data.forEach((k,v) -> { + if (v.containsKey(key)) { + result.add(k); + } + }); + return result; + } + + public String getValue(String lang,String key) { + if (lang.isEmpty()) { + lang = "und"; // undefined + } + return Validate.notNull(Validate.notNull(data.get(lang),"Could not find langauge: "+lang).get(key),"Could not find key: "+key); + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceValue.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceValue.java new file mode 100644 index 0000000..17b999d --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCResourceValue.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.model; + +import java.util.List; + +/** + * The resource value wrapper + * + * @author Willem Cazander + * @version 1.0 Oct 31, 2016 + */ +public interface UnitXCResourceValue { + + /** + * @return the bundle key. + */ + String getBundleKey(); + + List getLanguages(); + + String getValue(String language); +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCType.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCType.java index f00eb7c..fabcbb8 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCType.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/UnitXCType.java @@ -78,7 +78,7 @@ public interface UnitXCType { List getTypeFlags(); /** - * @return the websiteLinks + * @return the weblink */ - List getWebsiteLinks(); + String getWebLink(); } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCode.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCode.java new file mode 100644 index 0000000..faafacc --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCode.java @@ -0,0 +1,80 @@ +package net.forwardfire.unitxc.model.step; + +public class RuleStepCode { + + private String id; + private String type; + private String style; + private String code; + private String matcher; + + /** + * @return the id + */ + public String getId() { + return id; + } + + /** + * @param id the id to set + */ + public void setId(String id) { + this.id = id; + } + + /** + * @return the type + */ + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + + /** + * @return the style + */ + public String getStyle() { + return style; + } + + /** + * @param style the style to set + */ + public void setStyle(String style) { + this.style = style; + } + + /** + * @return the code + */ + public String getCode() { + return code; + } + + /** + * @param code the code to set + */ + public void setCode(String code) { + this.code = code; + } + + /** + * @return the matcher + */ + public String getMatcher() { + return matcher; + } + + /** + * @param matcher the matcher to set + */ + public void setMatcher(String matcher) { + this.matcher = matcher; + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodePrinter.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodePrinter.java new file mode 100644 index 0000000..02451c5 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodePrinter.java @@ -0,0 +1,105 @@ +package net.forwardfire.unitxc.model.step; + +import java.util.Arrays; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; + +public class RuleStepCodePrinter { + + private final StringBuilder result = new StringBuilder(); + private final RuleStepCodeStyle codeStyle; + private int indentLevel = 0; + + public RuleStepCodePrinter(RuleStepCodeStyle codeStyle) { + this.codeStyle = Validate.notNull(codeStyle); + } + + public static String print(RuleStepCodeStyle codeStyle, List steps, String id) { + RuleStepCodePrinter printer = new RuleStepCodePrinter(codeStyle); + printer.line(); // make copy/paste easy + if (printer.isEnglish()) { + printer.line("Description of: ",id); + printer.line(); + } else { + printer.line("code['",id,"'] = function(ctx) {"); + printer.pushIndent(); + } + printer.printSteps(steps); + if (printer.isJavascript()) { + printer.popIndent(); + printer.line("}"); + } + return printer.getResult(); + } + + public void printSteps(List steps) { + steps.forEach(s -> s.toRuleCode(this)); + } + + public String getResult() { + return result.toString(); + } + + public RuleStepCodeStyle getCodeStyle() { + return codeStyle; + } + + public boolean isEnglish() { + return RuleStepCodeStyle.ENGLISH.equals(getCodeStyle()); + } + + public boolean isJavascript() { + return RuleStepCodeStyle.JAVASCRIPT.equals(getCodeStyle()); + } +/* + public boolean isXslt() { + return RuleStepCodeType.XSLT.equals(getCodeStyle()); + } +*/ + public void pushIndent() { + indentLevel++; + } + + public void popIndent() { + if (indentLevel > 0) { + indentLevel--; + } + } + + private void appendIndent() { + for (int i = 0;i < indentLevel*4; i++) { + appendSpace(); + } + } + + public void line(String...text) { + lineStart(text); + lineEnd(); + } + + public void lineStart(String...text) { + appendIndent(); + append(text); + } + + public void lineEnd(String...text) { + append(text); + result.append(StringUtils.LF); + } + + public void append(String...texts) { + Arrays.asList(texts).forEach(text -> result.append(text)); + } + + public void appendJS(String...texts) { + if (isJavascript()) { + append(texts); + } + } + + public void appendSpace() { + result.append(StringUtils.SPACE); + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodeStyle.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodeStyle.java new file mode 100644 index 0000000..4f73559 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/RuleStepCodeStyle.java @@ -0,0 +1,7 @@ +package net.forwardfire.unitxc.model.step; + +public enum RuleStepCodeStyle { + ENGLISH, + JAVASCRIPT + ; +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepAutoRounding.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepAutoRounding.java index 759610f..e3b6054 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepAutoRounding.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepAutoRounding.java @@ -17,6 +17,23 @@ public class UnitXCConverterStepAutoRounding extends AbstractUnitXConverterStep setResult(result); } + @Override + public void toRuleCode(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.lineStart("Rounding "); + getOperand().toRuleCodeRead(printer); + printer.append(" to "); + getResult().toRuleCodeRead(printer); + printer.lineEnd("."); + return; + } + printer.lineStart(); + getResult().toRuleCodeWrite(printer); + printer.append(" = "); + getOperand().toRuleCodeRead(printer); + printer.lineEnd(); + } + private double round(double value,double prevValue) { String valueStr = Double.toString(value); String valueOrgStr = Double.toString(prevValue); diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepCondition.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepCondition.java index 2cf10d2..bd4eec9 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepCondition.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepCondition.java @@ -52,6 +52,74 @@ public class UnitXCConverterStepCondition extends AbstractUnitXConverterStep { } } + @Override + public void toRuleCode(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.lineStart("If "); + toPseudoCodeExpression(printer); + printer.lineEnd(" then;"); + printer.pushIndent(); + printer.printSteps(getConditionalSteps()); + printer.popIndent(); +// if (!stepsFalse.isEmpty()) { +// printer.line("Else do;"); +// printer.pushIndent(); +// printer.printSteps(getStepsFalse()); +// printer.popIndent(); +// } + printer.line(); // for readablity + return; + } + printer.lineStart("if"); + toPseudoCodeExpression(printer); + printer.lineEnd("{"); + printer.pushIndent(); + printer.printSteps(getConditionalSteps()); + printer.popIndent(); +// if (stepsFalse.isEmpty()) { +// printer.line("}"); +// } else { +// printer.line("} else {"); +// printer.pushIndent(); +// printer.printSteps(getStepsFalse()); +// printer.popIndent(); +// printer.line("}"); +// } + } + + public void toPseudoCodeExpression(RuleStepCodePrinter printer/*, List expressions*/) { + printer.appendJS(" ( "); + getEquality().toRuleCode(printer, operandA, operandB); + printer.appendJS(" ) "); + +// Iterator i = expressions.iterator(); +// if (!i.hasNext()) { +// return; +// } +// printer.appendJS(" ( "); +// while (i.hasNext()) { +// RuleStepConditionExpression ex = i.next(); +// ex.getEquality().toRuleCode(printer, ex.getOperandA(), ex.getOperandB()); +// // TODO: this not yet looks correctly,,.somewhere here? +// if (i.hasNext()) { +// if (printer.isEnglish()) { +// printer.append(" and "); +// } else { +// printer.append(" && "); +// } +// } +// if (!ex.getExpressions().isEmpty()) { +// if (printer.isEnglish()) { +// printer.append(" or "); +// } else { +// printer.append(" || "); +// } +// toPseudoCodeExpression(printer,ex.getExpressions()); +// } +// } +// printer.appendJS(" ) "); + } + /** * @return the equality */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepConditionEquality.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepConditionEquality.java index c861516..0ad0b79 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepConditionEquality.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepConditionEquality.java @@ -2,21 +2,29 @@ package net.forwardfire.unitxc.model.step; import java.util.function.BiFunction; +import org.apache.commons.lang3.StringUtils; + +import net.forwardfire.unitxc.model.step.value.UnitXConverterStepValueRead; + public enum UnitXCConverterStepConditionEquality { - EQUALS ((l,r) -> l.compareTo(r) == 0, (l,r) -> l.compareTo(r) == 0, (l,r) -> l.compareTo(r) == 0), - NOT_EQUALS ((l,r) -> l.compareTo(r) != 0, (l,r) -> l.compareTo(r) != 0, (l,r) -> l.compareTo(r) != 0), - GREATER_THEN ((l,r) -> l.compareTo(r) > 0, (l,r) -> l.compareTo(r) > 0, (l,r) -> l.compareTo(r) > 0), - LESSER_THEN ((l,r) -> l.compareTo(r) < 0, (l,r) -> l.compareTo(r) < 0, (l,r) -> l.compareTo(r) < 0), - GREATER_OR_EQUALS ((l,r) -> l.compareTo(r) >= 0, (l,r) -> l.compareTo(r) >= 0, (l,r) -> l.compareTo(r) >= 0), - LESSER_OR_EQUALS ((l,r) -> l.compareTo(r) <= 0, (l,r) -> l.compareTo(r) <= 0, (l,r) -> l.compareTo(r) <= 0), + EQUALS ("===",(l,r) -> l.compareTo(r) == 0, (l,r) -> l.compareTo(r) == 0, (l,r) -> l.compareTo(r) == 0), + NOT_EQUALS ("!==",(l,r) -> l.compareTo(r) != 0, (l,r) -> l.compareTo(r) != 0, (l,r) -> l.compareTo(r) != 0), + GREATER_THEN (">", (l,r) -> l.compareTo(r) > 0, (l,r) -> l.compareTo(r) > 0, (l,r) -> l.compareTo(r) > 0), + LESSER_THEN ("<", (l,r) -> l.compareTo(r) < 0, (l,r) -> l.compareTo(r) < 0, (l,r) -> l.compareTo(r) < 0), + GREATER_OR_EQUALS (">=",(l,r) -> l.compareTo(r) >= 0, (l,r) -> l.compareTo(r) >= 0, (l,r) -> l.compareTo(r) >= 0), + LESSER_OR_EQUALS ("<=",(l,r) -> l.compareTo(r) <= 0, (l,r) -> l.compareTo(r) <= 0, (l,r) -> l.compareTo(r) <= 0), ; - private final BiFunction opertionDouble; + private final String jsCode; + private final String enCode; + private final BiFunction opertionDouble; // TODO: convert to IntPredicate private final BiFunction opertionInteger; private final BiFunction opertionString; - private UnitXCConverterStepConditionEquality(BiFunction opertionDouble,BiFunction opertionInteger,BiFunction opertionString) { + private UnitXCConverterStepConditionEquality(String jsCode, BiFunction opertionDouble,BiFunction opertionInteger,BiFunction opertionString) { + this.jsCode = jsCode; + this.enCode = name().toLowerCase().replaceAll("_", StringUtils.SPACE); this.opertionDouble = opertionDouble; this.opertionInteger = opertionInteger; this.opertionString = opertionString; @@ -34,4 +42,22 @@ public enum UnitXCConverterStepConditionEquality { } throw new IllegalArgumentException("Unknown typeClass: "+left.getClass()); } + + public void toRuleCode(RuleStepCodePrinter printer, UnitXConverterStepValueRead operandA, UnitXConverterStepValueRead operandB) { + if (printer.isEnglish()) { + operandA.toRuleCodeRead(printer); + printer.append(" is ", enCode); + if (jsCode.contains("=")) { + printer.append(" to"); + } + printer.appendSpace(); + operandB.toRuleCodeRead(printer); + return; + } + operandA.toRuleCodeRead(printer); + printer.appendSpace(); + printer.append(jsCode); + printer.appendSpace(); + operandB.toRuleCodeRead(printer); + } } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperation.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperation.java index 13282ac..b9f817b 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperation.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperation.java @@ -54,6 +54,23 @@ public class UnitXCConverterStepOperation extends AbstractUnitXConverterStep { result.valueWrite(ctx, operator.execute(operandA.valueRead(ctx),operandB.valueRead(ctx))); } + @Override + public void toRuleCode(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.lineStart("Update "); + getResult().toRuleCodeWrite(printer); + printer.append(" with value from "); + getOperator().toRuleCode(printer, getOperandA(), getOperandB()); + printer.lineEnd("."); + return; + } + printer.lineStart(); + getResult().toRuleCodeWrite(printer); + printer.append(" = "); + getOperator().toRuleCode(printer, getOperandA(), getOperandB()); + printer.lineEnd(); + } + /** * @return the operator */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperationOperator.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperationOperator.java index b3845de..5f16ed8 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperationOperator.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepOperationOperator.java @@ -6,22 +6,28 @@ import java.util.function.BinaryOperator; import org.apache.commons.lang3.StringUtils; +import net.forwardfire.unitxc.model.step.value.UnitXConverterStepValueRead; + public enum UnitXCConverterStepOperationOperator { - ADD ((l,r) -> l+r, (l,r) -> l+r, (l,r) -> l+r), - SUBTRACT ((l,r) -> l-r, (l,r) -> l-r, (l,r) -> l.replaceAll(l, StringUtils.EMPTY)), - MULTIPLY ((l,r) -> l*r, (l,r) -> l*r, null), - DIVIDE ((l,r) -> l/r, (l,r) -> l/r, null), - POWER ((l,r) -> p(l,r), (l,r) -> p(l,r), null), - AND (null, (l,r) -> l & r, null), - OR (null, (l,r) -> l | r, null), + ADD ("+",(l,r) -> l+r, (l,r) -> l+r, (l,r) -> l+r), + SUBTRACT ("-",(l,r) -> l-r, (l,r) -> l-r, (l,r) -> l.replaceAll(l, StringUtils.EMPTY)), + MULTIPLY ("*",(l,r) -> l*r, (l,r) -> l*r, null), + DIVIDE ("/",(l,r) -> l/r, (l,r) -> l/r, null), + POWER ("pow",(l,r) -> p(l,r), (l,r) -> p(l,r), null), + AND ("&", null, (l,r) -> l & r, null), + OR ("|",null, (l,r) -> l | r, null), ; + private final String jsCode; + private final String enCode; private final BinaryOperator opertionDouble; private final BinaryOperator opertionInteger; private final BinaryOperator opertionString; - private UnitXCConverterStepOperationOperator(BinaryOperator opertionDouble,BinaryOperator opertionInteger,BinaryOperator opertionString) { + private UnitXCConverterStepOperationOperator(String jsCode, BinaryOperator opertionDouble,BinaryOperator opertionInteger,BinaryOperator opertionString) { + this.jsCode = jsCode; + this.enCode = name().toLowerCase(); this.opertionDouble = opertionDouble; this.opertionInteger = opertionInteger; this.opertionString = opertionString; @@ -54,4 +60,27 @@ public enum UnitXCConverterStepOperationOperator { } throw new IllegalArgumentException("Unknown typeClass: "+left.getClass()); } + + public void toRuleCode(RuleStepCodePrinter printer, UnitXConverterStepValueRead operandA, UnitXConverterStepValueRead operandB) { + if (printer.isEnglish()) { + printer.append(enCode," "); + operandA.toRuleCodeRead(printer); + printer.append(" and "); + operandB.toRuleCodeRead(printer); + return; + } + if (POWER.equals(this)) { + printer.append(jsCode,"("); + operandA.toRuleCodeRead(printer); + printer.append(", "); + operandB.toRuleCodeRead(printer); + printer.append(")"); + return; + } + operandA.toRuleCodeRead(printer); + printer.appendSpace(); + printer.append(jsCode); + printer.appendSpace(); + operandB.toRuleCodeRead(printer); + } } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepPowerOfTen.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepPowerOfTen.java index f7449e0..4ffec4b 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepPowerOfTen.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXCConverterStepPowerOfTen.java @@ -55,6 +55,32 @@ public class UnitXCConverterStepPowerOfTen extends AbstractUnitXConverterStep { result.valueWrite(ctx, convert((Double)operand.valueRead(ctx))); } + @Override + public void toRuleCode(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.lineStart("Update "); + getResult().toRuleCodeWrite(printer); + printer.append(" with value from "); + printer.append(" * "); + if (exponentReverse) { + printer.append(" -1? "); // TODO: fix reverse + } + printer.append(" 10^", Integer.toString(exponent)); + printer.lineEnd("."); + return; + } + printer.lineStart(); + getResult().toRuleCodeWrite(printer); + printer.append(" = "); + getOperand().toRuleCodeRead(printer); + printer.append(" * "); + if (exponentReverse) { + printer.append(" -1? "); // TODO: fix reverse + } + printer.append(" 10^", Integer.toString(exponent)); + printer.lineEnd(); + } + public double convert(double value) { int exponentShift = exponent<0?0-exponent:exponent; for (int i=0;i steps = Boolean.TRUE.equals(toBaseSteps)?type.getToBaseConverterSteps():type.getFromBaseConverterSteps(); + List steps = toBaseSteps?unitType.getToBaseConverterSteps():unitType.getFromBaseConverterSteps(); ctx.runSteps(steps); } - /** - * @return the unitTypeId - */ - public String getUnitTypeId() { - return unitTypeId; + @Override + public void toRuleCode(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.lineStart("Call ", unitType.getName()); + printer.append(" with base steps ... "); + printer.lineEnd("."); + return; + } + printer.lineStart(); + printer.append(" TODO REF "); + printer.lineEnd(); } /** - * @param unitTypeId the unitTypeId to set + * @return the unitType */ - public void setUnitTypeId(String unitTypeId) { - this.unitTypeId = unitTypeId; + public UnitXCType getUnitType() { + return unitType; } /** * @return the toBaseSteps */ - public Boolean getToBaseSteps() { + public boolean toBaseSteps() { return toBaseSteps; } - - /** - * @param toBaseSteps the toBaseSteps to set - */ - public void setToBaseSteps(Boolean toBaseSteps) { - this.toBaseSteps = toBaseSteps; - } } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStep.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStep.java index 85d10a3..5c0c52b 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStep.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStep.java @@ -38,4 +38,6 @@ public interface UnitXConverterStep { List getStepReasons(); void addStepReason(String stepReason); // TODO: rm : fix builder + + void toRuleCode(RuleStepCodePrinter printer); } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStepContext.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStepContext.java index a11201d..5f70d45 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStepContext.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/UnitXConverterStepContext.java @@ -52,8 +52,6 @@ public interface UnitXConverterStepContext { void runSteps(List steps); - UnitXCManager getUnitManager(); - public static UnitXConverterStepValueReadWrite createStepValue() { return new UnitXConverterStepValueNamedVariable(Double.class,VALUE); } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedParameter.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedParameter.java index 887392f..136096d 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedParameter.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedParameter.java @@ -23,6 +23,7 @@ package net.forwardfire.unitxc.model.step.value; +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -47,6 +48,20 @@ public class UnitXConverterStepValueNamedParameter implements UnitXConverterStep return ctx.getNamedParameter(parameterName).valueRead(ctx); } + @Override + public void toRuleCodeRead(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.append(parameterName); + return; + } + printer.append("ctx.params['",parameterName,"']"); + } + +// @Override +// public void toRuleCodeWrite(RuleStepCodePrinter printer) { +// toRuleCodeRead(printer); +// } + /** * @return the parameterName */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedVariable.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedVariable.java index 0d37d54..0501029 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedVariable.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueNamedVariable.java @@ -23,6 +23,7 @@ package net.forwardfire.unitxc.model.step.value; +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -54,6 +55,20 @@ public class UnitXConverterStepValueNamedVariable implements UnitXConverterStepV ctx.getNamedVariable(variableName).valueWrite(ctx,value); } + @Override + public void toRuleCodeRead(RuleStepCodePrinter printer) { + if (printer.isEnglish()) { + printer.append(variableName); + } else { + printer.append("ctx.vars['",variableName,"']"); + } + } + + @Override + public void toRuleCodeWrite(RuleStepCodePrinter printer) { + toRuleCodeRead(printer); + } + /** * @return the variableName */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueRead.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueRead.java index 5e9964a..8398ace 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueRead.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueRead.java @@ -23,6 +23,7 @@ package net.forwardfire.unitxc.model.step.value; +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -34,4 +35,6 @@ import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; public interface UnitXConverterStepValueRead { Object valueRead(UnitXConverterStepContext ctx); + + void toRuleCodeRead(RuleStepCodePrinter printer); } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReadWrite.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReadWrite.java index 84edff3..97f453d 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReadWrite.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReadWrite.java @@ -23,6 +23,7 @@ package net.forwardfire.unitxc.model.step.value; +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -34,4 +35,6 @@ import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; public interface UnitXConverterStepValueReadWrite extends UnitXConverterStepValueRead { void valueWrite(UnitXConverterStepContext ctx,Object value); + + void toRuleCodeWrite(RuleStepCodePrinter printer); } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDouble.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDouble.java index 69908eb..e817103 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDouble.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDouble.java @@ -23,6 +23,9 @@ package net.forwardfire.unitxc.model.step.value; +import org.apache.commons.lang3.StringUtils; + +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -52,6 +55,16 @@ public class UnitXConverterStepValueReferenceDouble implements UnitXConverterSte this.value = Double.class.cast(value); } + @Override + public void toRuleCodeRead(RuleStepCodePrinter printer) { + printer.append(""+value); + } + + @Override + public void toRuleCodeWrite(RuleStepCodePrinter printer) { + printer.append(StringUtils.EMPTY); + } + /** * @return the value */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDoubleFraction.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDoubleFraction.java index 9c4f09d..9509436 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDoubleFraction.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceDoubleFraction.java @@ -23,8 +23,7 @@ package net.forwardfire.unitxc.model.step.value; -import java.math.BigDecimal; - +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -52,6 +51,11 @@ public class UnitXConverterStepValueReferenceDoubleFraction implements UnitXConv return (Double)(((Integer)numerator).doubleValue()/((Integer)denominator).doubleValue()); // FIXME } + @Override + public void toRuleCodeRead(RuleStepCodePrinter printer) { + printer.append(""+numerator+"/"+denominator); + } + /** * @return the numerator */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceInteger.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceInteger.java index e94eb3a..bef75c6 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceInteger.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceInteger.java @@ -23,6 +23,9 @@ package net.forwardfire.unitxc.model.step.value; +import org.apache.commons.lang3.StringUtils; + +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -52,6 +55,16 @@ public class UnitXConverterStepValueReferenceInteger implements UnitXConverterSt this.value = Integer.class.cast(value); } + @Override + public void toRuleCodeRead(RuleStepCodePrinter printer) { + printer.append(""+value); + } + + @Override + public void toRuleCodeWrite(RuleStepCodePrinter printer) { + printer.append(StringUtils.EMPTY); + } + /** * @return the value */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceString.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceString.java index c9a5879..e50bb0b 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceString.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/model/step/value/UnitXConverterStepValueReferenceString.java @@ -23,6 +23,9 @@ package net.forwardfire.unitxc.model.step.value; +import org.apache.commons.lang3.StringUtils; + +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; import net.forwardfire.unitxc.model.step.UnitXConverterStepContext; /** @@ -52,6 +55,21 @@ public class UnitXConverterStepValueReferenceString implements UnitXConverterSte this.value = String.class.cast(value); } + @Override + public void toRuleCodeRead(RuleStepCodePrinter printer) { + if (value instanceof String && printer.isJavascript()) { + String valueEscaped = value.toString().replaceAll("'", "\\\\'"); + printer.append("'",valueEscaped,"'"); + } else { + printer.append(""+value); + } + } + + @Override + public void toRuleCodeWrite(RuleStepCodePrinter printer) { + printer.append(StringUtils.EMPTY); + } + /** * @return the value */ diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleElectricCurrent.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleAmpere.java similarity index 77% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleElectricCurrent.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleAmpere.java index b31d168..c38efb2 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleElectricCurrent.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleAmpere.java @@ -35,30 +35,27 @@ import net.forwardfire.unitxc.config.builder.UnitXCTypeSIPrefix; * @author Willem Cazander * @version 1.0 Oct 18, 2015 */ -public class UnitXCModuleElectricCurrent implements UnitXCConfigModule { +public class UnitXCModuleAmpere implements UnitXCConfigModule { - public static final String GROUP_ID = "current"; - public static final String GROUP_NAME = "ampere"; - public static final String GROUP_DESCRIPTION = "The ampere is a measure of the amount of electric charge passing a point in an electric circuit per unit time, with 6.241×1018 electrons (or one coulomb) per second constituting one ampere."; + public static final String GROUP_ID = "ampere"; public static final String GROUP_BASE_TYPE_ID = "A"; + private static final String[] GROUP_QUANTITIES = {"electric_current"}; public static final String TYPE_AMPERE_ID = GROUP_BASE_TYPE_ID; - public static final String TYPE_AMPERE_NAME = GROUP_NAME; + public static final String TYPE_AMPERE_NAME = "ampere"; public static final String TYPE_AMPERE_FLAG = buildFlag(GROUP_ID,TYPE_AMPERE_NAME); private static final String TYPE_AMPERE_WIKI = "Ampere"; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( TYPE_AMPERE_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( TYPE_AMPERE_ID) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .createSIUnitTypes() .setId( TYPE_AMPERE_ID) .setName( TYPE_AMPERE_NAME) .addTypeFlag( TYPE_AMPERE_FLAG) - .addWebsiteWiki( TYPE_AMPERE_WIKI) + .setWebLinkWiki( TYPE_AMPERE_WIKI) .addCommonSIPrefix(UnitXCTypeSIPrefix.MEGA) .addCommonSIPrefix(UnitXCTypeSIPrefix.KILO) .addCommonSIPrefix(UnitXCTypeSIPrefix.MILLI) diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleLuminousIntensity.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleCandela.java similarity index 74% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleLuminousIntensity.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleCandela.java index 8753e5d..0fac508 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleLuminousIntensity.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleCandela.java @@ -34,30 +34,27 @@ import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; * @author Willem Cazander * @version 1.0 Oct 23, 2015 */ -public class UnitXCModuleLuminousIntensity implements UnitXCConfigModule { +public class UnitXCModuleCandela implements UnitXCConfigModule { - public static final String GROUP_ID = "light"; - public static final String GROUP_NAME = "candela"; - public static final String GROUP_DESCRIPTION = "The candela is the luminous intensity, in a given direction, of a source that emits monochromatic radiation of frequency 540×1012 hertz and that has a radiant intensity in that direction of 1/683 watt per steradian."; + public static final String GROUP_ID = "candela"; public static final String GROUP_BASE_TYPE_ID = "cd"; + private static final String[] GROUP_QUANTITIES = {"luminous_intensity"}; public static final String TYPE_CANDELA_ID = GROUP_BASE_TYPE_ID; - public static final String TYPE_CANDELA_NAME = GROUP_NAME; + public static final String TYPE_CANDELA_NAME = "candela"; public static final String TYPE_CANDELA_FLAG = buildFlag(GROUP_ID,TYPE_CANDELA_NAME); private static final String TYPE_CANDELA_WIKI = "Candela"; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( TYPE_CANDELA_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( TYPE_CANDELA_ID) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .createSIUnitTypes() .setId( TYPE_CANDELA_ID) .setName( TYPE_CANDELA_NAME) .addTypeFlag( TYPE_CANDELA_FLAG) - .addWebsiteWiki( TYPE_CANDELA_WIKI) + .setWebLinkWiki( TYPE_CANDELA_WIKI) .build() .build() ; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleTemperature.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleKelvin.java similarity index 87% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleTemperature.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleKelvin.java index 3b4ccab..c0521ab 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleTemperature.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleKelvin.java @@ -36,15 +36,14 @@ import org.apache.commons.lang3.math.Fraction; * @author Willem Cazander * @version 1.0 Oct 17, 2015 */ -public class UnitXCModuleTemperature implements UnitXCConfigModule { +public class UnitXCModuleKelvin implements UnitXCConfigModule { - public static final String GROUP_ID = "temperature"; - public static final String GROUP_NAME = "kelvin"; - public static final String GROUP_DESCRIPTION = "The kelvin, unit of thermodynamic temperature, is the fraction 1/273.16 of the thermodynamic temperature of the triple point of water."; + 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_NAME; + 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"; @@ -77,22 +76,20 @@ public class UnitXCModuleTemperature implements UnitXCConfigModule { @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( TYPE_KELVIN_NAME) - .setDescription( GROUP_DESCRIPTION) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( TYPE_KELVIN_ID) .createSIUnitTypes() .setId( TYPE_KELVIN_ID) .setName( TYPE_KELVIN_NAME) .addTypeFlag( TYPE_KELVIN_FLAG) - .addWebsiteWiki(TYPE_KELVIN_WIKI) + .setWebLinkWiki(TYPE_KELVIN_WIKI) .build() .createSIUnitTypes() .setId( TYPE_CELSIUS_ID) .setName( TYPE_CELSIUS_NAME) .addTypeFlag( TYPE_CELSIUS_FLAG) - .addWebsiteWiki(TYPE_CELSIUS_WIKI) + .setWebLinkWiki(TYPE_CELSIUS_WIKI) .createToBaseConverterSteps().offsetUp(TYPE_CELSIUS_OFFSET).build() .createFromBaseConverterSteps().offsetDown(TYPE_CELSIUS_OFFSET).build() .build() @@ -101,7 +98,7 @@ public class UnitXCModuleTemperature implements UnitXCConfigModule { .setName( TYPE_FAHRENHEIT_NAME) .addTypeFlag( TYPE_FAHRENHEIT_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_FAHRENHEIT_WIKI) + .setWebLinkWiki( TYPE_FAHRENHEIT_WIKI) .createToBaseConverterSteps() .offsetUp( TYPE_FAHRENHEIT_OFFSET) .multiply( TYPE_FAHRENHEIT_FRACTION) @@ -115,7 +112,7 @@ public class UnitXCModuleTemperature implements UnitXCConfigModule { .setId( TYPE_RANKINE_ID) .setName( TYPE_RANKINE_NAME) .addTypeFlag ( TYPE_RANKINE_FLAG) - .addWebsiteWiki( TYPE_RANKINE_WIKI) + .setWebLinkWiki( TYPE_RANKINE_WIKI) .createToBaseConverterSteps().multiply(TYPE_FAHRENHEIT_FRACTION).build() .createFromBaseConverterSteps().multiply(TYPE_FAHRENHEIT_FRACTION.invert()).build() .build() @@ -123,7 +120,7 @@ public class UnitXCModuleTemperature implements UnitXCConfigModule { .setId( TYPE_ROMER_ID) .setName( TYPE_ROMER_NAME) .addTypeFlag( TYPE_ROMER_FLAG) - .addWebsiteWiki( TYPE_ROMER_WIKI) + .setWebLinkWiki( TYPE_ROMER_WIKI) .createToBaseConverterSteps() .offsetUp( TYPE_CELSIUS_OFFSET) .multiply( TYPE_ROMER_FRACTION) diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMass.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleKilogram.java similarity index 89% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMass.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleKilogram.java index 0c86240..4168d46 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMass.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleKilogram.java @@ -35,12 +35,11 @@ import net.forwardfire.unitxc.config.builder.UnitXCTypeSIPrefix; * @author Willem Cazander * @version 1.0 Oct 25, 2015 */ -public class UnitXCModuleMass implements UnitXCConfigModule { +public class UnitXCModuleKilogram implements UnitXCConfigModule { - public static final String GROUP_ID = "mass"; - public static final String GROUP_NAME = "kilogram"; - public static final String GROUP_DESCRIPTION = "The kilogram is the unit of mass; it is equal to the mass of the international prototype of the kilogram."; + public static final String GROUP_ID = "kilogram"; public static final String GROUP_BASE_TYPE_ID = "g"; + private static final String[] GROUP_QUANTITIES = {"mass"}; public static final String TYPE_GRAM_ID = GROUP_BASE_TYPE_ID; public static final String TYPE_GRAM_NAME = "gram"; @@ -79,16 +78,14 @@ public class UnitXCModuleMass implements UnitXCConfigModule { @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( TYPE_GRAM_ID) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .createSIUnitTypes() .setId( TYPE_GRAM_ID) .setName( TYPE_GRAM_NAME) .addTypeFlag( TYPE_GRAM_FLAG) - .addWebsiteWiki( TYPE_GRAM_WIKI) + .setWebLinkWiki( TYPE_GRAM_WIKI) .addCommonSIPrefix(UnitXCTypeSIPrefix.MEGA) .addCommonSIPrefix(UnitXCTypeSIPrefix.KILO) .addCommonSIPrefix(UnitXCTypeSIPrefix.HECTO) @@ -103,7 +100,7 @@ public class UnitXCModuleMass implements UnitXCConfigModule { .setName( TYPE_GRAIN_NAME) .addTypeFlag( TYPE_GRAIN_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_GRAIN_WIKI) + .setWebLinkWiki( TYPE_GRAIN_WIKI) .createToBaseConverterSteps().multiply(TYPE_GRAIN_FACTOR).power10Down(UnitXCTypeSIPrefix.MILLI).build() .createFromBaseConverterSteps().power10Up(UnitXCTypeSIPrefix.MILLI).divide(TYPE_GRAIN_FACTOR).build() .build() @@ -113,7 +110,7 @@ public class UnitXCModuleMass implements UnitXCConfigModule { .addTypeFlag( TYPE_DRAM_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL_EXTRA) - .addWebsiteWiki( TYPE_DRAM_WIKI) + .setWebLinkWiki( TYPE_DRAM_WIKI) .createToBaseConverterSteps().multiply(TYPE_DRAM_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_DRAM_FACTOR).build() .build() @@ -122,7 +119,7 @@ public class UnitXCModuleMass implements UnitXCConfigModule { .setName( TYPE_OUNCE_NAME) .addTypeFlag( TYPE_OUNCE_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_OUNCE_WIKI) + .setWebLinkWiki( TYPE_OUNCE_WIKI) .createToBaseConverterSteps().multiply(TYPE_OUNCE_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_OUNCE_FACTOR).build() .build() @@ -131,7 +128,7 @@ public class UnitXCModuleMass implements UnitXCConfigModule { .setName( TYPE_POUND_NAME) .addTypeFlag( TYPE_POUND_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_POUND_WIKI) + .setWebLinkWiki( TYPE_POUND_WIKI) .createToBaseConverterSteps().multiply(TYPE_POUND_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_POUND_FACTOR).build() .build() @@ -141,7 +138,7 @@ public class UnitXCModuleMass implements UnitXCConfigModule { .addTypeFlag( TYPE_STONE_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL_EXTRA) - .addWebsiteWiki( TYPE_STONE_WIKI) + .setWebLinkWiki( TYPE_STONE_WIKI) .createToBaseConverterSteps().multiply(TYPE_STONE_FACTOR).power10Up(UnitXCTypeSIPrefix.MILLI).build() .createFromBaseConverterSteps().power10Down(UnitXCTypeSIPrefix.MILLI).divide(TYPE_STONE_FACTOR).build() .build() diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleLength.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMetre.java similarity index 91% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleLength.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMetre.java index 45fe846..636b984 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleLength.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMetre.java @@ -35,15 +35,14 @@ import net.forwardfire.unitxc.config.builder.UnitXCTypeSIPrefix; * @author Willem Cazander * @version 1.0 Oct 24, 2015 */ -public class UnitXCModuleLength implements UnitXCConfigModule { +public class UnitXCModuleMetre implements UnitXCConfigModule { - public static final String GROUP_ID = "length"; - public static final String GROUP_NAME = "metre"; - public static final String GROUP_DESCRIPTION = "The metre is the length of the path travelled by light in vacuum during a time interval of 1/299792458 of a second."; + public static final String GROUP_ID = "metre"; public static final String GROUP_BASE_TYPE_ID = "m"; + private static final String[] GROUP_QUANTITIES = {"length"}; public static final String TYPE_METRE_ID = GROUP_BASE_TYPE_ID; - public static final String TYPE_METRE_NAME = GROUP_NAME; + public static final String TYPE_METRE_NAME = "metre"; public static final String TYPE_METRE_FLAG = buildFlag(GROUP_ID,TYPE_METRE_NAME); public static final String TYPE_METRE_ALIAS_METER = "meter"; public static final String TYPE_METRE_ALIAS_METER_FLAG = buildFlag(GROUP_ID,TYPE_METRE_ALIAS_METER); @@ -125,16 +124,14 @@ public class UnitXCModuleLength implements UnitXCConfigModule { @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( TYPE_METRE_NAME) - .setDescription ( GROUP_DESCRIPTION) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( TYPE_METRE_ID) .createSIUnitTypes() .setId( TYPE_METRE_ID) .setName( TYPE_METRE_NAME) .addTypeFlag( TYPE_METRE_FLAG) - .addWebsiteWiki( TYPE_METRE_WIKI) + .setWebLinkWiki( TYPE_METRE_WIKI) .addCommonSIPrefixes(TYPE_METRE_COMMON_SI) .build() .createSIUnitTypes() @@ -150,7 +147,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .setNamePlural( TYPE_INCH_NAME_PLURAL) .addTypeFlag( TYPE_INCH_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_INCH_WIKI) + .setWebLinkWiki( TYPE_INCH_WIKI) .createToBaseConverterSteps().multiply(TYPE_INCH_FACTOR).power10Down(UnitXCTypeSIPrefix.MILLI).build() .createFromBaseConverterSteps().power10Up(UnitXCTypeSIPrefix.MILLI).divide(TYPE_INCH_FACTOR).build() .build() @@ -160,7 +157,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .addTypeFlag( TYPE_LINK_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL_EXTRA) - .addWebsiteWiki( TYPE_LINK_WIKI) + .setWebLinkWiki( TYPE_LINK_WIKI) .createToBaseConverterSteps().multiply(TYPE_LINK_FACTOR).power10Down(UnitXCTypeSIPrefix.MILLI).build() .createFromBaseConverterSteps().power10Up(UnitXCTypeSIPrefix.MILLI).divide(TYPE_LINK_FACTOR).build() .build() @@ -170,7 +167,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .setNamePlural( TYPE_FOOT_NAME_PLURAL) .addTypeFlag( TYPE_FOOT_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_FOOT_WIKI) + .setWebLinkWiki( TYPE_FOOT_WIKI) .createToBaseConverterSteps().multiply(TYPE_FOOT_FACTOR).power10Down(UnitXCTypeSIPrefix.MILLI).build() .createFromBaseConverterSteps().power10Up(UnitXCTypeSIPrefix.MILLI).divide(TYPE_FOOT_FACTOR).build() .build() @@ -179,7 +176,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .setName( TYPE_YARD_NAME) .addTypeFlag( TYPE_YARD_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_YARD_WIKI) + .setWebLinkWiki( TYPE_YARD_WIKI) .createToBaseConverterSteps().multiply(TYPE_YARD_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_YARD_FACTOR).build() .build() @@ -189,7 +186,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .addTypeFlag( TYPE_ROD_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL_EXTRA) - .addWebsiteWiki( TYPE_ROD_WIKI) + .setWebLinkWiki( TYPE_ROD_WIKI) .createToBaseConverterSteps().multiply(TYPE_ROD_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_ROD_FACTOR).build() .build() @@ -199,7 +196,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .addTypeFlag( TYPE_CHAIN_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL_EXTRA) - .addWebsiteWiki( TYPE_CHAIN_WIKI) + .setWebLinkWiki( TYPE_CHAIN_WIKI) .createToBaseConverterSteps().multiply(TYPE_CHAIN_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_CHAIN_FACTOR).build() .build() @@ -209,7 +206,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .addTypeFlag( TYPE_FURLONG_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL_EXTRA) - .addWebsiteWiki( TYPE_FURLONG_WIKI) + .setWebLinkWiki( TYPE_FURLONG_WIKI) .createToBaseConverterSteps().multiply(TYPE_FURLONG_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_FURLONG_FACTOR).build() .build() @@ -218,7 +215,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .setName( TYPE_MILE_NAME) .addTypeFlag( TYPE_MILE_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_MILE_WIKI) + .setWebLinkWiki( TYPE_MILE_WIKI) .createToBaseConverterSteps().multiply(TYPE_MILE_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_MILE_FACTOR).build() .build() @@ -227,7 +224,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .setName( TYPE_MILE_US_NAME) .addTypeFlag( TYPE_MILE_US_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_MILE_US_WIKI) + .setWebLinkWiki( TYPE_MILE_US_WIKI) .createToBaseConverterSteps().multiply(TYPE_MILE_US_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_MILE_US_FACTOR).build() .build() @@ -236,7 +233,7 @@ public class UnitXCModuleLength implements UnitXCConfigModule { .setName( TYPE_MILE_NAUTICAL_NAME) .addTypeFlag( TYPE_MILE_NAUTICAL_FLAG) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_MILE_NAUTICAL_WIKI) + .setWebLinkWiki( TYPE_MILE_NAUTICAL_WIKI) .createToBaseConverterSteps().multiply(TYPE_MILE_NAUTICAL_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_MILE_NAUTICAL_FACTOR).build() .build() diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleSubstance.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMole.java similarity index 72% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleSubstance.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMole.java index e2f66ce..098272b 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleSubstance.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleMole.java @@ -35,19 +35,18 @@ import net.forwardfire.unitxc.config.builder.UnitXCTypeSIPrefix; * @author Willem Cazander * @version 1.0 Oct 23, 2015 */ -public class UnitXCModuleSubstance implements UnitXCConfigModule { +public class UnitXCModuleMole implements UnitXCConfigModule { - public static final String GROUP_ID = "substance"; - public static final String GROUP_NAME = "mole"; - public static final String GROUP_DESCRIPTION = "The mole is the amount of substance of a system which contains as many elementary entities as there are atoms in 0.012 kilogram of carbon 12."; + public static final String GROUP_ID = "mole"; public static final String GROUP_BASE_TYPE_ID = "mol"; + private static final String[] GROUP_QUANTITIES = {"amount_of_substance"}; - public static final String TYPE_MOLE_ID = GROUP_BASE_TYPE_ID; - public static final String TYPE_MOLE_NAME = GROUP_NAME; - public static final String TYPE_MOLE_FLAG = buildFlag(GROUP_ID,TYPE_MOLE_NAME); - private static final String TYPE_MOLE_WIKI = "Mole_(unit)"; + public static final String TYPE_MOL_ID = GROUP_BASE_TYPE_ID; + public static final String TYPE_MOL_NAME = "mole"; + public static final String TYPE_MOL_FLAG = buildFlag(GROUP_ID,TYPE_MOL_NAME); + private static final String TYPE_MOL_WIKI = "Mole_(unit)"; - public static final String TYPE_POUND_MOLE_ID = "lbmol"; + public static final String TYPE_POUND_MOLE_ID = "lbmol";// TODO: add lb-mol public static final String TYPE_POUND_MOLE_NAME = "pound-mole"; public static final String TYPE_POUND_MOLE_FLAG = buildFlag(GROUP_ID,TYPE_POUND_MOLE_NAME); private static final double TYPE_POUND_MOLE_FACTOR = 453.59237; @@ -55,16 +54,14 @@ public class UnitXCModuleSubstance implements UnitXCConfigModule { @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( TYPE_MOLE_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( TYPE_MOLE_ID) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds( GROUP_QUANTITIES) + .setBaseTypeId( TYPE_MOL_ID) .createSIUnitTypes() - .setId( TYPE_MOLE_ID) - .setName( TYPE_MOLE_NAME) - .addTypeFlag( TYPE_MOLE_FLAG) - .addWebsiteWiki( TYPE_MOLE_WIKI) + .setId( TYPE_MOL_ID) + .setName( TYPE_MOL_NAME) + .addTypeFlag( TYPE_MOL_FLAG) + .setWebLinkWiki( TYPE_MOL_WIKI) .addCommonSIPrefix(UnitXCTypeSIPrefix.MILLI) .addCommonSIPrefix(UnitXCTypeSIPrefix.MICRO) .addCommonSIPrefix(UnitXCTypeSIPrefix.NANO) @@ -75,7 +72,7 @@ public class UnitXCModuleSubstance implements UnitXCConfigModule { .setId( TYPE_POUND_MOLE_ID) .setName( TYPE_POUND_MOLE_NAME) .addTypeFlag( UnitXCConfigBuilder.TYPE_FLAG_IMPERIAL) - .addWebsiteWiki( TYPE_POUND_MOLE_WIKI) + .setWebLinkWiki( TYPE_POUND_MOLE_WIKI) .createToBaseConverterSteps().multiply(TYPE_POUND_MOLE_FACTOR).build() .createFromBaseConverterSteps().divide(TYPE_POUND_MOLE_FACTOR).build() .build() diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleTime.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleSecond.java similarity index 89% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleTime.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleSecond.java index ba01df9..32b8288 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleTime.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/UnitXCModuleSecond.java @@ -35,15 +35,14 @@ import net.forwardfire.unitxc.config.builder.UnitXCTypeSIPrefix; * @author Willem Cazander * @version 1.0 Oct 25, 2015 */ -public class UnitXCModuleTime implements UnitXCConfigModule { +public class UnitXCModuleSecond implements UnitXCConfigModule { - public static final String GROUP_ID = "time"; - public static final String GROUP_NAME = "second"; - public static final String GROUP_DESCRIPTION = "The second is the duration of 9192631770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the caesium 133 atom."; + public static final String GROUP_ID = "second"; public static final String GROUP_BASE_TYPE_ID = "s"; + private static final String[] GROUP_QUANTITIES = {"time"}; public static final String TYPE_SECOND_ID = GROUP_BASE_TYPE_ID; - public static final String TYPE_SECOND_NAME = GROUP_NAME; + public static final String TYPE_SECOND_NAME = "second"; public static final String TYPE_SECOND_NAMES = TYPE_SECOND_NAME+TYPE_SECOND_ID; public static final String TYPE_SECOND_FLAG = buildFlag(GROUP_ID,TYPE_SECOND_NAME); @@ -72,10 +71,8 @@ public class UnitXCModuleTime implements UnitXCConfigModule { @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupBase() - .setId( GROUP_ID) - .setName( TYPE_SECOND_NAME) - .setDescription ( GROUP_DESCRIPTION) + builder.createUnitGroupBase(GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( TYPE_SECOND_ID) .createSIUnitTypes() .setId( TYPE_SECOND_ID) diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleVolume.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetre.java similarity index 74% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleVolume.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetre.java index 0d01637..e478ae7 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleVolume.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetre.java @@ -27,7 +27,7 @@ import static net.forwardfire.unitxc.config.builder.UnitXCNumberTypeSetting.toSu import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; -import net.forwardfire.unitxc.module.UnitXCModuleLength; +import net.forwardfire.unitxc.module.UnitXCModuleMetre; /** * @@ -35,24 +35,22 @@ import net.forwardfire.unitxc.module.UnitXCModuleLength; * @author Willem Cazander * @version 1.0 Oct 28, 2015 */ -public class UnitXCModuleVolume implements UnitXCConfigModule { +public class UnitXCModuleCubicMetre implements UnitXCConfigModule { private static final int UNIT_COMPOUND_EXPONENT = 3; private static final String UNIT_ID_POSTFIX = toSuperScript(UNIT_COMPOUND_EXPONENT); private static final String UNIT_NAME_PREFIX = "cubic "; - public static final String GROUP_ID = "volume"; - public static final String GROUP_NAME = UNIT_NAME_PREFIX+UnitXCModuleLength.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "It is the volume of a cube with edges one metre in length."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleLength.GROUP_BASE_TYPE_ID+UNIT_ID_POSTFIX; + public static final String GROUP_ID = "cubic_metre"; + public static final String GROUP_DESCRIPTION = ""; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMetre.GROUP_BASE_TYPE_ID+UNIT_ID_POSTFIX; + private static final String[] GROUP_QUANTITIES = {"volume"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundExponent(UnitXCModuleLength.GROUP_ID, UNIT_COMPOUND_EXPONENT) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundExponent(GROUP_ID,UnitXCModuleMetre.GROUP_ID, UNIT_COMPOUND_EXPONENT) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .setUnitIdPostfix(UNIT_ID_POSTFIX) .setUnitNamePrefix(UNIT_NAME_PREFIX) .build() diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleAreaDensity.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerKilogram.java similarity index 67% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleAreaDensity.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerKilogram.java index c831d4e..84dc8ad 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleAreaDensity.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerKilogram.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleMass; +import net.forwardfire.unitxc.module.UnitXCModuleKilogram; /** * @@ -34,20 +34,17 @@ import net.forwardfire.unitxc.module.UnitXCModuleMass; * @author Willem Cazander * @version 1.0 Oct 12, 2016 */ -public class UnitXCModuleAreaDensity implements UnitXCConfigModule { +public class UnitXCModuleCubicMetrePerKilogram implements UnitXCConfigModule { - public static final String GROUP_ID = "area_density"; - public static final String GROUP_NAME = UnitXCModuleMass.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleArea.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Area density is of a two-dimensional object is calculated as the mass per unit area."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMass.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleArea.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "cubic_metre_per_kilogram"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleCubicMetre.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleKilogram.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"specific_volume"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleMass.GROUP_ID, UnitXCModuleArea.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleCubicMetre.GROUP_ID, UnitXCModuleKilogram.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .build() ; } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarVolume.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerMole.java similarity index 67% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarVolume.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerMole.java index aa9a07d..c58b2a4 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarVolume.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerMole.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleSubstance; +import net.forwardfire.unitxc.module.UnitXCModuleMole; /** * @@ -34,20 +34,17 @@ import net.forwardfire.unitxc.module.UnitXCModuleSubstance; * @author Willem Cazander * @version 1.0 Oct 12, 2016 */ -public class UnitXCModuleMolarVolume implements UnitXCConfigModule { +public class UnitXCModuleCubicMetrePerMole implements UnitXCConfigModule { - public static final String GROUP_ID = "molar_volume"; - public static final String GROUP_NAME = UnitXCModuleVolume.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleSubstance.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Molar volume is the volume occupied by one mole of a substance."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleVolume.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSubstance.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "cubic_metre_per_mole"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleCubicMetre.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleMole.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"molar_volume"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleVolume.GROUP_ID, UnitXCModuleSubstance.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleCubicMetre.GROUP_ID, UnitXCModuleMole.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .build() ; } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleVolumetricFlow.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerSecond.java similarity index 69% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleVolumetricFlow.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerSecond.java index 83f1768..3b09c17 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleVolumetricFlow.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleCubicMetrePerSecond.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleTime; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; /** * @@ -34,19 +34,16 @@ import net.forwardfire.unitxc.module.UnitXCModuleTime; * @author Willem Cazander * @version 1.0 Oct 1, 2016 */ -public class UnitXCModuleVolumetricFlow implements UnitXCConfigModule { +public class UnitXCModuleCubicMetrePerSecond implements UnitXCConfigModule { - public static final String GROUP_ID = "volumetric_flow"; - public static final String GROUP_NAME = UnitXCModuleVolume.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleTime.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Volumetric flow is the volume of fluid which passes per unit time."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleVolume.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleTime.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "cubic_metre_per_second"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleCubicMetre.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSecond.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"volumetric_flow"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleVolume.GROUP_ID, UnitXCModuleTime.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) + builder.createUnitGroupCompoundPair(GROUP_ID,UnitXCModuleCubicMetre.GROUP_ID, UnitXCModuleSecond.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( GROUP_BASE_TYPE_ID) .build() ; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSpecificVolume.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleKilogramPerCubicMetre.java similarity index 66% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSpecificVolume.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleKilogramPerCubicMetre.java index 070aaa1..173bc3b 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSpecificVolume.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleKilogramPerCubicMetre.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleMass; +import net.forwardfire.unitxc.module.UnitXCModuleKilogram; /** * @@ -34,20 +34,17 @@ import net.forwardfire.unitxc.module.UnitXCModuleMass; * @author Willem Cazander * @version 1.0 Oct 12, 2016 */ -public class UnitXCModuleSpecificVolume implements UnitXCConfigModule { +public class UnitXCModuleKilogramPerCubicMetre implements UnitXCConfigModule { - public static final String GROUP_ID = "specific_volume"; - public static final String GROUP_NAME = UnitXCModuleVolume.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleMass.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "In thermodynamics, the specific volume of a substance is the ratio of the substance's volume to its mass."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleVolume.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleMass.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "kilogram_per_cubic_metre"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleKilogram.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleCubicMetre.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"density","mass_density"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleVolume.GROUP_ID, UnitXCModuleMass.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleKilogram.GROUP_ID, UnitXCModuleCubicMetre.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .build() ; } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMassDensity.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleKilogramPerSquareMetre.java similarity index 69% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMassDensity.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleKilogramPerSquareMetre.java index 47c76a0..7361e1f 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMassDensity.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleKilogramPerSquareMetre.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleMass; +import net.forwardfire.unitxc.module.UnitXCModuleKilogram; /** * @@ -34,19 +34,16 @@ import net.forwardfire.unitxc.module.UnitXCModuleMass; * @author Willem Cazander * @version 1.0 Oct 12, 2016 */ -public class UnitXCModuleMassDensity implements UnitXCConfigModule { +public class UnitXCModuleKilogramPerSquareMetre implements UnitXCConfigModule { - public static final String GROUP_ID = "mass_density"; - public static final String GROUP_NAME = UnitXCModuleMass.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleVolume.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "The volumetric mass density, of a substance is its mass per unit volume."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMass.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleVolume.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "kilogram_per_square_metre"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleKilogram.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSquareMetre.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"area_density"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleMass.GROUP_ID, UnitXCModuleVolume.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleKilogram.GROUP_ID, UnitXCModuleSquareMetre.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( GROUP_BASE_TYPE_ID) .build() ; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleJounce.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerQuarticSecond.java similarity index 67% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleJounce.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerQuarticSecond.java index 3172dec..f649f86 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleJounce.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerQuarticSecond.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleTime; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; /** * @@ -34,21 +34,18 @@ import net.forwardfire.unitxc.module.UnitXCModuleTime; * @author Willem Cazander * @version 1.0 Oct 1, 2016 */ -public class UnitXCModuleJounce implements UnitXCConfigModule { +public class UnitXCModuleMetrePerQuarticSecond implements UnitXCConfigModule { - public static final String GROUP_ID = "jounce"; - public static final String GROUP_NAME = UnitXCModuleJerk.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleTime.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Is the fourth derivative of the position vector with respect to time or the rate of change of the jerk with respect to time."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleJerk.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleTime.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "metre_per_quartic_second"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMetrePerSecondCubed.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSecond.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"snap","jounce"}; // TODO: add aliases @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleJerk.GROUP_ID, UnitXCModuleTime.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleMetrePerSecondCubed.GROUP_ID, UnitXCModuleSecond.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .build() ; } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSpeed.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecond.java similarity index 67% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSpeed.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecond.java index 7961392..dd89093 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSpeed.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecond.java @@ -26,8 +26,9 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleLength; -import net.forwardfire.unitxc.module.UnitXCModuleTime; +import net.forwardfire.unitxc.model.UnitXCModule; +import net.forwardfire.unitxc.module.UnitXCModuleMetre; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; /** * @@ -35,20 +36,18 @@ import net.forwardfire.unitxc.module.UnitXCModuleTime; * @author Willem Cazander * @version 1.0 Nov 3, 2015 */ -public class UnitXCModuleSpeed implements UnitXCConfigModule { +@UnitXCModule(groupId=UnitXCModuleMetrePerSecond.GROUP_ID,dependencies={UnitXCModuleMetre.GROUP_ID, UnitXCModuleSecond.GROUP_ID}) +public class UnitXCModuleMetrePerSecond implements UnitXCConfigModule { - public static final String GROUP_ID = "speed"; - public static final String GROUP_NAME = UnitXCModuleLength.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleTime.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Speed is the dimensions of a length divided by a time."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleLength.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleTime.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "metre_per_second"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMetre.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSecond.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"speed","velocity"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleLength.GROUP_ID, UnitXCModuleTime.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID,UnitXCModuleMetre.GROUP_ID, UnitXCModuleSecond.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .build() ; } diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleJerk.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecondCubed.java similarity index 68% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleJerk.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecondCubed.java index 41676fb..aeb3f32 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleJerk.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecondCubed.java @@ -26,7 +26,7 @@ package net.forwardfire.unitxc.module.derived; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleTime; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; /** * @@ -34,20 +34,17 @@ import net.forwardfire.unitxc.module.UnitXCModuleTime; * @author Willem Cazander * @version 1.0 Oct 1, 2016 */ -public class UnitXCModuleJerk implements UnitXCConfigModule { +public class UnitXCModuleMetrePerSecondCubed implements UnitXCConfigModule { - public static final String GROUP_ID = "jerk"; - public static final String GROUP_NAME = UnitXCModuleAcceleration.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleTime.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Jerk, also known as jolt, surge, or lurch, is the rate of change of acceleration, with respect to time."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleAcceleration.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleTime.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "metre_per_second_cubed"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMetrePerSecondSquared.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSecond.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"jerk","jolt","surge","lurch"}; // TODO: add aliases @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleAcceleration.GROUP_ID, UnitXCModuleTime.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleMetrePerSecondSquared.GROUP_ID, UnitXCModuleSecond.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( GROUP_BASE_TYPE_ID) .build() ; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleAcceleration.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecondSquared.java similarity index 72% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleAcceleration.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecondSquared.java index 3cf2aeb..31c5b64 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleAcceleration.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMetrePerSecondSquared.java @@ -28,7 +28,7 @@ import static net.forwardfire.unitxc.config.builder.UnitXCNumberTypeSetting.toSu import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleTime; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; /** * @@ -36,27 +36,24 @@ import net.forwardfire.unitxc.module.UnitXCModuleTime; * @author Willem Cazander * @version 1.0 Oct 1, 2016 */ -public class UnitXCModuleAcceleration implements UnitXCConfigModule { +public class UnitXCModuleMetrePerSecondSquared implements UnitXCConfigModule { private static final int UNIT_COMPOUND_EXPONENT = 2; private static final String UNIT_ID_POSTFIX = toSuperScript(UNIT_COMPOUND_EXPONENT); - public static final String GROUP_ID = "acceleration"; - public static final String GROUP_NAME = UnitXCModuleSpeed.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleTime.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Acceleration, is the rate of change of velocity of an object with respect to time."; - public static final String GROUP_BASE_TYPE_ID = "m"+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleTime.GROUP_BASE_TYPE_ID+UNIT_ID_POSTFIX; //UnitXCModuleSpeed.GROUP_BASE_TYPE_ID; + public static final String GROUP_ID = "metre_per_second_squared"; + public static final String GROUP_BASE_TYPE_ID = "m"+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleSecond.GROUP_BASE_TYPE_ID+UNIT_ID_POSTFIX; //UnitXCModuleSpeed.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"acceleration"}; @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleSpeed.GROUP_ID, UnitXCModuleTime.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID,UnitXCModuleMetrePerSecond.GROUP_ID, UnitXCModuleSecond.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .createUnitType() .setAliasOfType("m/s/s") .setId(GROUP_BASE_TYPE_ID) - .setName("Meter per second2") + .setName("Meter per second squared") .build() .build() ; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarConcentration.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarConcentration.java deleted file mode 100644 index 032fb5f..0000000 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolarConcentration.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2013-2015, Willem Cazander - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package net.forwardfire.unitxc.module.derived; - -import net.forwardfire.unitxc.config.UnitXCConfigModule; -import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; -import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleSubstance; - -/** - * - * - * @author Willem Cazander - * @version 1.0 Oct 12, 2016 - */ -public class UnitXCModuleMolarConcentration implements UnitXCConfigModule { - - public static final String GROUP_ID = "molar_concentration"; - public static final String GROUP_NAME = UnitXCModuleSubstance.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleVolume.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "Molar concentration is a measure of the concentration of a solute in a solution."; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleSubstance.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleVolume.GROUP_BASE_TYPE_ID; - - @Override - public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleSubstance.GROUP_ID, UnitXCModuleVolume.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) - .build() - ; - } -} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolePerCubicMetre.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolePerCubicMetre.java new file mode 100644 index 0000000..ae71169 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleMolePerCubicMetre.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.module.derived; + +import net.forwardfire.unitxc.config.UnitXCConfigModule; +import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; +import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; +import net.forwardfire.unitxc.module.UnitXCModuleMole; + +/** + * + * + * @author Willem Cazander + * @version 1.0 Oct 12, 2016 + */ +public class UnitXCModuleMolePerCubicMetre implements UnitXCConfigModule { + + public static final String GROUP_ID = "mole_per_cubic_metre"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMole.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleCubicMetre.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"molarity"}; + + @Override + public void configModule(UnitXCConfigBuilder builder) { + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleMole.GROUP_ID, UnitXCModuleCubicMetre.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) + .build() + ; + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleNewtonPerSecond.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleNewtonPerSecond.java new file mode 100644 index 0000000..a6fb976 --- /dev/null +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleNewtonPerSecond.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2013-2015, Willem Cazander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.forwardfire.unitxc.module.derived; + +import net.forwardfire.unitxc.config.UnitXCConfigModule; +import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; +import net.forwardfire.unitxc.module.UnitXCModuleSecond; +import net.forwardfire.unitxc.module.named.UnitXCModuleNewton; + +/** + * + * + * @author Willem Cazander + * @version 1.0 Oct 31, 2016 + */ +public class UnitXCModuleNewtonPerSecond implements UnitXCConfigModule { + + public static final String GROUP_ID = "newton_per_second"; + public static final String GROUP_BASE_TYPE_ID = "kg/m/s/s/s"; //FIXME: UnitXCModuleNewton.GROUP_BASE_TYPE_ID+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleTime.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"yank"}; + + @Override + public void configModule(UnitXCConfigBuilder builder) { + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleNewton.GROUP_ID, UnitXCModuleSecond.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId( GROUP_BASE_TYPE_ID) + .build() + ; + } +} diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleArea.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSquareMetre.java similarity index 79% rename from ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleArea.java rename to ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSquareMetre.java index 874ee11..fc39d10 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleArea.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/derived/UnitXCModuleSquareMetre.java @@ -27,7 +27,7 @@ import static net.forwardfire.unitxc.config.builder.UnitXCNumberTypeSetting.toSu import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; -import net.forwardfire.unitxc.module.UnitXCModuleLength; +import net.forwardfire.unitxc.module.UnitXCModuleMetre; /** * @@ -35,16 +35,15 @@ import net.forwardfire.unitxc.module.UnitXCModuleLength; * @author Willem Cazander * @version 1.0 Oct 26, 2015 */ -public class UnitXCModuleArea implements UnitXCConfigModule { +public class UnitXCModuleSquareMetre implements UnitXCConfigModule { private static final int UNIT_COMPOUND_EXPONENT = 2; private static final String UNIT_ID_POSTFIX = toSuperScript(UNIT_COMPOUND_EXPONENT); private static final String UNIT_NAME_PREFIX = "square "; - public static final String GROUP_ID = "area"; - public static final String GROUP_NAME = UNIT_NAME_PREFIX+UnitXCModuleLength.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "It is defined as the area of a square whose sides measure exactly one metre. The square metre is derived from the SI base unit of the metre,"; - public static final String GROUP_BASE_TYPE_ID = UnitXCModuleLength.GROUP_BASE_TYPE_ID+UNIT_ID_POSTFIX; + public static final String GROUP_ID = "square_metre"; + public static final String GROUP_BASE_TYPE_ID = UnitXCModuleMetre.GROUP_BASE_TYPE_ID+UNIT_ID_POSTFIX; + private static final String[] GROUP_QUANTITIES = {"area"}; public static final String TYPE_CENTIARE_ALIAS = "m²"; public static final String TYPE_CENTIARE_ID = "ca"; @@ -63,10 +62,8 @@ public class UnitXCModuleArea implements UnitXCConfigModule { @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundExponent(UnitXCModuleLength.GROUP_ID, UNIT_COMPOUND_EXPONENT) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) + builder.createUnitGroupCompoundExponent(GROUP_ID, UnitXCModuleMetre.GROUP_ID, UNIT_COMPOUND_EXPONENT) + .addQuantityIds(GROUP_QUANTITIES) .setBaseTypeId( GROUP_BASE_TYPE_ID) .setUnitIdPostfix(UNIT_ID_POSTFIX) .setUnitNamePrefix(UNIT_NAME_PREFIX) @@ -74,19 +71,19 @@ public class UnitXCModuleArea implements UnitXCConfigModule { .setAliasOfType( TYPE_CENTIARE_ALIAS) .setId( TYPE_CENTIARE_ID) .setName( TYPE_CENTIARE_NAME) - .addWebsiteLink( TYPE_CENTIARE_URL) + .setWebLink( TYPE_CENTIARE_URL) .build() .createUnitType() .setAliasOfType( TYPE_ARE_ALIAS) .setId( TYPE_ARE_ID) .setName( TYPE_ARE_NAME) - .addWebsiteLink( TYPE_ARE_URL) + .setWebLink( TYPE_ARE_URL) .build() .createUnitType() .setAliasOfType( TYPE_HECTARE_ALIAS) .setId( TYPE_HECTARE_ID) .setName( TYPE_HECTARE_NAME) - .addWebsiteLink( TYPE_HECTARE_URL) + .setWebLink( TYPE_HECTARE_URL) .build() .build() ; diff --git a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/named/UnitXCModuleNewton.java b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/named/UnitXCModuleNewton.java index 6d9275f..f645d8c 100644 --- a/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/named/UnitXCModuleNewton.java +++ b/ff-unitxc-converter/src/main/java/net/forwardfire/unitxc/module/named/UnitXCModuleNewton.java @@ -26,8 +26,8 @@ package net.forwardfire.unitxc.module.named; import net.forwardfire.unitxc.config.UnitXCConfigModule; import net.forwardfire.unitxc.config.builder.UnitXCConfigBuilder; import net.forwardfire.unitxc.model.UnitXCGroupCompoundPair; -import net.forwardfire.unitxc.module.UnitXCModuleMass; -import net.forwardfire.unitxc.module.derived.UnitXCModuleAcceleration; +import net.forwardfire.unitxc.module.UnitXCModuleKilogram; +import net.forwardfire.unitxc.module.derived.UnitXCModuleMetrePerSecondSquared; /** * @@ -38,23 +38,21 @@ import net.forwardfire.unitxc.module.derived.UnitXCModuleAcceleration; public class UnitXCModuleNewton implements UnitXCConfigModule { public static final String GROUP_ID = "newton"; - public static final String GROUP_NAME = UnitXCModuleMass.GROUP_NAME+UnitXCGroupCompoundPair.PER_NAME+UnitXCModuleAcceleration.GROUP_NAME; - public static final String GROUP_DESCRIPTION = "One newton is the force needed to accelerate one kilogram of mass at the rate of one metre per second squared in direction of the applied force."; - public static final String GROUP_BASE_TYPE_ID = "kg"+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleAcceleration.GROUP_BASE_TYPE_ID; + public static final String GROUP_BASE_TYPE_ID = "N"; + private static final String GROUP_BASE_TYPE_ID_ALIAS = "kg"+UnitXCGroupCompoundPair.PER_ID+UnitXCModuleMetrePerSecondSquared.GROUP_BASE_TYPE_ID; + private static final String[] GROUP_QUANTITIES = {"force","weight"}; // TODO: symbol N + fix builder @Override public void configModule(UnitXCConfigBuilder builder) { - builder.createUnitGroupCompoundPair(UnitXCModuleMass.GROUP_ID, UnitXCModuleAcceleration.GROUP_ID) - .setId( GROUP_ID) - .setName( GROUP_NAME) - .setDescription ( GROUP_DESCRIPTION) - .setBaseTypeId( GROUP_BASE_TYPE_ID) + builder.createUnitGroupCompoundPair(GROUP_ID, UnitXCModuleKilogram.GROUP_ID, UnitXCModuleMetrePerSecondSquared.GROUP_ID) + .addQuantityIds(GROUP_QUANTITIES) + .setBaseTypeId(GROUP_BASE_TYPE_ID) .createUnitType() - .setId("N") + .setId(GROUP_BASE_TYPE_ID) .setName(GROUP_ID) - .setAliasOfType(GROUP_BASE_TYPE_ID) + .setAliasOfType(GROUP_BASE_TYPE_ID_ALIAS) .build() .build(); } diff --git a/ff-unitxc-converter/src/main/resources/net/forwardfire/unitxc/UnitXCBundle.properties b/ff-unitxc-converter/src/main/resources/net/forwardfire/unitxc/UnitXCBundle.properties new file mode 100644 index 0000000..ffe1ead --- /dev/null +++ b/ff-unitxc-converter/src/main/resources/net/forwardfire/unitxc/UnitXCBundle.properties @@ -0,0 +1,122 @@ + + +group.mole.name = mole +group.mole.description = The mole is the amount of substance of a system which contains as many elementary entities as there are atoms in 0.012 kilogram of carbon 12. +group.mole.quantity.amount_of_substance.name = amount of substance +group.mole.quantity.amount_of_substance.wikiLink = Amount_of_substance + +group.second.name = second +group.second.description = The second is the duration of 9192631770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the caesium 133 atom. +group.second.quantity.time.name = time +group.second.quantity.time.wikiLink = Time + +group.kelvin.name = kelvin +group.kelvin.description = The kelvin, unit of thermodynamic temperature, is the fraction 1/273.16 of the thermodynamic temperature of the triple point of water. +group.kelvin.quantity.thermodynamic_temperature.name = thermodynamic temperature +group.kelvin.quantity.thermodynamic_temperature.wikiLink = Thermodynamic_temperature + +group.candela.name = candela +group.candela.description = The candela is the luminous intensity, in a given direction, of a source that emits monochromatic radiation of frequency 540×1012 hertz and that has a radiant intensity in that direction of 1/683 watt per steradian. +group.candela.quantity.luminous_intensity.name = luminous intensity +group.candela.quantity.luminous_intensity.wikiLink = Luminous_intensity + +group.ampere.name = ampere +group.ampere.description = The ampere is a measure of the amount of electric charge passing a point in an electric circuit per unit time, with 6.241×1018 electrons (or one coulomb) per second constituting one ampere. +group.ampere.quantity.electric_current.name = electric current +group.ampere.quantity.electric_current.wikiLink = Electric_current + +group.kilogram.name = kilogram +group.kilogram.description = The kilogram is the unit of mass; it is equal to the mass of the international prototype of the kilogram. +group.kilogram.quantity.mass.name = mass +group.kilogram.quantity.mass.wikiLink = Mass + +group.metre.name = metre +group.metre.description = The metre is the length of the path travelled by light in vacuum during a time interval of 1/299792458 of a second. +group.metre.quantity.length.name = length +group.metre.quantity.length.wikiLink = Length + + + +group.metre_per_second.name = metre per second +group.metre_per_second.description = Speed is the dimensions of a length divided by a time. +group.metre_per_second.quantity.speed.name = speed +group.metre_per_second.quantity.speed.wikiLink = Speed +group.metre_per_second.quantity.velocity.name = velocity +group.metre_per_second.quantity.velocity.wikiLink = Velocity + + +group.cubic_metre.name = cubic metre +group.cubic_metre.description = It is the volume of a cube with edges one metre in length. +group.cubic_metre.quantity.volume.name = volume +group.cubic_metre.quantity.volume.wikiLink = Volume + +group.cubic_metre_per_second.name = cubic metre per second +group.cubic_metre_per_second.description = Volumetric flow is the volume of fluid which passes per unit time. +group.cubic_metre_per_second.quantity.volumetric_flow.name = volumetric flow +group.cubic_metre_per_second.quantity.volumetric_flow.wikiLink = Volumetric_flow + +group.metre_per_second_squared.name = metre per second squared +group.metre_per_second_squared.description = Acceleration, is the rate of change of velocity of an object with respect to time. +group.metre_per_second_squared.acceleration.volumetric_flow.name = acceleration +group.metre_per_second_squared.acceleration.volumetric_flow.wikiLink = Acceleration + +group.metre_per_second_cubed.name = metre per second cubed +group.metre_per_second_cubed.description = Jerk, also known as jolt, surge, or lurch, is the rate of change of acceleration, with respect to time. +group.metre_per_second_cubed.quantity.jerk.name = jerk +group.metre_per_second_cubed.quantity.jerk.wikiLink = Jerk_(physics) +group.metre_per_second_cubed.quantity.jolt.name = jolt +group.metre_per_second_cubed.quantity.surge.name = surge +group.metre_per_second_cubed.quantity.lurch.name = lurch + +group.metre_per_quartic_second.name = metre per quartic second +group.metre_per_quartic_second.description = Is the fourth derivative of the position vector with respect to time or the rate of change of the jerk with respect to time. +group.metre_per_quartic_second.quantity.jounce.name = jounce +group.metre_per_quartic_second.quantity.jounce.wikiLink = Jounce +group.metre_per_quartic_second.quantity.snap.name = snap + +group.kilogram_per_square_metre.name = kilogram per square metre +group.kilogram_per_square_metre.description = Area density is of a two-dimensional object is calculated as the mass per unit area. +group.kilogram_per_square_metre.quantity.area_density.name = area_density +group.kilogram_per_square_metre.quantity.area_density.wikiLink = Area_density + +group.kilogram_per_cubic_metre.name = kilogram per cubic metre +group.kilogram_per_cubic_metre.description = The volumetric mass density, of a substance is its mass per unit volume. +group.kilogram_per_cubic_metre.quantity.density.name = density +group.kilogram_per_cubic_metre.quantity.density.wikiLink = Density +group.kilogram_per_cubic_metre.quantity.mass_density.name = mass_density + +group.mole_per_cubic_metre.name = mole per cubic metre +group.mole_per_cubic_metre.description = Molar concentration is a measure of the concentration of a solute in a solution. +group.mole_per_cubic_metre.quantity.molarity.name = molarity +group.mole_per_cubic_metre.quantity.molarity.wikiLink = Molarity + +group.cubic_metre_per_mole.name = cubic metre per mole +group.cubic_metre_per_mole.description = Molar volume is the volume occupied by one mole of a substance. +group.cubic_metre_per_mole.quantity.molar_volume.name = molar volume +group.cubic_metre_per_mole.quantity.molar_volume.wikiLink = Molar_volume + +group.newton_per_second.name = newton per second +group.newton_per_second.description = Newton per second. +group.newton_per_second.quantity.yank.name = yank + +group.cubic_metre_per_kilogram.name = cubic metre per kilogram +group.cubic_metre_per_kilogram.description = In thermodynamics, the specific volume of a substance is the ratio of the substance's volume to its mass. +group.cubic_metre_per_kilogram.quantity.specific_volume.name = specific volume +group.cubic_metre_per_kilogram.quantity.specific_volume.wikiLink = Specific_volume + +group.square_metre.name = square metre +group.square_metre.description = It is defined as the area of a square whose sides measure exactly one metre. The square metre is derived from the SI base unit of the metre, +group.square_metre.quantity.area.name = area +group.square_metre.quantity.area.wikiLink = Area + +group.newton.name = newton +group.newton.description = One newton is the force needed to accelerate one kilogram of mass at the rate of one metre per second squared in direction of the applied force. +group.newton.quantity.force.name = force +group.newton.quantity.force.wikiLink = Force +group.newton.quantity.weight.name = weigth +group.newton.quantity.weight.wikiLink = Weight + + +# type.mol.wikiLink = ${general.wiki.base.url}/Mole_(unit) +# type.mol.name = Mole + diff --git a/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCConverterStepTest.java b/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCConverterStepTest.java index 8715919..3f7942f 100644 --- a/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCConverterStepTest.java +++ b/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCConverterStepTest.java @@ -26,17 +26,21 @@ package net.forwardfire.unitxc; import static org.junit.Assert.assertNotNull; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; +import java.io.File; +import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; import java.util.Map; +import java.util.Set; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.io.FileUtils; import org.junit.Test; +import ch.qos.logback.core.util.FileUtil; + import static org.junit.Assert.assertFalse; import static net.forwardfire.unitxc.UnitXCAssert.convertEquals; @@ -46,8 +50,14 @@ import net.forwardfire.unitxc.UnitXCManager; import net.forwardfire.unitxc.converter.UnitXConverterParameterValue; import net.forwardfire.unitxc.model.UnitXCType; import net.forwardfire.unitxc.model.UnitXCGroup; +import net.forwardfire.unitxc.model.UnitXCGroupJump; +import net.forwardfire.unitxc.model.UnitXCGroupJumpParameter; +import net.forwardfire.unitxc.model.UnitXCGroupQuantity; import net.forwardfire.unitxc.model.UnitXConverterResult; import net.forwardfire.unitxc.model.UnitXConverterResultStep; +import net.forwardfire.unitxc.model.step.RuleStepCodePrinter; +import net.forwardfire.unitxc.model.step.RuleStepCodeStyle; +import net.forwardfire.unitxc.model.step.UnitXConverterStep; public class UnitXCConverterStepTest { @@ -68,12 +78,27 @@ public class UnitXCConverterStepTest { } long tc = typeGroup.getUnitTypeSize(); ts += tc; - String groupLine = String.format("%-20s %-20d %-10s %s", typeGroup.getId(),tc,type.getId(),typeGroup.getName()); + String groupLine = String.format("%-40s %-20d %-10s", typeGroup.getName().getValue(""),tc,type.getId()); System.out.println(groupLine); } System.out.println("\ntotalTypes: "+ts); System.out.println(""); + Set paraSet = new HashSet<>(); + for (UnitXCGroup typeGroup:unitManager.getConfig().getUnitGroups()) { + for (UnitXCGroupJump jumpGroup:typeGroup.getGroupJumps()) { + for (UnitXCGroupJumpParameter jumpPara:jumpGroup.getJumpParameters()) { + System.out.println("jumpPara: "+jumpPara.getId()+" as: "+jumpPara.getUnitGroupId()); + if (paraSet.contains(jumpPara.getId())) { + //throw new IllegalStateException("duplicate jump parameter id found: "+jumpPara.getId()); + } + paraSet.add(jumpPara.getId()); + } + } + } + System.out.println("\ntotalTypes: "+ts); + System.out.println(""); + UnitXConverterResult result2 = unitManager.getConverter().convertStepped(20.0, "m/s/s", "km/s/s"); System.out.println("20m/s = "+result2.getResultValue()+" km/h"); @@ -100,8 +125,91 @@ public class UnitXCConverterStepTest { //jaxbDriver.getUnitXCGroup().marshal(unitManager.getUnitGroup("length"), System.out); Map para = new HashMap<>(); - para.put("speed_time", new UnitXConverterParameterValue(2, unitManager.getUnitType("minute"))); + para.put("metre_per_second_second", new UnitXConverterParameterValue(2, unitManager.getUnitType("minute"))); result = unitManager.getConverter().convertStepped(50, "km/h", "mm",para); - System.out.println("CONVERT-RESULT: "+result); + //System.out.println("CONVERT-RESULT: "+result); + + int x=0; + StringBuilder buf = new StringBuilder(); + buf.append("digraph G {\n"); + //buf.append("\tsize = \"4,4\"\n"); + for (UnitXCGroup typeGroup:unitManager.getConfig().getUnitGroups()) { + UnitXCType baseType = unitManager.getUnitType(typeGroup.getBaseTypeId()); + System.out.println("group: "+typeGroup.getId()); + + // print info + buf.append("\t"+typeGroup.getId()); + buf.append("["); + if (typeGroup.getDerivedFrom().isEmpty()) { + buf.append("shape=box,style=filled,color=\".9 0.5 0.9\","); + } + StringBuilder label = new StringBuilder(); + label.append("label=\""); + label.append(typeGroup.getId()+"\\n"); + label.append(baseType.getId()+"\\n"); + label.append(baseType.getName()+"\\n"); + Iterator q = typeGroup.getQuantities().iterator(); + label.append("("); + while (q.hasNext()) { + UnitXCGroupQuantity gq = q.next(); + label.append(gq.getId()); + //label.append(gq.getName()); + if (q.hasNext()) { + label.append(","); + } + } + label.append(")"); + label.append("\""); + + buf.append(label+",labelloc=b"); + buf.append("];\n"); + + // print unit per group + buf.append("\t"+typeGroup.getId()+" -> "+typeGroup.getId()); + buf.append("["); + buf.append("color=red,label=\""+typeGroup.getUnitTypeSize()+"\""); + buf.append("];\n"); + + // print relations + for (String groupFrom:typeGroup.getDerivedFrom()) { + buf.append("\t"+groupFrom+" -> "+typeGroup.getId()); + buf.append("["); + buf.append("dir=none"); + buf.append("];\n"); + } + + //for (UnitXCGroupJump jumpGroup:typeGroup.getGroupJumps()) { + // System.out.println("jumpGruop: "+jumpGroup.getId()+" to: "+jumpGroup.getUnitGroupId()); + // buf.append("\t"+typeGroup.getId()+" -> "+jumpGroup.getUnitGroupId()); + // buf.append("["); + // buf.append("];\n"); +// buf.append("\t"+typeGroup.getId()+" -> "+jumpGroup.getId()); +// buf.append(";\n"); +// +// buf.append("\t"+jumpGroup.getId()+" -> "+jumpGroup.getUnitGroupId()); +// buf.append(";\n"); + + //for (UnitXCGroupJumpParameter jumpPara:jumpGroup.getJumpParameters()) { + + //buf.append("\t"+jumpPara.getUnitGroupId()+"_"+(x++)+" -> "+jumpGroup.getId()); + //buf.append(";\n"); + + //buf.append("\t"+typeGroup.getId()+" -> "+jumpPara.getId()); + //buf.append(";\n"); + + //buf.append("\t"+jumpPara.getId()+" -> "+jumpGroup.getUnitGroupId()); + //buf.append(";\n"); + //} + //} + } + buf.append("}\n"); + System.out.println("dot: \n"+buf.toString()); + FileUtils.write(new File("target/groups.dot"), buf.toString(), Charset.forName("UTF-8"), false); + + List steps = new ArrayList<>(); + result.getResultSteps().forEach(v -> steps.add(v.getConvertStep())); + + String code = RuleStepCodePrinter.print(RuleStepCodeStyle.JAVASCRIPT, steps, result.getStartTypeId()+"_to_"+result.getResultTypeId()); + System.out.println("\n\ncode: \n"+code); } } diff --git a/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCManagerTest.java b/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCManagerTest.java index 32e062a..3b41c54 100644 --- a/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCManagerTest.java +++ b/ff-unitxc-converter/src/test/java/net/forwardfire/unitxc/UnitXCManagerTest.java @@ -7,7 +7,7 @@ import static org.junit.Assert.assertFalse; import org.junit.Test; -import net.forwardfire.unitxc.module.UnitXCModuleTemperature; +import net.forwardfire.unitxc.module.UnitXCModuleKelvin; public class UnitXCManagerTest { @@ -20,7 +20,7 @@ public class UnitXCManagerTest { @Test public void testGetUnitType() { - assertNotNull(test.getUnitType(UnitXCModuleTemperature.TYPE_KELVIN_ID)); + assertNotNull(test.getUnitType(UnitXCModuleKelvin.TYPE_KELVIN_ID)); } @Test(expected=NullPointerException.class) @@ -35,22 +35,22 @@ public class UnitXCManagerTest { @Test public void testGetUnitTypeResultId() { - assertNotNull(test.getUnitType(UnitXCModuleTemperature.TYPE_KELVIN_ID).getId()); + assertNotNull(test.getUnitType(UnitXCModuleKelvin.TYPE_KELVIN_ID).getId()); } @Test public void testGetUnitTypeResultName() { - assertNotNull(test.getUnitType(UnitXCModuleTemperature.TYPE_KELVIN_ID).getName()); + assertNotNull(test.getUnitType(UnitXCModuleKelvin.TYPE_KELVIN_ID).getName()); } @Test public void testGetUnitTypeResultTypeFlags() { - assertNotNull(test.getUnitType(UnitXCModuleTemperature.TYPE_KELVIN_ID).getTypeFlags()); + assertNotNull(test.getUnitType(UnitXCModuleKelvin.TYPE_KELVIN_ID).getTypeFlags()); } @Test public void testGetUnitTypeGroup() { - assertNotNull(test.getUnitGroup(UnitXCModuleTemperature.GROUP_ID)); + assertNotNull(test.getUnitGroup(UnitXCModuleKelvin.GROUP_ID)); } @Test(expected=NullPointerException.class) @@ -65,27 +65,22 @@ public class UnitXCManagerTest { @Test public void testGetUnitTypeGroupResultId() { - assertNotNull(test.getUnitGroup(UnitXCModuleTemperature.GROUP_ID).getId()); - } - - @Test - public void testGetUnitTypeGroupResultName() { - assertNotNull(test.getUnitGroup(UnitXCModuleTemperature.GROUP_ID).getName()); + assertNotNull(test.getUnitGroup(UnitXCModuleKelvin.GROUP_ID).getId()); } @Test public void testGetUnitTypeGroupResultDescription() { - assertNotNull(test.getUnitGroup(UnitXCModuleTemperature.GROUP_ID).getDescription()); + assertNotNull(test.getUnitGroup(UnitXCModuleKelvin.GROUP_ID).getDescription()); } @Test public void testGetUnitTypeResultTypeBaseTypeID() { - assertNotNull(test.getUnitGroup(UnitXCModuleTemperature.GROUP_ID).getBaseTypeId()); + assertNotNull(test.getUnitGroup(UnitXCModuleKelvin.GROUP_ID).getBaseTypeId()); } @Test public void testIsUnitTypeGroupTrue() { - assertTrue(test.isUnitGroup(UnitXCModuleTemperature.GROUP_ID)); + assertTrue(test.isUnitGroup(UnitXCModuleKelvin.GROUP_ID)); } @Test diff --git a/todo.md b/todo.md index a2e22c6..be616ad 100644 --- a/todo.md +++ b/todo.md @@ -6,7 +6,13 @@ ## Todo list -* write code. +- module names +- module load anno + deps +- multi parent compound types +- fix per scanning again +- fix symbol vs id +- per language unit types toevoegen see: meter vs metre + ## Ideas