summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Hopkins <masterofnumbers17@gmail.com>2019-11-26 15:20:04 -0500
committerAdrien Hopkins <masterofnumbers17@gmail.com>2019-11-26 15:20:04 -0500
commita966676c629f7f14fcbba82a9ada5e2cbeca8314 (patch)
tree63e93526528f963d99570230a4b72830400840bc
parent7bf4824a0619a79cb10faf8f83146b96e51341d2 (diff)
Updated the documentation of existing classes.
-rw-r--r--src/org/unitConverter/math/ObjectProduct.java8
-rw-r--r--src/org/unitConverter/unit/BaseDimension.java6
-rw-r--r--src/org/unitConverter/unit/BaseUnit.java3
-rw-r--r--src/org/unitConverter/unit/FunctionalUnit.java10
-rw-r--r--src/org/unitConverter/unit/LinearUnit.java27
-rw-r--r--src/org/unitConverter/unit/SI.java24
-rw-r--r--src/org/unitConverter/unit/Unit.java3
-rw-r--r--src/org/unitConverter/unit/UnitDatabase.java7
-rw-r--r--src/org/unitConverter/unit/UnitPrefix.java19
9 files changed, 91 insertions, 16 deletions
diff --git a/src/org/unitConverter/math/ObjectProduct.java b/src/org/unitConverter/math/ObjectProduct.java
index 0cf89ec..29d0f6e 100644
--- a/src/org/unitConverter/math/ObjectProduct.java
+++ b/src/org/unitConverter/math/ObjectProduct.java
@@ -238,6 +238,14 @@ public final class ObjectProduct<T> {
return new ObjectProduct<>(map);
}
+ /**
+ * Converts this product to a string using the objects' {@link Object#toString()} method. If objects have a long
+ * toString representation, it is recommended to use {@link #toString(Function)} instead to shorten the returned
+ * string.
+ *
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public String toString() {
return this.toString(Object::toString);
diff --git a/src/org/unitConverter/unit/BaseDimension.java b/src/org/unitConverter/unit/BaseDimension.java
index 35acd18..8e63a17 100644
--- a/src/org/unitConverter/unit/BaseDimension.java
+++ b/src/org/unitConverter/unit/BaseDimension.java
@@ -39,7 +39,13 @@ public final class BaseDimension {
return new BaseDimension(name, symbol);
}
+ /**
+ * The name of the dimension.
+ */
private final String name;
+ /**
+ * The symbol used by the dimension. Symbols should be short, generally one or two characters.
+ */
private final String symbol;
/**
diff --git a/src/org/unitConverter/unit/BaseUnit.java b/src/org/unitConverter/unit/BaseUnit.java
index e9ef3fa..d9f7965 100644
--- a/src/org/unitConverter/unit/BaseUnit.java
+++ b/src/org/unitConverter/unit/BaseUnit.java
@@ -63,6 +63,9 @@ public final class BaseUnit extends Unit {
return new BaseUnit(dimension, name, symbol, otherNames);
}
+ /**
+ * The dimension measured by this base unit.
+ */
private final BaseDimension dimension;
/**
diff --git a/src/org/unitConverter/unit/FunctionalUnit.java b/src/org/unitConverter/unit/FunctionalUnit.java
index e2ab6e7..586e0d7 100644
--- a/src/org/unitConverter/unit/FunctionalUnit.java
+++ b/src/org/unitConverter/unit/FunctionalUnit.java
@@ -86,11 +86,21 @@ final class FunctionalUnit extends Unit {
this.converterTo = Objects.requireNonNull(converterTo, "converterTo must not be null.");
}
+ /**
+ * {@inheritDoc}
+ *
+ * Uses {@code converterFrom} to convert.
+ */
@Override
public double convertFromBase(final double value) {
return this.converterFrom.applyAsDouble(value);
}
+ /**
+ * {@inheritDoc}
+ *
+ * Uses {@code converterTo} to convert.
+ */
@Override
public double convertToBase(final double value) {
return this.converterTo.applyAsDouble(value);
diff --git a/src/org/unitConverter/unit/LinearUnit.java b/src/org/unitConverter/unit/LinearUnit.java
index 7b7338b..1532fc4 100644
--- a/src/org/unitConverter/unit/LinearUnit.java
+++ b/src/org/unitConverter/unit/LinearUnit.java
@@ -128,11 +128,21 @@ public final class LinearUnit extends Unit {
this.conversionFactor = conversionFactor;
}
+ /**
+ * {@inheritDoc}
+ *
+ * Converts by dividing by {@code conversionFactor}
+ */
@Override
protected double convertFromBase(final double value) {
return value / this.getConversionFactor();
}
+ /**
+ * {@inheritDoc}
+ *
+ * Converts by multiplying by {@code conversionFactor}
+ */
@Override
protected double convertToBase(final double value) {
return value * this.getConversionFactor();
@@ -170,6 +180,11 @@ public final class LinearUnit extends Unit {
return valueOf(base, this.getConversionFactor() / divisor.getConversionFactor());
}
+ /**
+ * {@inheritDoc}
+ *
+ * Uses the base and conversion factor of units to test for equality.
+ */
@Override
public boolean equals(final Object obj) {
if (!(obj instanceof LinearUnit))
@@ -187,6 +202,11 @@ public final class LinearUnit extends Unit {
return this.conversionFactor;
}
+ /**
+ * {@inheritDoc}
+ *
+ * Uses the base and conversion factor to compute a hash code.
+ */
@Override
public int hashCode() {
return 31 * this.getBase().hashCode() + DecimalComparison.hash(this.getConversionFactor());
@@ -234,7 +254,7 @@ public final class LinearUnit extends Unit {
throw new IllegalArgumentException(
String.format("Incompatible units for subtraction \"%s\" and \"%s\".", this, subtrahendend));
- // add the units
+ // subtract the units
return valueOf(this.getBase(), this.getConversionFactor() - subtrahendend.getConversionFactor());
}
@@ -312,7 +332,10 @@ public final class LinearUnit extends Unit {
return valueOf(this.getBase().toExponent(exponent), Math.pow(this.conversionFactor, exponent));
}
- // returns a definition of the unit
+ /**
+ * @return a string providing a definition of this unit
+ * @since 2019-10-21
+ */
@Override
public String toString() {
return this.getPrimaryName().orElse("Unnamed unit")
diff --git a/src/org/unitConverter/unit/SI.java b/src/org/unitConverter/unit/SI.java
index 45a81e2..19d63e6 100644
--- a/src/org/unitConverter/unit/SI.java
+++ b/src/org/unitConverter/unit/SI.java
@@ -17,6 +17,7 @@
package org.unitConverter.unit;
import org.unitConverter.math.ObjectProduct;
+import org.unitConverter.unit.Unit.NameSymbol;
/**
* All of the units, prefixes and dimensions that are used by the SI, as well as some outside the SI.
@@ -115,9 +116,9 @@ public final class SI {
public static final ObjectProduct<BaseDimension> REFLACTIVE_PERMEABILITY = EMPTY.times(EMPTY);
public static final ObjectProduct<BaseDimension> ANGLE = LENGTH.dividedBy(LENGTH);
public static final ObjectProduct<BaseDimension> SOLID_ANGLE = AREA.dividedBy(AREA);
+
// derived dimensions with named SI units
public static final ObjectProduct<BaseDimension> FREQUENCY = EMPTY.dividedBy(TIME);
-
public static final ObjectProduct<BaseDimension> FORCE = MASS.times(ACCELERATION);
public static final ObjectProduct<BaseDimension> ENERGY = FORCE.times(LENGTH);
public static final ObjectProduct<BaseDimension> POWER = ENERGY.dividedBy(TIME);
@@ -142,15 +143,18 @@ public final class SI {
/// The units of the SI
public static final LinearUnit ONE = LinearUnit.valueOf(ObjectProduct.empty(), 1);
- public static final LinearUnit METRE = BaseUnits.METRE.asLinearUnit();
- public static final LinearUnit KILOGRAM = BaseUnits.KILOGRAM.asLinearUnit();
- public static final LinearUnit SECOND = BaseUnits.SECOND.asLinearUnit();
- public static final LinearUnit AMPERE = BaseUnits.AMPERE.asLinearUnit();
- public static final LinearUnit KELVIN = BaseUnits.KELVIN.asLinearUnit();
- public static final LinearUnit MOLE = BaseUnits.MOLE.asLinearUnit();
- public static final LinearUnit CANDELA = BaseUnits.CANDELA.asLinearUnit();
- public static final LinearUnit BIT = BaseUnits.BIT.asLinearUnit();
- public static final LinearUnit DOLLAR = BaseUnits.DOLLAR.asLinearUnit();
+ public static final LinearUnit METRE = BaseUnits.METRE.asLinearUnit()
+ .withName(NameSymbol.of("metre", "m", "meter"));
+ public static final LinearUnit KILOGRAM = BaseUnits.KILOGRAM.asLinearUnit()
+ .withName(NameSymbol.of("kilogram", "kg"));
+ public static final LinearUnit SECOND = BaseUnits.SECOND.asLinearUnit()
+ .withName(NameSymbol.of("second", "s", "sec"));
+ public static final LinearUnit AMPERE = BaseUnits.AMPERE.asLinearUnit().withName(NameSymbol.of("ampere", "A"));
+ public static final LinearUnit KELVIN = BaseUnits.KELVIN.asLinearUnit().withName(NameSymbol.of("kelvin", "K"));
+ public static final LinearUnit MOLE = BaseUnits.MOLE.asLinearUnit().withName(NameSymbol.of("mole", "mol"));
+ public static final LinearUnit CANDELA = BaseUnits.CANDELA.asLinearUnit().withName(NameSymbol.of("candela", "cd"));
+ public static final LinearUnit BIT = BaseUnits.BIT.asLinearUnit().withName(NameSymbol.of("bit", "b"));
+ public static final LinearUnit DOLLAR = BaseUnits.DOLLAR.asLinearUnit().withName(NameSymbol.of("dollar", "$"));
// Non-base units
public static final LinearUnit RADIAN = METRE.dividedBy(METRE);
diff --git a/src/org/unitConverter/unit/Unit.java b/src/org/unitConverter/unit/Unit.java
index d848ea1..737802a 100644
--- a/src/org/unitConverter/unit/Unit.java
+++ b/src/org/unitConverter/unit/Unit.java
@@ -511,7 +511,8 @@ public abstract class Unit {
public String toString() {
return this.getPrimaryName().orElse("Unnamed unit")
+ (this.getSymbol().isPresent() ? String.format(" (%s)", this.getSymbol().get()) : "")
- + ", derived from " + this.getBase().toString();
+ + ", derived from " + this.getBase().toString(u -> u.getSymbol().get())
+ + (this.getOtherNames().isEmpty() ? "" : ", also called " + String.join(", ", this.getOtherNames()));
}
/**
diff --git a/src/org/unitConverter/unit/UnitDatabase.java b/src/org/unitConverter/unit/UnitDatabase.java
index a2b11c3..5985c80 100644
--- a/src/org/unitConverter/unit/UnitDatabase.java
+++ b/src/org/unitConverter/unit/UnitDatabase.java
@@ -1609,10 +1609,13 @@ public final class UnitDatabase {
return Collections.unmodifiableMap(this.prefixes);
}
+ /**
+ * @return a string stating the number of units, prefixes and dimensions in the database
+ */
@Override
public String toString() {
- return String.format("Unit Database with %d units and %d unit prefixes", this.prefixlessUnits.size(),
- this.prefixes.size());
+ return String.format("Unit Database with %d units, %d unit prefixes and %d dimensions",
+ this.prefixlessUnits.size(), this.prefixes.size(), this.dimensions.size());
}
/**
diff --git a/src/org/unitConverter/unit/UnitPrefix.java b/src/org/unitConverter/unit/UnitPrefix.java
index 514fa1c..360b0c1 100644
--- a/src/org/unitConverter/unit/UnitPrefix.java
+++ b/src/org/unitConverter/unit/UnitPrefix.java
@@ -80,6 +80,11 @@ public final class UnitPrefix {
return valueOf(this.getMultiplier() / other.getMultiplier());
}
+ /**
+ * {@inheritDoc}
+ *
+ * Uses the prefix's multiplier to determine equality.
+ */
@Override
public boolean equals(final Object obj) {
if (this == obj)
@@ -92,10 +97,19 @@ public final class UnitPrefix {
return DecimalComparison.equals(this.getMultiplier(), other.getMultiplier());
}
+ /**
+ * @return prefix's multiplier
+ * @since 2019-11-26
+ */
public double getMultiplier() {
return this.multiplier;
}
+ /**
+ * {@inheritDoc}
+ *
+ * Uses the prefix's multiplier to determine a hash code.
+ */
@Override
public int hashCode() {
return DecimalComparison.hash(this.getMultiplier());
@@ -139,8 +153,11 @@ public final class UnitPrefix {
return valueOf(Math.pow(this.getMultiplier(), exponent));
}
+ /**
+ * @return a string describing the prefix and its multiplier
+ */
@Override
public String toString() {
- return String.format("Unit prefix equal to %s", this.multiplier);
+ return String.format("Unit prefix with multiplier %s", this.multiplier);
}
}