diff options
author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-03-13 14:58:01 -0500 |
---|---|---|
committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-03-13 14:58:01 -0500 |
commit | 8def3bbda9331b9178e24400d8189afbdaf47e36 (patch) | |
tree | 7801eb5935624619a1b18e4ede32b74653117552 | |
parent | 77a798f3da39731886b55f0036be2af7dfa44263 (diff) |
Small internal changes to some classes (no feature changes)
-rw-r--r-- | src/org/unitConverter/math/UncertainDouble.java | 13 | ||||
-rw-r--r-- | src/org/unitConverter/unit/BaseUnit.java | 86 | ||||
-rw-r--r-- | src/org/unitConverter/unit/NameSymbol.java | 193 |
3 files changed, 124 insertions, 168 deletions
diff --git a/src/org/unitConverter/math/UncertainDouble.java b/src/org/unitConverter/math/UncertainDouble.java index 9601c75..3651bd5 100644 --- a/src/org/unitConverter/math/UncertainDouble.java +++ b/src/org/unitConverter/math/UncertainDouble.java @@ -164,11 +164,9 @@ public final class UncertainDouble implements Comparable<UncertainDouble> { if (!(obj instanceof UncertainDouble)) return false; final UncertainDouble other = (UncertainDouble) obj; - if (Double.doubleToLongBits(this.uncertainty) != Double - .doubleToLongBits(other.uncertainty)) + if (Double.compare(this.value, other.value) != 0) return false; - if (Double.doubleToLongBits(this.value) != Double - .doubleToLongBits(other.value)) + if (Double.compare(this.uncertainty, other.uncertainty) != 0) return false; return true; } @@ -216,11 +214,8 @@ public final class UncertainDouble implements Comparable<UncertainDouble> { public final int hashCode() { final int prime = 31; int result = 1; - long temp; - temp = Double.doubleToLongBits(this.uncertainty); - result = prime * result + (int) (temp ^ temp >>> 32); - temp = Double.doubleToLongBits(this.value); - result = prime * result + (int) (temp ^ temp >>> 32); + result = prime * result + Double.hashCode(this.value); + result = prime * result + Double.hashCode(this.uncertainty); return result; } diff --git a/src/org/unitConverter/unit/BaseUnit.java b/src/org/unitConverter/unit/BaseUnit.java index d9f7965..6757bd0 100644 --- a/src/org/unitConverter/unit/BaseUnit.java +++ b/src/org/unitConverter/unit/BaseUnit.java @@ -23,8 +23,9 @@ 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. + * 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 @@ -33,63 +34,56 @@ 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 + * @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) { + public static BaseUnit valueOf(final BaseDimension dimension, + final String name, final String 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 + * @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) { + public static BaseUnit valueOf(final BaseDimension dimension, + final String name, final String symbol, final Set<String> otherNames) { return new BaseUnit(dimension, name, symbol, otherNames); } - + /** * The dimension measured by this base unit. */ private final BaseDimension dimension; - + /** * Creates the {@code BaseUnit}. * - * @param dimension - * dimension of unit - * @param primaryName - * name of unit - * @param symbol - * symbol of unit - * @throws NullPointerException - * if any argument is null + * @param dimension dimension of unit + * @param primaryName name of unit + * @param symbol symbol of unit + * @throws NullPointerException if any argument is null * @since 2019-10-16 */ - private BaseUnit(final BaseDimension dimension, final String primaryName, final String symbol, - final Set<String> otherNames) { + 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.dimension = Objects.requireNonNull(dimension, + "dimension must not be null."); } - + /** - * Returns a {@code LinearUnit} with this unit as a base and a conversion factor of 1. This operation must be done - * in order to allow units to be created with operations. + * Returns a {@code LinearUnit} with this unit as a base and a conversion + * factor of 1. This operation must be done in order to allow units to be + * created with operations. * * @return this unit as a {@code LinearUnit} * @since 2019-10-16 @@ -97,17 +91,17 @@ public final class BaseUnit extends Unit { public LinearUnit asLinearUnit() { return LinearUnit.valueOf(this.getBase(), 1); } - + @Override - public double convertFromBase(final double value) { + protected double convertFromBase(final double value) { return value; } - + @Override - public double convertToBase(final double value) { + protected double convertToBase(final double value) { return value; } - + /** * @return dimension * @since 2019-10-16 @@ -115,21 +109,25 @@ public final class BaseUnit extends Unit { public final BaseDimension getBaseDimension() { return this.dimension; } - + @Override public String toString() { return this.getPrimaryName().orElse("Unnamed unit") - + (this.getSymbol().isPresent() ? String.format(" (%s)", this.getSymbol().get()) : ""); + + (this.getSymbol().isPresent() + ? String.format(" (%s)", this.getSymbol().get()) + : ""); } - + @Override public BaseUnit withName(final NameSymbol ns) { Objects.requireNonNull(ns, "ns must not be null."); if (!ns.getPrimaryName().isPresent()) - throw new IllegalArgumentException("BaseUnits must have primary names."); + throw new IllegalArgumentException( + "BaseUnits must have primary names."); if (!ns.getSymbol().isPresent()) throw new IllegalArgumentException("BaseUnits must have symbols."); - return BaseUnit.valueOf(this.getBaseDimension(), ns.getPrimaryName().get(), ns.getSymbol().get(), + return BaseUnit.valueOf(this.getBaseDimension(), + ns.getPrimaryName().get(), ns.getSymbol().get(), ns.getOtherNames()); } } diff --git a/src/org/unitConverter/unit/NameSymbol.java b/src/org/unitConverter/unit/NameSymbol.java index 7fa5304..8d8302a 100644 --- a/src/org/unitConverter/unit/NameSymbol.java +++ b/src/org/unitConverter/unit/NameSymbol.java @@ -31,32 +31,36 @@ import java.util.Set; * @since 2019-10-21 */ public final class NameSymbol { - public static final NameSymbol EMPTY = new NameSymbol(Optional.empty(), Optional.empty(), new HashSet<>()); - + public static final NameSymbol EMPTY = new NameSymbol(Optional.empty(), + Optional.empty(), new HashSet<>()); + /** * 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. */ - private static final NameSymbol create(final String name, final String symbol, final Set<String> otherNames) { + private static final NameSymbol create(final String name, + final String symbol, final Set<String> otherNames) { final Optional<String> primaryName; - + if (name == null && !otherNames.isEmpty()) { // get primary name and remove it from savedNames - Iterator<String> it = otherNames.iterator(); + final Iterator<String> it = otherNames.iterator(); assert it.hasNext(); primaryName = Optional.of(it.next()); otherNames.remove(primaryName.get()); } else { primaryName = Optional.ofNullable(name); } - - return new NameSymbol(primaryName, Optional.ofNullable(symbol), otherNames); + + return new NameSymbol(primaryName, Optional.ofNullable(symbol), + otherNames); } - + /** - * Gets a {@code NameSymbol} with a primary name, a symbol and no other names. + * Gets a {@code NameSymbol} with a primary name, a symbol and no other + * names. * * @param name name to use * @param symbol symbol to use @@ -65,11 +69,13 @@ public final class NameSymbol { * @throws NullPointerException if name or symbol is null */ public static final NameSymbol of(final String name, final String symbol) { - return new NameSymbol(Optional.of(name), Optional.of(symbol), new HashSet<>()); + return new NameSymbol(Optional.of(name), Optional.of(symbol), + new HashSet<>()); } - + /** - * Gets a {@code NameSymbol} with a primary name, a symbol and additional names. + * Gets a {@code NameSymbol} with a primary name, a symbol and additional + * names. * * @param name name to use * @param symbol symbol to use @@ -78,11 +84,13 @@ public final class NameSymbol { * @since 2019-10-21 * @throws NullPointerException if any argument is null */ - public static final NameSymbol of(final String name, final String symbol, final Set<String> otherNames) { + public static final NameSymbol of(final String name, final String symbol, + final Set<String> otherNames) { return new NameSymbol(Optional.of(name), Optional.of(symbol), - new HashSet<>(Objects.requireNonNull(otherNames, "otherNames must not be null."))); + new HashSet<>(Objects.requireNonNull(otherNames, + "otherNames must not be null."))); } - + /** * h * Gets a {@code NameSymbol} with a primary name, a symbol and additional * names. @@ -94,72 +102,16 @@ public final class NameSymbol { * @since 2019-10-21 * @throws NullPointerException if any argument is null */ - public static final NameSymbol of(final String name, final String symbol, final String... otherNames) { + public static final NameSymbol of(final String name, final String symbol, + final String... otherNames) { return new NameSymbol(Optional.of(name), Optional.of(symbol), - new HashSet<>(Arrays.asList(Objects.requireNonNull(otherNames, "otherNames must not be null.")))); + new HashSet<>(Arrays.asList(Objects.requireNonNull(otherNames, + "otherNames must not be null.")))); } - - /** - * Gets a {@code NameSymbol} with a primary name, a symbol and an additional - * name. - * - * @param name name to use - * @param symbol symbol to use - * @param otherNames other names to use - * @param name2 alternate name - * @return NameSymbol instance - * @since 2019-10-21 - * @throws NullPointerException if any argument is null - */ - public static final NameSymbol of(final String name, final String symbol, final String name2) { - final Set<String> otherNames = new HashSet<>(); - otherNames.add(Objects.requireNonNull(name2, "name2 must not be null.")); - return new NameSymbol(Optional.of(name), Optional.of(symbol), otherNames); - } - - /** - * Gets a {@code NameSymbol} with a primary name, a symbol and additional names. - * - * @param name name to use - * @param symbol symbol to use - * @param otherNames other names to use - * @param name2 alternate name - * @param name3 alternate name - * @return NameSymbol instance - * @since 2019-10-21 - * @throws NullPointerException if any argument is null - */ - public static final NameSymbol of(final String name, final String symbol, final String name2, final String name3) { - final Set<String> otherNames = new HashSet<>(); - otherNames.add(Objects.requireNonNull(name2, "name2 must not be null.")); - otherNames.add(Objects.requireNonNull(name3, "name3 must not be null.")); - return new NameSymbol(Optional.of(name), Optional.of(symbol), otherNames); - } - - /** - * Gets a {@code NameSymbol} with a primary name, a symbol and additional names. - * - * @param name name to use - * @param symbol symbol to use - * @param otherNames other names to use - * @param name2 alternate name - * @param name3 alternate name - * @param name4 alternate name - * @return NameSymbol instance - * @since 2019-10-21 - * @throws NullPointerException if any argument is null - */ - public static final NameSymbol of(final String name, final String symbol, final String name2, final String name3, - final String name4) { - final Set<String> otherNames = new HashSet<>(); - otherNames.add(Objects.requireNonNull(name2, "name2 must not be null.")); - otherNames.add(Objects.requireNonNull(name3, "name3 must not be null.")); - otherNames.add(Objects.requireNonNull(name4, "name4 must not be null.")); - return new NameSymbol(Optional.of(name), Optional.of(symbol), otherNames); - } - + /** - * Gets a {@code NameSymbol} with a primary name, no symbol, and no other names. + * Gets a {@code NameSymbol} with a primary name, no symbol, and no other + * names. * * @param name name to use * @return NameSymbol instance @@ -167,17 +119,19 @@ public final class NameSymbol { * @throws NullPointerException if name is null */ public static final NameSymbol ofName(final String name) { - return new NameSymbol(Optional.of(name), Optional.empty(), new HashSet<>()); + return new NameSymbol(Optional.of(name), Optional.empty(), + new HashSet<>()); } - + /** - * Gets a {@code NameSymbol} with a primary name, a symbol and additional names. + * Gets a {@code NameSymbol} with a primary name, a symbol and additional + * names. * <p> * If any argument is null, this static factory replaces it with an empty * Optional or empty Set. * <p> - * If {@code name} is null and {@code otherNames} is not empty, a primary name - * will be picked from {@code otherNames}. This name will not appear in + * If {@code name} is null and {@code otherNames} is not empty, a primary + * name will be picked from {@code otherNames}. This name will not appear in * getOtherNames(). * * @param name name to use @@ -186,10 +140,12 @@ public final class NameSymbol { * @return NameSymbol instance * @since 2019-11-26 */ - public static final NameSymbol ofNullable(final String name, final String symbol, final Set<String> otherNames) { - return NameSymbol.create(name, symbol, otherNames == null ? new HashSet<>() : new HashSet<>(otherNames)); + public static final NameSymbol ofNullable(final String name, + final String symbol, final Set<String> otherNames) { + return NameSymbol.create(name, symbol, + otherNames == null ? new HashSet<>() : new HashSet<>(otherNames)); } - + /** * h * Gets a {@code NameSymbol} with a primary name, a symbol and additional * names. @@ -197,8 +153,8 @@ public final class NameSymbol { * If any argument is null, this static factory replaces it with an empty * Optional or empty Set. * <p> - * If {@code name} is null and {@code otherNames} is not empty, a primary name - * will be picked from {@code otherNames}. This name will not appear in + * If {@code name} is null and {@code otherNames} is not empty, a primary + * name will be picked from {@code otherNames}. This name will not appear in * getOtherNames(). * * @param name name to use @@ -207,10 +163,12 @@ public final class NameSymbol { * @return NameSymbol instance * @since 2019-11-26 */ - public static final NameSymbol ofNullable(final String name, final String symbol, final String... otherNames) { - return create(name, symbol, otherNames == null ? new HashSet<>() : new HashSet<>(Arrays.asList(otherNames))); + public static final NameSymbol ofNullable(final String name, + final String symbol, final String... otherNames) { + return create(name, symbol, otherNames == null ? new HashSet<>() + : new HashSet<>(Arrays.asList(otherNames))); } - + /** * Gets a {@code NameSymbol} with a symbol and no names. * @@ -220,59 +178,61 @@ public final class NameSymbol { * @throws NullPointerException if symbol is null */ public static final NameSymbol ofSymbol(final String symbol) { - return new NameSymbol(Optional.empty(), Optional.of(symbol), new HashSet<>()); + return new NameSymbol(Optional.empty(), Optional.of(symbol), + new HashSet<>()); } - + private final Optional<String> primaryName; private final Optional<String> symbol; - + private final Set<String> otherNames; - + /** * Creates the {@code NameSymbol}. * * @param primaryName primary name of unit * @param symbol symbol used to represent unit - * @param otherNames other names and/or spellings, should be a mutable copy of - * the argument + * @param otherNames other names and/or spellings, should be a mutable copy + * of the argument * @since 2019-10-21 */ - private NameSymbol(final Optional<String> primaryName, final Optional<String> symbol, - final Set<String> otherNames) { + private NameSymbol(final Optional<String> primaryName, + final Optional<String> symbol, final Set<String> otherNames) { this.primaryName = primaryName; this.symbol = symbol; otherNames.remove(null); this.otherNames = Collections.unmodifiableSet(otherNames); - if (this.primaryName.isEmpty()) + if (this.primaryName.isEmpty()) { assert this.otherNames.isEmpty(); + } } - + @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof NameSymbol)) return false; - NameSymbol other = (NameSymbol) obj; - if (otherNames == null) { + final NameSymbol other = (NameSymbol) obj; + if (this.otherNames == null) { if (other.otherNames != null) return false; - } else if (!otherNames.equals(other.otherNames)) + } else if (!this.otherNames.equals(other.otherNames)) return false; - if (primaryName == null) { + if (this.primaryName == null) { if (other.primaryName != null) return false; - } else if (!primaryName.equals(other.primaryName)) + } else if (!this.primaryName.equals(other.primaryName)) return false; - if (symbol == null) { + if (this.symbol == null) { if (other.symbol != null) return false; - } else if (!symbol.equals(other.symbol)) + } else if (!this.symbol.equals(other.symbol)) return false; return true; } - + /** * @return otherNames * @since 2019-10-21 @@ -280,7 +240,7 @@ public final class NameSymbol { public final Set<String> getOtherNames() { return this.otherNames; } - + /** * @return primaryName * @since 2019-10-21 @@ -296,17 +256,20 @@ public final class NameSymbol { public final Optional<String> getSymbol() { return this.symbol; } - + @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((otherNames == null) ? 0 : otherNames.hashCode()); - result = prime * result + ((primaryName == null) ? 0 : primaryName.hashCode()); - result = prime * result + ((symbol == null) ? 0 : symbol.hashCode()); + result = prime * result + + (this.otherNames == null ? 0 : this.otherNames.hashCode()); + result = prime * result + + (this.primaryName == null ? 0 : this.primaryName.hashCode()); + result = prime * result + + (this.symbol == null ? 0 : this.symbol.hashCode()); return result; } - + /** * @return true iff this {@code NameSymbol} contains no names or symbols. */ |