diff options
Diffstat (limited to 'src/org/unitConverter/unit/NameSymbol.java')
-rw-r--r-- | src/org/unitConverter/unit/NameSymbol.java | 193 |
1 files changed, 78 insertions, 115 deletions
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. */ |