diff --git a/bom/compile/pom.xml b/bom/compile/pom.xml
index 3a41f764d6e..f1dcf5df360 100644
--- a/bom/compile/pom.xml
+++ b/bom/compile/pom.xml
@@ -151,19 +151,19 @@
javax.measureunit-api
- 1.0
+ 2.1.2compile
- tec.uom
- uom-se
- 1.0.10
+ si.uom
+ si-units
+ 2.0.1compile
- tec.uom.lib
- uom-lib-common
- 1.0.3
+ tech.units
+ indriya
+ 2.1.2compile
diff --git a/bom/runtime/pom.xml b/bom/runtime/pom.xml
index 3061040328c..48c817b2341 100644
--- a/bom/runtime/pom.xml
+++ b/bom/runtime/pom.xml
@@ -436,22 +436,41 @@
+
+ jakarta.annotation
+ jakarta.annotation-api
+ 2.0.0
+ compile
+
+
+ jakarta.inject
+ jakarta.inject-api
+ 2.0.0
+ compile
+ javax.measureunit-api
- 1.0
+ 2.1.2compile
+
- tec.uom
- uom-se
- 1.0.10
+ org.openhab.osgiify
+ si.uom.si-units
+ 2.0.1compile
- tec.uom.lib
- uom-lib-common
- 1.0.3
+ si.uom
+ si-quantity
+ 2.0.1
+ compile
+
+
+ tech.units
+ indriya
+ 2.1.2compile
diff --git a/bundles/org.openhab.core.persistence/src/test/java/org/openhab/core/persistence/extensions/PersistenceExtensionsTest.java b/bundles/org.openhab.core.persistence/src/test/java/org/openhab/core/persistence/extensions/PersistenceExtensionsTest.java
index c88fbc24ae4..976b90f1f21 100644
--- a/bundles/org.openhab.core.persistence/src/test/java/org/openhab/core/persistence/extensions/PersistenceExtensionsTest.java
+++ b/bundles/org.openhab.core.persistence/src/test/java/org/openhab/core/persistence/extensions/PersistenceExtensionsTest.java
@@ -142,22 +142,22 @@ public void testHistoricStateQuantityType() {
ZonedDateTime.of(2012, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
assertThat(historicItem.getState(), is(instanceOf(QuantityType.class)));
- assertEquals("2012.0 °C", historicItem.getState().toString());
+ assertEquals("2012 °C", historicItem.getState().toString());
historicItem = PersistenceExtensions.historicState(quantityItem,
ZonedDateTime.of(2011, 12, 31, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
- assertEquals("2011.0 °C", historicItem.getState().toString());
+ assertEquals("2011 °C", historicItem.getState().toString());
historicItem = PersistenceExtensions.historicState(quantityItem,
ZonedDateTime.of(2011, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
- assertEquals("2011.0 °C", historicItem.getState().toString());
+ assertEquals("2011 °C", historicItem.getState().toString());
historicItem = PersistenceExtensions.historicState(quantityItem,
ZonedDateTime.of(2000, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
- assertEquals("2000.0 °C", historicItem.getState().toString());
+ assertEquals("2000 °C", historicItem.getState().toString());
// default persistence service
historicItem = PersistenceExtensions.historicState(quantityItem,
@@ -210,19 +210,19 @@ public void testMaximumSinceQuantityType() {
ZonedDateTime.of(2012, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
assertThat(historicItem.getState(), is(instanceOf(QuantityType.class)));
- assertEquals("1.0 °C", historicItem.getState().toString());
+ assertEquals("1 °C", historicItem.getState().toString());
historicItem = PersistenceExtensions.maximumSince(quantityItem,
ZonedDateTime.of(2005, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
- assertEquals("2012.0 °C", historicItem.getState().toString());
+ assertEquals("2012 °C", historicItem.getState().toString());
assertEquals(ZonedDateTime.of(2012, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), historicItem.getTimestamp());
// default persistence service
historicItem = PersistenceExtensions.maximumSince(quantityItem,
ZonedDateTime.of(2005, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()));
assertNotNull(historicItem);
- assertEquals("1.0 °C", historicItem.getState().toString());
+ assertEquals("1 °C", historicItem.getState().toString());
}
@Test
@@ -281,19 +281,19 @@ public void testMinimumSinceQuantityType() {
ZonedDateTime.of(1940, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
assertThat(historicItem.getState(), is(instanceOf(QuantityType.class)));
- assertEquals("5000.0 °C", historicItem.getState().toString());
+ assertEquals("5000 °C", historicItem.getState().toString());
historicItem = PersistenceExtensions.minimumSince(quantityItem,
ZonedDateTime.of(2005, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), TestPersistenceService.ID);
assertNotNull(historicItem);
- assertEquals("2005.0 °C", historicItem.getState().toString());
+ assertEquals("2005 °C", historicItem.getState().toString());
assertEquals(ZonedDateTime.of(2005, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()), historicItem.getTimestamp());
// default persistence service
historicItem = PersistenceExtensions.minimumSince(quantityItem,
ZonedDateTime.of(2005, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()));
assertNotNull(historicItem);
- assertEquals("5000.0 °C", historicItem.getState().toString());
+ assertEquals("5000 °C", historicItem.getState().toString());
}
@Test
@@ -601,22 +601,22 @@ public void testPreviousStateQuantityTypeNoSkip() {
TestPersistenceService.ID);
assertNotNull(prevStateItem);
assertThat(prevStateItem.getState(), is(instanceOf(QuantityType.class)));
- assertEquals("2012.0 °C", prevStateItem.getState().toString());
+ assertEquals("2012 °C", prevStateItem.getState().toString());
quantityItem.setState(QuantityType.valueOf(4321, SIUnits.CELSIUS));
prevStateItem = PersistenceExtensions.previousState(quantityItem, false, TestPersistenceService.ID);
assertNotNull(prevStateItem);
- assertEquals("2012.0 °C", prevStateItem.getState().toString());
+ assertEquals("2012 °C", prevStateItem.getState().toString());
quantityItem.setState(QuantityType.valueOf(2012, SIUnits.CELSIUS));
prevStateItem = PersistenceExtensions.previousState(quantityItem, false, TestPersistenceService.ID);
assertNotNull(prevStateItem);
- assertEquals("2012.0 °C", prevStateItem.getState().toString());
+ assertEquals("2012 °C", prevStateItem.getState().toString());
quantityItem.setState(QuantityType.valueOf(3025, SIUnits.CELSIUS));
prevStateItem = PersistenceExtensions.previousState(quantityItem, false, TestPersistenceService.ID);
assertNotNull(prevStateItem);
- assertEquals("2012.0 °C", prevStateItem.getState().toString());
+ assertEquals("2012 °C", prevStateItem.getState().toString());
// default persistence service
prevStateItem = PersistenceExtensions.previousState(quantityItem, false);
@@ -640,7 +640,7 @@ public void testPreviousStateQuantityTypeSkip() {
quantityItem.setState(QuantityType.valueOf(2012, SIUnits.CELSIUS));
HistoricItem prevStateItem = PersistenceExtensions.previousState(quantityItem, true, TestPersistenceService.ID);
assertNotNull(prevStateItem);
- assertEquals("2011.0 °C", prevStateItem.getState().toString());
+ assertEquals("2011 °C", prevStateItem.getState().toString());
// default persistence service
prevStateItem = PersistenceExtensions.previousState(quantityItem, true);
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemHysteresisStateProfile.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemHysteresisStateProfile.java
index 9177deb5d10..b0acffd83d4 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemHysteresisStateProfile.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemHysteresisStateProfile.java
@@ -32,7 +32,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import tec.uom.se.AbstractUnit;
+import tech.units.indriya.AbstractUnit;
/***
* This is the default implementation for a {@link SystemHysteresisStateProfile}.
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemRangeStateProfile.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemRangeStateProfile.java
index b3d05a78fac..8a4ae5399f9 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemRangeStateProfile.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/profiles/SystemRangeStateProfile.java
@@ -32,7 +32,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import tec.uom.se.AbstractUnit;
+import tech.units.indriya.AbstractUnit;
/***
* This is the default implementation for a {@link SystemRangeStateProfile}.
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityType.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityType.java
index c22c1e3a58c..dc0a45afaf5 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityType.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityType.java
@@ -24,6 +24,7 @@
import javax.measure.Dimension;
import javax.measure.IncommensurableException;
import javax.measure.Quantity;
+import javax.measure.Quantity.Scale;
import javax.measure.UnconvertibleException;
import javax.measure.Unit;
import javax.measure.UnitConverter;
@@ -41,9 +42,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import tec.uom.se.AbstractUnit;
-import tec.uom.se.function.QuantityFunctions;
-import tec.uom.se.quantity.Quantities;
+import tech.units.indriya.AbstractUnit;
+import tech.units.indriya.quantity.Quantities;
+import tech.uom.lib.common.function.QuantityFunctions;
/**
* The measure type extends DecimalType to handle physical unit measurement
@@ -97,7 +98,13 @@ public QuantityType(String value) {
// getQuantity needs a space between numeric value and unit
String formatted = String.join(" ", constituents);
- quantity = (Quantity) Quantities.getQuantity(formatted);
+ if (!formatted.contains(" ")) {
+ BigDecimal bd = new BigDecimal(value);
+ quantity = (Quantity) Quantities.getQuantity(bd, AbstractUnit.ONE, Scale.RELATIVE);
+ } else {
+ Quantity absoluteQuantity = (Quantity) Quantities.getQuantity(formatted);
+ quantity = Quantities.getQuantity(absoluteQuantity.getValue(), absoluteQuantity.getUnit(), Scale.RELATIVE);
+ }
}
/**
@@ -111,7 +118,7 @@ public QuantityType(String value) {
public QuantityType(Number value, Unit unit) {
// Avoid scientific notation for double
BigDecimal bd = new BigDecimal(value.toString());
- quantity = (Quantity) Quantities.getQuantity(bd, unit);
+ quantity = (Quantity) Quantities.getQuantity(bd, unit, Scale.RELATIVE);
}
/**
@@ -156,7 +163,7 @@ public boolean equals(@Nullable Object obj) {
return false;
}
QuantityType> other = (QuantityType>) obj;
- if (!quantity.getUnit().getDimension().equals(other.quantity.getUnit().getDimension())) {
+ if (!quantity.getUnit().isCompatible(other.quantity.getUnit())) {
return false;
} else if (compareTo((QuantityType) other) != 0) {
return false;
@@ -363,7 +370,7 @@ public QuantityType add(QuantityType state) {
* @return the negated value of this QuantityType.
*/
public QuantityType negate() {
- return new QuantityType<>(quantity.multiply(-1));
+ return new QuantityType<>(quantity.negate());
}
/**
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityTypeArithmeticGroupFunction.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityTypeArithmeticGroupFunction.java
index 45b9caeff41..871f262a7bf 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityTypeArithmeticGroupFunction.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/types/QuantityTypeArithmeticGroupFunction.java
@@ -92,8 +92,11 @@ public State calculate(@Nullable Set items) {
sum = itemState; // initialise the sum from the first item
count++;
} else {
- sum = sum.add(itemState);
- count++;
+ itemState = itemState.toUnit(sum.getUnit());
+ if (itemState != null) {
+ sum = sum.add(itemState);
+ count++;
+ }
}
}
}
@@ -131,8 +134,11 @@ public State calculate(@Nullable Set items) {
if (itemState != null) {
if (sum == null) {
sum = itemState; // initialise the sum from the first item
- } else if (sum.getUnit().isCompatible(itemState.getUnit())) {
- sum = sum.add(itemState);
+ } else {
+ itemState = itemState.toUnit(sum.getUnit());
+ if (itemState != null) {
+ sum = sum.add(itemState);
+ }
}
}
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/BinaryPrefix.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/BinaryPrefix.java
index 190eca52d36..030f48ba86c 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/BinaryPrefix.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/BinaryPrefix.java
@@ -20,9 +20,9 @@
import org.eclipse.jdt.annotation.NonNullByDefault;
-import tec.uom.lib.common.function.SymbolSupplier;
-import tec.uom.lib.common.function.UnitConverterSupplier;
-import tec.uom.se.function.RationalConverter;
+import tech.units.indriya.function.MultiplyConverter;
+import tech.uom.lib.common.function.SymbolSupplier;
+import tech.uom.lib.common.function.UnitConverterSupplier;
/**
* The binary prefixes used to derive units by specific powers of 2.
@@ -31,14 +31,14 @@
*/
@NonNullByDefault
public enum BinaryPrefix implements SymbolSupplier, UnitConverterSupplier {
- YOBI("Yi", new RationalConverter(BigInteger.valueOf(2).pow(80), BigInteger.ONE)),
- ZEBI("Zi", new RationalConverter(BigInteger.valueOf(2).pow(70), BigInteger.ONE)),
- EXBI("Ei", new RationalConverter(BigInteger.valueOf(2).pow(60), BigInteger.ONE)),
- PEBI("Pi", new RationalConverter(BigInteger.valueOf(2).pow(50), BigInteger.ONE)),
- TEBI("Ti", new RationalConverter(BigInteger.valueOf(2).pow(40), BigInteger.ONE)),
- GIBI("Gi", new RationalConverter(BigInteger.valueOf(2).pow(30), BigInteger.ONE)),
- MEBI("Mi", new RationalConverter(BigInteger.valueOf(2).pow(20), BigInteger.ONE)),
- KIBI("Ki", new RationalConverter(BigInteger.valueOf(2).pow(10), BigInteger.ONE));
+ YOBI("Yi", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(80), BigInteger.ONE)),
+ ZEBI("Zi", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(70), BigInteger.ONE)),
+ EXBI("Ei", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(60), BigInteger.ONE)),
+ PEBI("Pi", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(50), BigInteger.ONE)),
+ TEBI("Ti", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(40), BigInteger.ONE)),
+ GIBI("Gi", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(30), BigInteger.ONE)),
+ MEBI("Mi", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(20), BigInteger.ONE)),
+ KIBI("Ki", MultiplyConverter.ofRational(BigInteger.valueOf(2).pow(10), BigInteger.ONE));
/**
* The symbol of this prefix, as returned by {@link #getSymbol}.
@@ -61,7 +61,7 @@ public enum BinaryPrefix implements SymbolSupplier, UnitConverterSupplier {
* @param symbol the symbol of this prefix.
* @param converter the associated unit converter.
*/
- BinaryPrefix(String symbol, RationalConverter converter) {
+ BinaryPrefix(String symbol, MultiplyConverter converter) {
this.symbol = symbol;
this.converter = converter;
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/CustomUnits.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/CustomUnits.java
index 041d6a09dfb..efffe825f3e 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/CustomUnits.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/CustomUnits.java
@@ -12,7 +12,7 @@
*/
package org.openhab.core.library.unit;
-import tec.uom.se.AbstractSystemOfUnits;
+import tech.units.indriya.AbstractSystemOfUnits;
/**
* Base class for all custom unit classes added in openHAB.
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/ImperialUnits.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/ImperialUnits.java
index bb88bb3451e..b324e06bba6 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/ImperialUnits.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/ImperialUnits.java
@@ -23,13 +23,12 @@
import org.eclipse.jdt.annotation.NonNullByDefault;
-import tec.uom.se.format.SimpleUnitFormat;
-import tec.uom.se.function.AddConverter;
-import tec.uom.se.function.MultiplyConverter;
-import tec.uom.se.function.RationalConverter;
-import tec.uom.se.unit.ProductUnit;
-import tec.uom.se.unit.TransformedUnit;
-import tec.uom.se.unit.Units;
+import tech.units.indriya.format.SimpleUnitFormat;
+import tech.units.indriya.function.AddConverter;
+import tech.units.indriya.function.MultiplyConverter;
+import tech.units.indriya.unit.ProductUnit;
+import tech.units.indriya.unit.TransformedUnit;
+import tech.units.indriya.unit.Units;
/**
* Imperial units used for the United States and Liberia.
@@ -45,30 +44,30 @@ public final class ImperialUnits extends CustomUnits {
/** Additionally defined units to be used in openHAB **/
public static final Unit INCH_OF_MERCURY = addUnit(new TransformedUnit<>("inHg", Units.PASCAL,
- new RationalConverter(BigInteger.valueOf(3386388), BigInteger.valueOf(1000))));
+ MultiplyConverter.ofRational(BigInteger.valueOf(3386388), BigInteger.valueOf(1000))));
- public static final Unit FAHRENHEIT = addUnit(new TransformedUnit<>("°F", Units.KELVIN,
- new RationalConverter(BigInteger.valueOf(5), BigInteger.valueOf(9)).concatenate(new AddConverter(459.67))));
+ public static final Unit FAHRENHEIT = addUnit(
+ new TransformedUnit<>("°F", Units.KELVIN, MultiplyConverter
+ .ofRational(BigInteger.valueOf(5), BigInteger.valueOf(9)).concatenate(new AddConverter(459.67))));
public static final Unit MILES_PER_HOUR = addUnit(new TransformedUnit<>("mph", Units.KILOMETRE_PER_HOUR,
- new RationalConverter(BigInteger.valueOf(1609344), BigInteger.valueOf(1000000))));
+ MultiplyConverter.ofRational(BigInteger.valueOf(1609344), BigInteger.valueOf(1000000))));
/** Length **/
public static final Unit INCH = addUnit(new TransformedUnit<>("in", Units.METRE,
- new RationalConverter(BigInteger.valueOf(254), BigInteger.valueOf(10000))));
+ MultiplyConverter.ofRational(BigInteger.valueOf(254), BigInteger.valueOf(10000))));
- public static final Unit FOOT = addUnit(new TransformedUnit<>("ft", INCH, new MultiplyConverter(12.0)));
+ public static final Unit FOOT = addUnit(new TransformedUnit<>("ft", INCH, MultiplyConverter.of(12.0)));
- public static final Unit YARD = addUnit(new TransformedUnit<>("yd", FOOT, new MultiplyConverter(3.0)));
+ public static final Unit YARD = addUnit(new TransformedUnit<>("yd", FOOT, MultiplyConverter.of(3.0)));
- public static final Unit CHAIN = addUnit(new TransformedUnit<>("ch", YARD, new MultiplyConverter(22.0)));
+ public static final Unit CHAIN = addUnit(new TransformedUnit<>("ch", YARD, MultiplyConverter.of(22.0)));
- public static final Unit FURLONG = addUnit(
- new TransformedUnit<>("fur", CHAIN, new MultiplyConverter(10.0)));
+ public static final Unit FURLONG = addUnit(new TransformedUnit<>("fur", CHAIN, MultiplyConverter.of(10.0)));
- public static final Unit MILE = addUnit(new TransformedUnit<>("mi", FURLONG, new MultiplyConverter(8.0)));
+ public static final Unit MILE = addUnit(new TransformedUnit<>("mi", FURLONG, MultiplyConverter.of(8.0)));
- public static final Unit LEAGUE = addUnit(new TransformedUnit<>("lea", MILE, new MultiplyConverter(3.0)));
+ public static final Unit LEAGUE = addUnit(new TransformedUnit<>("lea", MILE, MultiplyConverter.of(3.0)));
public static final Unit SQUARE_FOOT = addUnit(new ProductUnit<>(FOOT.multiply(FOOT)));
public static final Unit CUBIC_FOOT = addUnit(new ProductUnit<>(SQUARE_FOOT.multiply(FOOT)));
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/MetricPrefix.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/MetricPrefix.java
index a9a6d40be5f..887a6517945 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/MetricPrefix.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/MetricPrefix.java
@@ -19,7 +19,7 @@
/**
* The metric prefixes used to derive units by specific powers of 10. This delegates to the enum instances of
- * {@link tec.uom.se.unit.MetricPrefix}.
+ * {@link javax.measure.MetricPrefix}.
*
* @author Henning Treu - Initial contribution
*/
@@ -27,82 +27,82 @@
public class MetricPrefix {
public static > Unit YOTTA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.YOTTA(unit);
+ return javax.measure.MetricPrefix.YOTTA(unit);
}
public static > Unit ZETTA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.ZETTA(unit);
+ return javax.measure.MetricPrefix.ZETTA(unit);
}
public static > Unit EXA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.EXA(unit);
+ return javax.measure.MetricPrefix.EXA(unit);
}
public static > Unit PETA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.PETA(unit);
+ return javax.measure.MetricPrefix.PETA(unit);
}
public static > Unit TERA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.TERA(unit);
+ return javax.measure.MetricPrefix.TERA(unit);
}
public static > Unit GIGA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.GIGA(unit);
+ return javax.measure.MetricPrefix.GIGA(unit);
}
public static > Unit MEGA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.MEGA(unit);
+ return javax.measure.MetricPrefix.MEGA(unit);
}
public static > Unit KILO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.KILO(unit);
+ return javax.measure.MetricPrefix.KILO(unit);
}
public static > Unit HECTO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.HECTO(unit);
+ return javax.measure.MetricPrefix.HECTO(unit);
}
public static > Unit DEKA(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.DEKA(unit);
+ return javax.measure.MetricPrefix.DEKA(unit);
}
public static > Unit DECI(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.DECI(unit);
+ return javax.measure.MetricPrefix.DECI(unit);
}
public static > Unit CENTI(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.CENTI(unit);
+ return javax.measure.MetricPrefix.CENTI(unit);
}
public static > Unit MILLI(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.MILLI(unit);
+ return javax.measure.MetricPrefix.MILLI(unit);
}
public static > Unit MICRO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.MICRO(unit);
+ return javax.measure.MetricPrefix.MICRO(unit);
}
public static > Unit NANO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.NANO(unit);
+ return javax.measure.MetricPrefix.NANO(unit);
}
public static > Unit PICO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.PICO(unit);
+ return javax.measure.MetricPrefix.PICO(unit);
}
public static > Unit FEMTO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.FEMTO(unit);
+ return javax.measure.MetricPrefix.FEMTO(unit);
}
public static > Unit ATTO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.ATTO(unit);
+ return javax.measure.MetricPrefix.ATTO(unit);
}
public static > Unit ZEPTO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.ZEPTO(unit);
+ return javax.measure.MetricPrefix.ZEPTO(unit);
}
public static > Unit YOCTO(Unit unit) {
- return tec.uom.se.unit.MetricPrefix.YOCTO(unit);
+ return javax.measure.MetricPrefix.YOCTO(unit);
}
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/SIUnits.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/SIUnits.java
index d75fa317b45..de4886f0fb1 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/SIUnits.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/SIUnits.java
@@ -24,8 +24,8 @@
import org.eclipse.jdt.annotation.NonNullByDefault;
-import tec.uom.se.format.SimpleUnitFormat;
-import tec.uom.se.unit.Units;
+import tech.units.indriya.format.SimpleUnitFormat;
+import tech.units.indriya.unit.Units;
/**
* Delegate SI units to {@link Units} to hide this dependency from the rest of openHAB.
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java
index 0bd10b3a2f9..f63b2b0585c 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java
@@ -57,16 +57,15 @@
import org.openhab.core.library.dimension.Intensity;
import org.openhab.core.library.dimension.VolumetricFlowRate;
-import tec.uom.se.AbstractUnit;
-import tec.uom.se.format.SimpleUnitFormat;
-import tec.uom.se.function.ExpConverter;
-import tec.uom.se.function.LogConverter;
-import tec.uom.se.function.MultiplyConverter;
-import tec.uom.se.function.PiMultiplierConverter;
-import tec.uom.se.function.RationalConverter;
-import tec.uom.se.unit.AlternateUnit;
-import tec.uom.se.unit.ProductUnit;
-import tec.uom.se.unit.TransformedUnit;
+import si.uom.NonSI;
+import tech.units.indriya.AbstractUnit;
+import tech.units.indriya.format.SimpleUnitFormat;
+import tech.units.indriya.function.ExpConverter;
+import tech.units.indriya.function.LogConverter;
+import tech.units.indriya.function.MultiplyConverter;
+import tech.units.indriya.unit.AlternateUnit;
+import tech.units.indriya.unit.ProductUnit;
+import tech.units.indriya.unit.TransformedUnit;
/**
* Delegate common units to {@link Units} to hide this dependency from the rest of openHAB.
@@ -82,109 +81,112 @@ public final class Units extends CustomUnits {
// Alphabetical ordered by Unit.
public static final Unit METRE_PER_SQUARE_SECOND = addUnit(
- tec.uom.se.unit.Units.METRE_PER_SQUARE_SECOND);
+ tech.units.indriya.unit.Units.METRE_PER_SQUARE_SECOND);
public static final Unit STANDARD_GRAVITY = addUnit(METRE_PER_SQUARE_SECOND.multiply(9.80665));
- public static final Unit MOLE = addUnit(tec.uom.se.unit.Units.MOLE);
+ public static final Unit MOLE = addUnit(tech.units.indriya.unit.Units.MOLE);
+ public static final Unit LITRE = addUnit(tech.units.indriya.unit.Units.LITRE);
@SuppressWarnings("unchecked")
- public static final Unit DEUTSCHE_HAERTE = addUnit(
- new TransformedUnit<>("°dH", (Unit) MetricPrefix.MILLI(tec.uom.se.unit.Units.MOLE)
- .divide(tec.uom.se.unit.Units.LITRE), RationalConverter.of(5.6, 1)));
- public static final Unit DEGREE_ANGLE = addUnit(new TransformedUnit<>(tec.uom.se.unit.Units.RADIAN,
- new PiMultiplierConverter().concatenate(new RationalConverter(BigInteger.ONE, BigInteger.valueOf(180)))));
- public static final Unit RADIAN = addUnit(tec.uom.se.unit.Units.RADIAN);
- public static final Unit DOBSON_UNIT = addUnit(new ProductUnit(MetricPrefix
- .MILLI(tec.uom.se.unit.Units.MOLE).multiply(0.4462).divide(tec.uom.se.unit.Units.SQUARE_METRE)));
- public static final Unit KATAL = addUnit(tec.uom.se.unit.Units.KATAL);
- public static final Unit KILOGRAM_PER_CUBICMETRE = addUnit(
- new ProductUnit(tec.uom.se.unit.Units.KILOGRAM.divide(tec.uom.se.unit.Units.CUBIC_METRE)));
+ public static final Unit DEUTSCHE_HAERTE = addUnit(new TransformedUnit<>("°dH",
+ (Unit) MetricPrefix.MILLI(Units.MOLE).divide(Units.LITRE), MultiplyConverter.of(5.6)));
+ public static final Unit DEGREE_ANGLE = addUnit(NonSI.DEGREE_ANGLE);
+ public static final Unit RADIAN = addUnit(tech.units.indriya.unit.Units.RADIAN);
+ public static final Unit DOBSON_UNIT = addUnit(
+ new ProductUnit(MetricPrefix.MILLI(tech.units.indriya.unit.Units.MOLE).multiply(0.4462)
+ .divide(tech.units.indriya.unit.Units.SQUARE_METRE)));
+ public static final Unit KATAL = addUnit(tech.units.indriya.unit.Units.KATAL);
+ public static final Unit KILOGRAM_PER_CUBICMETRE = addUnit(new ProductUnit(
+ tech.units.indriya.unit.Units.KILOGRAM.divide(tech.units.indriya.unit.Units.CUBIC_METRE)));
public static final Unit MICROGRAM_PER_CUBICMETRE = addUnit(new TransformedUnit<>(KILOGRAM_PER_CUBICMETRE,
- new RationalConverter(BigInteger.ONE, BigInteger.valueOf(1000000000))));
+ MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000000))));
public static final Unit ONE = addUnit(AbstractUnit.ONE);
- public static final Unit PERCENT = addUnit(tec.uom.se.unit.Units.PERCENT);
+ public static final Unit PERCENT = addUnit(tech.units.indriya.unit.Units.PERCENT);
public static final Unit PARTS_PER_BILLION = addUnit(
- new TransformedUnit<>(ONE, new RationalConverter(BigInteger.ONE, BigInteger.valueOf(1000000000))));
+ new TransformedUnit<>(ONE, MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000000))));
public static final Unit PARTS_PER_MILLION = addUnit(
- new TransformedUnit<>(ONE, new RationalConverter(BigInteger.ONE, BigInteger.valueOf(1000000))));
+ new TransformedUnit<>(ONE, MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000))));
public static final Unit DECIBEL = addUnit(ONE.transform(
- new LogConverter(10).inverse().concatenate(new RationalConverter(BigInteger.ONE, BigInteger.TEN))));
- public static final Unit AMPERE = addUnit(tec.uom.se.unit.Units.AMPERE);
- public static final Unit FARAD = addUnit(tec.uom.se.unit.Units.FARAD);
- public static final Unit COULOMB = addUnit(tec.uom.se.unit.Units.COULOMB);
- public static final Unit AMPERE_HOUR = addUnit(tec.uom.se.unit.Units.COULOMB.multiply(3600));
+ new LogConverter(10).inverse().concatenate(MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.TEN))));
+ public static final Unit AMPERE = addUnit(tech.units.indriya.unit.Units.AMPERE);
+ public static final Unit FARAD = addUnit(tech.units.indriya.unit.Units.FARAD);
+ public static final Unit COULOMB = addUnit(tech.units.indriya.unit.Units.COULOMB);
+ public static final Unit AMPERE_HOUR = addUnit(
+ tech.units.indriya.unit.Units.COULOMB.multiply(3600));
public static final Unit MILLIAMPERE_HOUR = addUnit(MetricPrefix.MILLI(AMPERE_HOUR));
- public static final Unit SIEMENS = addUnit(tec.uom.se.unit.Units.SIEMENS);
- public static final Unit SIEMENS_PER_METRE = addUnit(
- new ProductUnit(tec.uom.se.unit.Units.SIEMENS.divide(tec.uom.se.unit.Units.METRE)));
- public static final Unit HENRY = addUnit(tec.uom.se.unit.Units.HENRY);
- public static final Unit VOLT = addUnit(tec.uom.se.unit.Units.VOLT);
- public static final Unit OHM = addUnit(tec.uom.se.unit.Units.OHM);
- public static final Unit JOULE = addUnit(tec.uom.se.unit.Units.JOULE);
+ public static final Unit SIEMENS = addUnit(tech.units.indriya.unit.Units.SIEMENS);
+ public static final Unit SIEMENS_PER_METRE = addUnit(new ProductUnit(
+ tech.units.indriya.unit.Units.SIEMENS.divide(tech.units.indriya.unit.Units.METRE)));
+ public static final Unit HENRY = addUnit(tech.units.indriya.unit.Units.HENRY);
+ public static final Unit VOLT = addUnit(tech.units.indriya.unit.Units.VOLT);
+ public static final Unit OHM = addUnit(tech.units.indriya.unit.Units.OHM);
+ public static final Unit JOULE = addUnit(tech.units.indriya.unit.Units.JOULE);
public static final Unit WATT_SECOND = addUnit(
- new ProductUnit<>(tec.uom.se.unit.Units.WATT.multiply(tec.uom.se.unit.Units.SECOND)));
+ new ProductUnit<>(tech.units.indriya.unit.Units.WATT.multiply(tech.units.indriya.unit.Units.SECOND)));
public static final Unit WATT_HOUR = addUnit(
- new ProductUnit<>(tec.uom.se.unit.Units.WATT.multiply(tec.uom.se.unit.Units.HOUR)));
+ new ProductUnit<>(tech.units.indriya.unit.Units.WATT.multiply(tech.units.indriya.unit.Units.HOUR)));
public static final Unit KILOWATT_HOUR = addUnit(MetricPrefix.KILO(WATT_HOUR));
public static final Unit MEGAWATT_HOUR = addUnit(MetricPrefix.MEGA(WATT_HOUR));
- public static final Unit VAR = addUnit(new AlternateUnit<>(tec.uom.se.unit.Units.WATT, "var"));
+ public static final Unit VAR = addUnit(new AlternateUnit<>(tech.units.indriya.unit.Units.WATT, "var"));
public static final Unit KILOVAR = addUnit(MetricPrefix.KILO(VAR));
- public static final Unit VAR_HOUR = addUnit(new ProductUnit<>(VAR.multiply(tec.uom.se.unit.Units.HOUR)),
- Energy.class);
+ public static final Unit VAR_HOUR = addUnit(
+ new ProductUnit<>(VAR.multiply(tech.units.indriya.unit.Units.HOUR)), Energy.class);
public static final Unit KILOVAR_HOUR = addUnit(MetricPrefix.KILO(VAR_HOUR));
- public static final Unit VOLT_AMPERE = addUnit(new AlternateUnit<>(tec.uom.se.unit.Units.WATT, "VA"));
+ public static final Unit VOLT_AMPERE = addUnit(
+ new AlternateUnit<>(tech.units.indriya.unit.Units.WATT, "VA"));
+ public static final Unit KILOVOLT_AMPERE = addUnit(MetricPrefix.KILO(VOLT_AMPERE));
public static final Unit VOLT_AMPERE_HOUR = addUnit(
- new ProductUnit<>(VOLT_AMPERE.multiply(tec.uom.se.unit.Units.HOUR)), Energy.class);
- public static final Unit NEWTON = addUnit(tec.uom.se.unit.Units.NEWTON);
- public static final Unit HERTZ = addUnit(tec.uom.se.unit.Units.HERTZ);
+ new ProductUnit<>(VOLT_AMPERE.multiply(tech.units.indriya.unit.Units.HOUR)), Energy.class);
+ public static final Unit NEWTON = addUnit(tech.units.indriya.unit.Units.NEWTON);
+ public static final Unit HERTZ = addUnit(tech.units.indriya.unit.Units.HERTZ);
public static final Unit IRRADIANCE = addUnit(
- new ProductUnit<>(tec.uom.se.unit.Units.WATT.divide(tec.uom.se.unit.Units.SQUARE_METRE)));
+ new ProductUnit<>(tech.units.indriya.unit.Units.WATT.divide(tech.units.indriya.unit.Units.SQUARE_METRE)));
public static final Unit MICROWATT_PER_SQUARE_CENTIMETRE = addUnit(
- new TransformedUnit<>(IRRADIANCE, new RationalConverter(BigInteger.ONE, BigInteger.valueOf(100))));
- public static final Unit LUX = addUnit(tec.uom.se.unit.Units.LUX);
- public static final Unit LUMEN = addUnit(tec.uom.se.unit.Units.LUMEN);
- public static final Unit CANDELA = addUnit(tec.uom.se.unit.Units.CANDELA);
- public static final Unit WEBER = addUnit(tec.uom.se.unit.Units.WEBER);
- public static final Unit TESLA = addUnit(tec.uom.se.unit.Units.TESLA);
- public static final Unit WATT = addUnit(tec.uom.se.unit.Units.WATT);
+ new TransformedUnit<>(IRRADIANCE, MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(100))));
+ public static final Unit LUX = addUnit(tech.units.indriya.unit.Units.LUX);
+ public static final Unit LUMEN = addUnit(tech.units.indriya.unit.Units.LUMEN);
+ public static final Unit CANDELA = addUnit(tech.units.indriya.unit.Units.CANDELA);
+ public static final Unit WEBER = addUnit(tech.units.indriya.unit.Units.WEBER);
+ public static final Unit TESLA = addUnit(tech.units.indriya.unit.Units.TESLA);
+ public static final Unit WATT = addUnit(tech.units.indriya.unit.Units.WATT);
public static final Unit DECIBEL_MILLIWATTS = new TransformedUnit<>("dBm", MetricPrefix.MILLI(WATT),
- new ExpConverter(10.0).concatenate(new MultiplyConverter(0.1)));
+ new ExpConverter(10.0).concatenate(MultiplyConverter.of(0.1)));
public static final Unit MILLIMETRE_OF_MERCURY = addUnit(
- new TransformedUnit<>("mmHg", tec.uom.se.unit.Units.PASCAL,
- new RationalConverter(BigInteger.valueOf(133322368), BigInteger.valueOf(1000000))));
- public static final Unit BAR = addUnit(new TransformedUnit<>("bar", tec.uom.se.unit.Units.PASCAL,
- new RationalConverter(BigInteger.valueOf(100000), BigInteger.ONE)));
+ new TransformedUnit<>("mmHg", tech.units.indriya.unit.Units.PASCAL,
+ MultiplyConverter.ofRational(BigInteger.valueOf(133322368), BigInteger.valueOf(1000000))));
+ public static final Unit BAR = addUnit(new TransformedUnit<>("bar", tech.units.indriya.unit.Units.PASCAL,
+ MultiplyConverter.ofRational(BigInteger.valueOf(100000), BigInteger.ONE)));
public static final Unit MILLIBAR = addUnit(MetricPrefix.MILLI(BAR));
- public static final Unit BECQUEREL = addUnit(tec.uom.se.unit.Units.BECQUEREL);
- public static final Unit BECQUEREL_PER_CUBIC_METRE = addUnit(
- new ProductUnit<>(tec.uom.se.unit.Units.BECQUEREL.divide(tec.uom.se.unit.Units.CUBIC_METRE)));
- public static final Unit GRAY = addUnit(tec.uom.se.unit.Units.GRAY);
- public static final Unit SIEVERT = addUnit(tec.uom.se.unit.Units.SIEVERT);
+ public static final Unit BECQUEREL = addUnit(tech.units.indriya.unit.Units.BECQUEREL);
+ public static final Unit BECQUEREL_PER_CUBIC_METRE = addUnit(new ProductUnit<>(
+ tech.units.indriya.unit.Units.BECQUEREL.divide(tech.units.indriya.unit.Units.CUBIC_METRE)));
+ public static final Unit GRAY = addUnit(tech.units.indriya.unit.Units.GRAY);
+ public static final Unit SIEVERT = addUnit(tech.units.indriya.unit.Units.SIEVERT);
public static final Unit MILLIMETRE_PER_HOUR = addUnit(
- new TransformedUnit<>("mm/h", tec.uom.se.unit.Units.KILOMETRE_PER_HOUR,
- new RationalConverter(BigInteger.ONE, BigInteger.valueOf(1000000))));
+ new TransformedUnit<>("mm/h", tech.units.indriya.unit.Units.KILOMETRE_PER_HOUR,
+ MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000))));
public static final Unit INCHES_PER_HOUR = addUnit(new TransformedUnit<>("in/h",
- ImperialUnits.MILES_PER_HOUR, new RationalConverter(BigInteger.ONE, BigInteger.valueOf(63360))));
- public static final Unit METRE_PER_SECOND = addUnit(tec.uom.se.unit.Units.METRE_PER_SECOND);
- public static final Unit KNOT = addUnit(new TransformedUnit<>("kn", tec.uom.se.unit.Units.KILOMETRE_PER_HOUR,
- new RationalConverter(BigInteger.valueOf(1852), BigInteger.valueOf(1000))));
- public static final Unit STERADIAN = addUnit(tec.uom.se.unit.Units.STERADIAN);
- public static final Unit KELVIN = addUnit(tec.uom.se.unit.Units.KELVIN);
- public static final Unit