Class Utilities

java.lang.Object
org.apache.sis.util.Static
org.apache.sis.util.Utilities

public final class Utilities extends Static
Static methods for object comparisons in different ways (deeply, approximately, etc).
Since:
0.3
Version:
0.3
  • Constructor Details

    • Utilities

      private Utilities()
      Do not allow object creation.
  • Method Details

    • equalsIgnoreMetadata

      public static boolean equalsIgnoreMetadata(Object object1, Object object2)
      Compares the specified objects for equality, ignoring metadata. If this method returns true, then:
      • If the two given objects are math transforms, then transforming a set of coordinate values using one transform will produce the same results than transforming the same coordinates with the other transform.
      • If the two given objects are Coordinate Reference Systems (CRS), then a call to findOperation(crs1, crs2, null) will return an identity operation.
      If a more lenient comparison allowing slight differences in numerical values is wanted, then equalsApproximately(Object, Object) can be used instead.

      Implementation note

      This is a convenience method for the following method call:
      Parameters:
      object1 - the first object to compare (may be null).
      object2 - the second object to compare (may be null).
      Returns:
      true if both objects are equal, ignoring metadata.
      See Also:
    • equalsApproximately

      public static boolean equalsApproximately(Object object1, Object object2)
      Compares the specified objects for equality, ignoring metadata and slight differences in numerical values. If this method returns true, then:
      • If the two given objects are math transforms, then transforming a set of coordinate values using one transform will produce approximately the same results than transforming the same coordinates with the other transform.
      • If the two given objects are Coordinate Reference Systems (CRS), then a call to findOperation(crs1, crs2, null) will return an operation close to identity.

      Implementation note

      This is a convenience method for the following method call:
      Parameters:
      object1 - the first object to compare (may be null).
      object2 - the second object to compare (may be null).
      Returns:
      true if both objects are approximately equal.
      See Also:
    • deepEquals

      public static boolean deepEquals(Object object1, Object object2, ComparisonMode mode)
      Convenience method for testing two objects for equality using the given level of strictness. If at least one of the given objects implement the LenientComparable interface, then the comparison is performed using the LenientComparable.equals(Object, ComparisonMode) method. Otherwise this method performs the same work than the Objects.deepEquals(Object, Object) convenience method.

      If both arguments are arrays or collections, then the elements are compared recursively.

      Parameters:
      object1 - the first object to compare, or null.
      object2 - the second object to compare, or null.
      mode - the strictness level of the comparison.
      Returns:
      true if both objects are equal for the given level of strictness.
      See Also:
    • equals

      private static boolean equals(LenientComparable[] array1, Object[] array2, ComparisonMode mode)
      Compares two arrays where at least one array is known to contain LenientComparable elements. This knowledge avoid the need to test each element individually. The two arrays shall be non-null.
    • equals

      private static boolean equals(Iterable<?> object1, Iterable<?> object2, ComparisonMode mode)
      Compares two collections. Order are significant, unless both collections implement the Set interface.
    • isNotDebug

      private static boolean isNotDebug(ComparisonMode mode)
      Returns true if the given mode is not ComparisonMode.DEBUG. In debug mode, the expected behavior of deepEquals(Object, Object, ComparisonMode) is to thrown an exception (rather than returning false) when two objects are not equal.
    • mismatchedType

      private static String mismatchedType(Class<?> expected, Object actual)
      Returns an assertion error message for mismatched types.
      Parameters:
      expected - the expected type.
      actual - the actual object (not its type).
      Returns:
      the error message to use in assertions.
    • mismatchedElement

      private static String mismatchedElement(String header, Iterable<?> object1, Iterable<?> object2, String tail)
      Returns an assertion error message for mismatched collections.
    • deepHashCode

      public static int deepHashCode(Object object)
      Returns a hash code for the specified object, which may be an array. This method returns one of the following values: This method should be invoked only if the object type is declared exactly as Object, not as some subtype like Object[], String or float[]. In the latter cases, use the appropriate Arrays method instead.
      Parameters:
      object - the object to compute hash code. May be null.
      Returns:
      the hash code of the given object.
    • deepToString

      public static String deepToString(Object object)
      Returns a string representation of the specified object, which may be an array. This method returns one of the following values: This method should be invoked only if the object type is declared exactly as Object, not as some subtype like Object[], Number or float[]. In the latter cases, use the appropriate Arrays method instead.
      Parameters:
      object - the object to format as a string. May be null.
      Returns:
      a string representation of the given object.