diff options
Diffstat (limited to 'src/org/unitConverter/unit/BaseUnit.java')
-rw-r--r-- | src/org/unitConverter/unit/BaseUnit.java | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/src/org/unitConverter/unit/BaseUnit.java b/src/org/unitConverter/unit/BaseUnit.java index 8f44861..8fd0664 100644 --- a/src/org/unitConverter/unit/BaseUnit.java +++ b/src/org/unitConverter/unit/BaseUnit.java @@ -16,10 +16,15 @@ */ package org.unitConverter.unit; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; /** * A unit that other units are defined by. + * <p> + * Note that BaseUnits <b>must</b> have names and symbols. This is because they are used for toString code. Therefore, + * the Optionals provided by {@link #getPrimaryName} and {@link #getSymbol} will always contain a value. * * @author Adrien Hopkins * @since 2019-10-16 @@ -38,19 +43,34 @@ public final class BaseUnit extends Unit { * @since 2019-10-16 */ public static BaseUnit valueOf(final BaseDimension dimension, final String name, final String symbol) { - return new BaseUnit(dimension, name, symbol); + return new BaseUnit(dimension, name, symbol, new HashSet<>()); + } + + /** + * 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-21 + */ + public static BaseUnit valueOf(final BaseDimension dimension, final String name, final String symbol, + final Set<String> otherNames) { + return new BaseUnit(dimension, name, symbol, otherNames); } private final BaseDimension dimension; - private final String name; - private final String symbol; /** * Creates the {@code BaseUnit}. * * @param dimension * dimension of unit - * @param name + * @param primaryName * name of unit * @param symbol * symbol of unit @@ -58,11 +78,10 @@ public final class BaseUnit extends Unit { * if any argument is null * @since 2019-10-16 */ - private BaseUnit(final BaseDimension dimension, final String name, final String symbol) { - super(); + private BaseUnit(final BaseDimension dimension, final String primaryName, final String symbol, + final Set<String> otherNames) { + super(primaryName, symbol, otherNames); this.dimension = Objects.requireNonNull(dimension, "dimension must not be null."); - this.name = Objects.requireNonNull(name, "name must not be null."); - this.symbol = Objects.requireNonNull(symbol, "symbol must not be null."); } /** @@ -94,24 +113,9 @@ public final class BaseUnit extends Unit { return this.dimension; } - /** - * @return name - * @since 2019-10-16 - */ - public final String getName() { - return this.name; - } - - /** - * @return symbol - * @since 2019-10-16 - */ - public final String getSymbol() { - return this.symbol; - } - @Override public String toString() { - return String.format("%s (%s)", this.getName(), this.getSymbol()); + return this.getPrimaryName().orElse("Unnamed unit") + + (this.getSymbol().isPresent() ? String.format(" (%s)", this.getSymbol().get()) : ""); } } |