diff options
author | Adrien Hopkins <masterofnumbers17@gmail.com> | 2019-10-16 16:50:04 -0400 |
---|---|---|
committer | Adrien Hopkins <masterofnumbers17@gmail.com> | 2019-10-16 16:50:04 -0400 |
commit | df06497dc4d7359de006c5885074f3356dbb81de (patch) | |
tree | 90585aeb6acebec109a3280f4e7c8e166947b26f | |
parent | abe715a30844537693ae186308adcab62c66f121 (diff) |
Added new constructors for BaseUnit and BaseDimension.
-rw-r--r-- | src/org/unitConverter/newUnits/BaseUnit.java | 18 | ||||
-rw-r--r-- | src/org/unitConverter/newUnits/Unit.java | 50 | ||||
-rw-r--r-- | src/org/unitConverter/newUnits/UnitPrefix.java | 22 |
3 files changed, 59 insertions, 31 deletions
diff --git a/src/org/unitConverter/newUnits/BaseUnit.java b/src/org/unitConverter/newUnits/BaseUnit.java index 2c4d748..6a57faa 100644 --- a/src/org/unitConverter/newUnits/BaseUnit.java +++ b/src/org/unitConverter/newUnits/BaseUnit.java @@ -18,8 +18,6 @@ package org.unitConverter.newUnits; import java.util.Objects; -import org.unitConverter.dimension.BaseDimension; - /** * A unit that other units are defined by. * @@ -27,6 +25,22 @@ import org.unitConverter.dimension.BaseDimension; * @since 2019-10-16 */ public final class BaseUnit extends Unit { + /** + * Gets a base unit from the dimension it measures, its name and its symbol. + * + * @param dimension + * dimension measured by this unit + * @param name + * name of unit + * @param symbol + * symbol of unit + * @return base unit + * @since 2019-10-16 + */ + public static BaseUnit valueOf(final BaseDimension dimension, final String name, final String symbol) { + return new BaseUnit(dimension, name, symbol); + } + private final BaseDimension dimension; private final String name; private final String symbol; diff --git a/src/org/unitConverter/newUnits/Unit.java b/src/org/unitConverter/newUnits/Unit.java index feeb25e..339ab95 100644 --- a/src/org/unitConverter/newUnits/Unit.java +++ b/src/org/unitConverter/newUnits/Unit.java @@ -16,6 +16,8 @@ */ package org.unitConverter.newUnits; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; import java.util.function.DoubleUnaryOperator; @@ -62,12 +64,12 @@ public abstract class Unit { */ private final ObjectProduct<BaseUnit> unitBase; - // /** - // * Cache storing the result of getDimension() - // * - // * @since 2019-10-16 - // */ - // private transient ObjectProduct<BaseDimension> dimension = null; + /** + * Cache storing the result of getDimension() + * + * @since 2019-10-16 + */ + private transient ObjectProduct<BaseDimension> dimension = null; /** * A constructor that constructs {@code BaseUnit} instances. @@ -177,24 +179,24 @@ public abstract class Unit { return this.unitBase; } - // /** - // * @return dimension measured by this unit - // * @since 2018-12-22 - // * @since v0.1.0 - // */ - // private final ObjectProduct<BaseDimension> getDimension() { - // if (this.dimension == null) { - // final Map<BaseUnit, Integer> mapping = this.unitBase.exponentMap(); - // final Map<BaseDimension, Integer> dimensionMap = new HashMap<>(); - // - // for (final BaseUnit key : mapping.keySet()) { - // dimensionMap.put(key.getBaseDimension(), mapping.get(key)); - // } - // - // this.dimension = ObjectProduct.fromExponentMapping(dimensionMap); - // } - // return this.dimension; - // } + /** + * @return dimension measured by this unit + * @since 2018-12-22 + * @since v0.1.0 + */ + public final ObjectProduct<BaseDimension> getDimension() { + if (this.dimension == null) { + final Map<BaseUnit, Integer> mapping = this.unitBase.exponentMap(); + final Map<BaseDimension, Integer> dimensionMap = new HashMap<>(); + + for (final BaseUnit key : mapping.keySet()) { + dimensionMap.put(key.getBaseDimension(), mapping.get(key)); + } + + this.dimension = ObjectProduct.fromExponentMapping(dimensionMap); + } + return this.dimension; + } @Override public String toString() { diff --git a/src/org/unitConverter/newUnits/UnitPrefix.java b/src/org/unitConverter/newUnits/UnitPrefix.java index 905ca19..5608098 100644 --- a/src/org/unitConverter/newUnits/UnitPrefix.java +++ b/src/org/unitConverter/newUnits/UnitPrefix.java @@ -26,6 +26,18 @@ import org.unitConverter.math.DecimalComparison; */ public final class UnitPrefix { /** + * Gets a {@code UnitPrefix} from a multiplier + * + * @param multiplier + * multiplier of prefix + * @return prefix + * @since 2019-10-16 + */ + public static UnitPrefix valueOf(final double multiplier) { + return new UnitPrefix(multiplier); + } + + /** * The number that this prefix multiplies units by * * @since 2019-10-16 @@ -52,7 +64,7 @@ public final class UnitPrefix { * @since 2019-10-16 */ public UnitPrefix dividedBy(final double divisor) { - return new UnitPrefix(this.getMultiplier() / divisor); + return valueOf(this.getMultiplier() / divisor); } /** @@ -65,7 +77,7 @@ public final class UnitPrefix { * @since v0.2.0 */ public UnitPrefix dividedBy(final UnitPrefix other) { - return new UnitPrefix(this.getMultiplier() / other.getMultiplier()); + return valueOf(this.getMultiplier() / other.getMultiplier()); } @Override @@ -98,7 +110,7 @@ public final class UnitPrefix { * @since 2019-10-16 */ public UnitPrefix times(final double multiplicand) { - return new UnitPrefix(this.getMultiplier() * multiplicand); + return valueOf(this.getMultiplier() * multiplicand); } /** @@ -111,7 +123,7 @@ public final class UnitPrefix { * @since v0.2.0 */ public UnitPrefix times(final UnitPrefix other) { - return new UnitPrefix(this.getMultiplier() * other.getMultiplier()); + return valueOf(this.getMultiplier() * other.getMultiplier()); } /** @@ -124,7 +136,7 @@ public final class UnitPrefix { * @since v0.2.0 */ public UnitPrefix toExponent(final double exponent) { - return new UnitPrefix(Math.pow(this.getMultiplier(), exponent)); + return valueOf(Math.pow(this.getMultiplier(), exponent)); } @Override |