summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2022-04-12 15:17:12 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2022-04-16 15:42:12 -0500
commit4ad68a29f84538d3fb19eec8e0622731f5a5d7c8 (patch)
treed3028d6a10c689abfdc2ed32f630371af22a33dc /src
parentb1affe92460637211f560d70ee5c8770f3952822 (diff)
Removed NamedObjectProduct in favour of the regular ObjectProduct
Diffstat (limited to 'src')
-rw-r--r--src/main/java/sevenUnits/unit/Metric.java21
-rw-r--r--src/main/java/sevenUnits/unit/Unit.java4
-rw-r--r--src/main/java/sevenUnits/unit/UnitDatabase.java12
-rw-r--r--src/main/java/sevenUnits/utils/NameSymbol.java2
-rw-r--r--src/main/java/sevenUnits/utils/NamedObjectProduct.java51
-rw-r--r--src/main/java/sevenUnits/utils/ObjectProduct.java30
-rw-r--r--src/test/java/sevenUnitsGUI/PresenterTest.java4
7 files changed, 46 insertions, 78 deletions
diff --git a/src/main/java/sevenUnits/unit/Metric.java b/src/main/java/sevenUnits/unit/Metric.java
index 7ede085..05e82ba 100644
--- a/src/main/java/sevenUnits/unit/Metric.java
+++ b/src/main/java/sevenUnits/unit/Metric.java
@@ -19,7 +19,6 @@ package sevenUnits.unit;
import java.util.Set;
import sevenUnits.utils.NameSymbol;
-import sevenUnits.utils.NamedObjectProduct;
import sevenUnits.utils.ObjectProduct;
/**
@@ -115,29 +114,29 @@ public final class Metric {
public static final class Dimensions {
public static final ObjectProduct<BaseDimension> EMPTY = ObjectProduct
.empty();
- public static final NamedObjectProduct<BaseDimension> LENGTH = ObjectProduct
+ public static final ObjectProduct<BaseDimension> LENGTH = ObjectProduct
.oneOf(BaseDimensions.LENGTH)
.withName(NameSymbol.of("Length", "L"));
- public static final NamedObjectProduct<BaseDimension> MASS = ObjectProduct
+ public static final ObjectProduct<BaseDimension> MASS = ObjectProduct
.oneOf(BaseDimensions.MASS).withName(NameSymbol.of("Mass", "M"));
- public static final NamedObjectProduct<BaseDimension> TIME = ObjectProduct
+ public static final ObjectProduct<BaseDimension> TIME = ObjectProduct
.oneOf(BaseDimensions.TIME).withName(NameSymbol.of("Time", "T"));
- public static final NamedObjectProduct<BaseDimension> ELECTRIC_CURRENT = ObjectProduct
+ public static final ObjectProduct<BaseDimension> ELECTRIC_CURRENT = ObjectProduct
.oneOf(BaseDimensions.ELECTRIC_CURRENT)
.withName(NameSymbol.of("Current", "I"));
- public static final NamedObjectProduct<BaseDimension> TEMPERATURE = ObjectProduct
+ public static final ObjectProduct<BaseDimension> TEMPERATURE = ObjectProduct
.oneOf(BaseDimensions.TEMPERATURE)
.withName(NameSymbol.of("Temperature", "\u0398"));
- public static final NamedObjectProduct<BaseDimension> QUANTITY = ObjectProduct
+ public static final ObjectProduct<BaseDimension> QUANTITY = ObjectProduct
.oneOf(BaseDimensions.QUANTITY)
.withName(NameSymbol.of("Quantity", "N"));
- public static final NamedObjectProduct<BaseDimension> LUMINOUS_INTENSITY = ObjectProduct
+ public static final ObjectProduct<BaseDimension> LUMINOUS_INTENSITY = ObjectProduct
.oneOf(BaseDimensions.LUMINOUS_INTENSITY)
.withName(NameSymbol.of("Luminous Intensity", "J"));
- public static final NamedObjectProduct<BaseDimension> INFORMATION = ObjectProduct
+ public static final ObjectProduct<BaseDimension> INFORMATION = ObjectProduct
.oneOf(BaseDimensions.INFORMATION)
.withName(NameSymbol.ofName("Information"));
- public static final NamedObjectProduct<BaseDimension> CURRENCY = ObjectProduct
+ public static final ObjectProduct<BaseDimension> CURRENCY = ObjectProduct
.oneOf(BaseDimensions.CURRENCY)
.withName(NameSymbol.ofName("Currency"));
@@ -146,7 +145,7 @@ public final class Metric {
.times(LENGTH);
public static final ObjectProduct<BaseDimension> VOLUME = AREA
.times(LENGTH);
- public static final NamedObjectProduct<BaseDimension> VELOCITY = LENGTH
+ public static final ObjectProduct<BaseDimension> VELOCITY = LENGTH
.dividedBy(TIME).withName(NameSymbol.ofName("Velocity"));
public static final ObjectProduct<BaseDimension> ACCELERATION = VELOCITY
.dividedBy(TIME);
diff --git a/src/main/java/sevenUnits/unit/Unit.java b/src/main/java/sevenUnits/unit/Unit.java
index 826b59b..14478ba 100644
--- a/src/main/java/sevenUnits/unit/Unit.java
+++ b/src/main/java/sevenUnits/unit/Unit.java
@@ -354,8 +354,8 @@ public abstract class Unit implements Nameable {
* @since 2022-03-10
*/
public String toDefinitionString() {
- if (this.unitBase instanceof Nameable)
- return "derived from " + ((Nameable) this.unitBase).getName();
+ if (!this.unitBase.getNameSymbol().isEmpty())
+ return "derived from " + this.unitBase.getName();
else
return "derived from "
+ this.getBase().toString(BaseUnit::getShortName);
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java
index bf6ae64..5591d7d 100644
--- a/src/main/java/sevenUnits/unit/UnitDatabase.java
+++ b/src/main/java/sevenUnits/unit/UnitDatabase.java
@@ -48,7 +48,6 @@ import sevenUnits.utils.ConditionalExistenceCollections;
import sevenUnits.utils.DecimalComparison;
import sevenUnits.utils.ExpressionParser;
import sevenUnits.utils.NameSymbol;
-import sevenUnits.utils.NamedObjectProduct;
import sevenUnits.utils.ObjectProduct;
import sevenUnits.utils.UncertainDouble;
@@ -1199,7 +1198,7 @@ public final class UnitDatabase {
* @since 2019-03-14
* @since v0.2.0
*/
- private final Map<String, NamedObjectProduct<BaseDimension>> dimensions;
+ private final Map<String, ObjectProduct<BaseDimension>> dimensions;
/**
* A map mapping strings to units (including prefixes)
@@ -1317,11 +1316,10 @@ public final class UnitDatabase {
final ObjectProduct<BaseDimension> dimension) {
Objects.requireNonNull(name, "name may not be null");
Objects.requireNonNull(dimension, "dimension may not be null");
- if (dimension instanceof NamedObjectProduct) {
- this.dimensions.put(name,
- (NamedObjectProduct<BaseDimension>) dimension);
+ if (!dimension.getNameSymbol().equals(NameSymbol.EMPTY)) {
+ this.dimensions.put(name, dimension);
} else {
- final NamedObjectProduct<BaseDimension> namedDimension = dimension
+ final ObjectProduct<BaseDimension> namedDimension = dimension
.withName(NameSymbol.ofName(name));
this.dimensions.put(name, namedDimension);
}
@@ -1530,7 +1528,7 @@ public final class UnitDatabase {
* @since 2019-04-13
* @since v0.2.0
*/
- public Map<String, NamedObjectProduct<BaseDimension>> dimensionMap() {
+ public Map<String, ObjectProduct<BaseDimension>> dimensionMap() {
return Collections.unmodifiableMap(this.dimensions);
}
diff --git a/src/main/java/sevenUnits/utils/NameSymbol.java b/src/main/java/sevenUnits/utils/NameSymbol.java
index 41cf41d..955f980 100644
--- a/src/main/java/sevenUnits/utils/NameSymbol.java
+++ b/src/main/java/sevenUnits/utils/NameSymbol.java
@@ -38,7 +38,7 @@ public final class NameSymbol {
* Creates a {@code NameSymbol}, ensuring that if primaryName is null and
* otherNames is not empty, one name is moved from otherNames to primaryName
*
- * Ensure that otherNames is a copy of the inputted argument.
+ * Ensure that otherNames is not a copy of the inputted argument.
*/
private static final NameSymbol create(final String name,
final String symbol, final Set<String> otherNames) {
diff --git a/src/main/java/sevenUnits/utils/NamedObjectProduct.java b/src/main/java/sevenUnits/utils/NamedObjectProduct.java
deleted file mode 100644
index 89b2fad..0000000
--- a/src/main/java/sevenUnits/utils/NamedObjectProduct.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (C) 2021 Adrien Hopkins
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-package sevenUnits.utils;
-
-import java.util.Map;
-
-/**
- * An ObjectProduct with name(s) and/or a symbol. Can be created with the
- * {@link ObjectProduct#withName} method.
- *
- * @author Adrien Hopkins
- * @since 2021-12-15
- */
-public class NamedObjectProduct<T> extends ObjectProduct<T>
- implements Nameable {
- private final NameSymbol nameSymbol;
-
- NamedObjectProduct(final Map<T, Integer> exponents,
- final NameSymbol nameSymbol) {
- super(exponents);
- this.nameSymbol = nameSymbol;
- }
-
- @Override
- public NameSymbol getNameSymbol() {
- return this.nameSymbol;
- }
-
- public final String toDefinitionString() {
- return super.toString();
- }
-
- @Override
- public String toString() {
- return this.nameSymbol.toString();
- }
-}
diff --git a/src/main/java/sevenUnits/utils/ObjectProduct.java b/src/main/java/sevenUnits/utils/ObjectProduct.java
index 830f9d7..110bdc1 100644
--- a/src/main/java/sevenUnits/utils/ObjectProduct.java
+++ b/src/main/java/sevenUnits/utils/ObjectProduct.java
@@ -33,7 +33,7 @@ import java.util.function.Function;
* @author Adrien Hopkins
* @since 2019-10-16
*/
-public class ObjectProduct<T> {
+public class ObjectProduct<T> implements Nameable {
/**
* Returns an empty ObjectProduct of a certain type
*
@@ -83,15 +83,32 @@ public class ObjectProduct<T> {
final Map<T, Integer> exponents;
/**
- * Creates the {@code ObjectProduct}.
+ * The object's name and symbol
+ */
+ private final NameSymbol nameSymbol;
+
+ /**
+ * Creates a {@code ObjectProduct} without a name/symbol.
*
* @param exponents objects that make up this product
* @since 2019-10-16
*/
ObjectProduct(final Map<T, Integer> exponents) {
+ this(exponents, NameSymbol.EMPTY);
+ }
+
+ /**
+ * Creates the {@code ObjectProduct}.
+ *
+ * @param exponents objects that make up this product
+ * @param nameSymbol name and symbol of object product
+ * @since 2019-10-16
+ */
+ ObjectProduct(final Map<T, Integer> exponents, NameSymbol nameSymbol) {
this.exponents = Collections.unmodifiableMap(
ConditionalExistenceCollections.conditionalExistenceMap(exponents,
e -> !Integer.valueOf(0).equals(e.getValue())));
+ this.nameSymbol = nameSymbol;
}
/**
@@ -171,6 +188,11 @@ public class ObjectProduct<T> {
}
@Override
+ public NameSymbol getNameSymbol() {
+ return this.nameSymbol;
+ }
+
+ @Override
public int hashCode() {
return Objects.hash(this.exponents);
}
@@ -288,7 +310,7 @@ public class ObjectProduct<T> {
* {@code nameSymbol}
* @since 2021-12-15
*/
- public NamedObjectProduct<T> withName(NameSymbol nameSymbol) {
- return new NamedObjectProduct<>(this.exponents, nameSymbol);
+ public ObjectProduct<T> withName(NameSymbol nameSymbol) {
+ return new ObjectProduct<>(this.exponents, nameSymbol);
}
}
diff --git a/src/test/java/sevenUnitsGUI/PresenterTest.java b/src/test/java/sevenUnitsGUI/PresenterTest.java
index dc2fb57..3fe7e47 100644
--- a/src/test/java/sevenUnitsGUI/PresenterTest.java
+++ b/src/test/java/sevenUnitsGUI/PresenterTest.java
@@ -30,7 +30,7 @@ import sevenUnits.unit.Metric;
import sevenUnits.unit.Unit;
import sevenUnits.unit.UnitValue;
import sevenUnits.utils.Nameable;
-import sevenUnits.utils.NamedObjectProduct;
+import sevenUnits.utils.ObjectProduct;
/**
* @author Adrien Hopkins
@@ -41,7 +41,7 @@ public final class PresenterTest {
static final Set<Unit> testUnits = Set.of(Metric.METRE, Metric.KILOMETRE,
Metric.METRE_PER_SECOND, Metric.KILOMETRE_PER_HOUR);
- static final Set<NamedObjectProduct<BaseDimension>> testDimensions = Set
+ static final Set<ObjectProduct<BaseDimension>> testDimensions = Set
.of(Metric.Dimensions.LENGTH, Metric.Dimensions.VELOCITY);
private static final Set<String> names(Set<? extends Nameable> units) {