summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Hopkins <masterofnumbers17@gmail.com>2019-10-16 16:50:04 -0400
committerAdrien Hopkins <masterofnumbers17@gmail.com>2019-10-16 16:50:04 -0400
commitdf06497dc4d7359de006c5885074f3356dbb81de (patch)
tree90585aeb6acebec109a3280f4e7c8e166947b26f
parentabe715a30844537693ae186308adcab62c66f121 (diff)
Added new constructors for BaseUnit and BaseDimension.
-rw-r--r--src/org/unitConverter/newUnits/BaseUnit.java18
-rw-r--r--src/org/unitConverter/newUnits/Unit.java50
-rw-r--r--src/org/unitConverter/newUnits/UnitPrefix.java22
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