Class AbstractIdentifiedObject

    • Field Detail

      • EMPTY_IDENTIFIER_ARRAY

        public static final ReferenceIdentifier[] EMPTY_IDENTIFIER_ARRAY
        An empty array of identifiers. This is usefull for fetching identifiers as an array, using the following idiom:
         getIdentifiers().toArray(EMPTY_IDENTIFIER_ARRAY);
         
      • EMPTY_ALIAS_ARRAY

        public static final GenericName[] EMPTY_ALIAS_ARRAY
        An empty array of alias. This is usefull for fetching alias as an array, using the following idiom:
         getAlias().toArray(EMPTY_ALIAS_ARRAY);
         
      • NAME_COMPARATOR

        public static final Comparator<IdentifiedObject> NAME_COMPARATOR
        A comparator for sorting identified objects by name.
      • IDENTIFIER_COMPARATOR

        public static final Comparator<IdentifiedObject> IDENTIFIER_COMPARATOR
        A comparator for sorting identified objects by identifiers.
      • REMARKS_COMPARATOR

        public static final Comparator<IdentifiedObject> REMARKS_COMPARATOR
        A comparator for sorting identified objects by remarks.
    • Constructor Detail

      • AbstractIdentifiedObject

        public AbstractIdentifiedObject​(IdentifiedObject object)
        Constructs a new identified object with the same values than the specified one. This copy constructor provides a way to wrap an arbitrary implementation into a Geotools one or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API. This constructor performs a shallow copy, i.e. the properties are not cloned.
        Parameters:
        object - The object to copy.
      • AbstractIdentifiedObject

        protected AbstractIdentifiedObject​(Map<String,​?> properties,
                                           Map<String,​Object> subProperties,
                                           String... localizables)
                                    throws IllegalArgumentException
        Constructs an object from a set of properties and copy unrecognized properties in the specified map. The properties argument is treated as in the one argument constructor. All properties unknow to this AbstractIdentifiedObject constructor are copied in the subProperties map, after their key has been normalized (usually lower case, leading and trailing space removed).

        If localizables is non-null, then all keys listed in this argument are treated as localizable one (i.e. may have a suffix like "_fr", "_de", etc.). Localizable properties are stored in the subProperties map as InternationalString objects.

        Parameters:
        properties - Set of properties. Should contains at least "name".
        subProperties - The map in which to copy unrecognized properties.
        localizables - Optional list of localized properties.
        Throws:
        InvalidParameterValueException - if a property has an invalid value.
        IllegalArgumentException - if a property is invalid for some other reason.
    • Method Detail

      • getIdentifiers

        public Set<ReferenceIdentifier> getIdentifiers()
        An identifier which references elsewhere the object's defining information. Alternatively an identifier by which this object can be referenced.
        Specified by:
        getIdentifiers in interface IdentifiedObject
        Returns:
        This object identifiers, or an empty array if there is none.
        See Also:
        getIdentifier(Citation)
      • getRemarks

        public InternationalString getRemarks()
        Comments on or information about this object, including data source information.
        Specified by:
        getRemarks in interface IdentifiedObject
        Returns:
        The remarks, or null if none.
      • getProperties

        public static Map<String,​?> getProperties​(IdentifiedObject info)
        Returns the informations provided in the specified indentified object as a map of properties. The returned map contains key such as NAME_KEY, and values from methods such as getName().
        Parameters:
        info - The identified object to view as a properties map.
        Returns:
        An view of the identified object as an immutable map.
      • getProperties

        public static Map<String,​Object> getProperties​(IdentifiedObject info,
                                                             Citation authority)
        Returns the properties to be given to an identified object derived from the specified one. This method is typically used for creating a new CRS identical to an existing one except for axis units. This method returns the same properties than the supplied argument (as of getProperties(info)), except for the following:

        • The name's authority is replaced by the specified one.
        • All identifiers are removed, because the new object to be created is probably not endorsed by the original authority.

        This method returns a mutable map. Consequently, callers can add their own identifiers directly to this map if they wish.

        Parameters:
        info - The identified object to view as a properties map.
        authority - The new authority for the object to be created, or null if it is not going to have any declared authority.
        Returns:
        An view of the identified object as a mutable map.
      • getIdentifier

        public ReferenceIdentifier getIdentifier​(Citation authority)
        Returns an identifier according the given authority. This method first checks all identifiers in their iteration order. It returns the first identifier with an authority citation matching the specified authority.
        Parameters:
        authority - The authority for the identifier to return, or null for the first identifier regarless its authority.
        Returns:
        The object's identifier, or null if no identifier matching the specified authority was found.
        Since:
        2.2
      • getIdentifier

        public static ReferenceIdentifier getIdentifier​(IdentifiedObject info,
                                                        Citation authority)
        Returns an identifier according the given authority. This method performs the same search than getIdentifier(Citation) on arbitrary implementations of GeoAPI interface.
        Parameters:
        info - The object to get the identifier from.
        authority - The authority for the identifier to return, or null for the first identifier regarless its authority.
        Returns:
        The object's identifier, or null if no identifier matching the specified authority was found.
        Since:
        2.2
      • getName

        public String getName​(Citation authority)
        Returns this object's name according the given authority. This method checks first the primary name, then all alias in their iteration order.
        • If the name or alias implements the ReferenceIdentifier interface, then this method compares the identifier authority against the specified citation using the identifierMatches method. If a matching is found, then this method returns the identifier code of this object.

        • Otherwise, if the alias implements the GenericName interface, then this method compares the name scope against the specified citation using the identifierMatches method. If a matching is found, then this method returns the local name of this object.

        Note that alias may implement both the ReferenceIdentifier and GenericName interfaces (for example NamedIdentifier). In such cases, the identifier view has precedence.
        Parameters:
        authority - The authority for the name to return.
        Returns:
        The object's name (either a code or a local name), or null if no name matching the specified authority was found.
        Since:
        2.2
        See Also:
        getName(), getAlias()
      • getName

        public static String getName​(IdentifiedObject info,
                                     Citation authority)
        Returns an object's name according the given authority. This method performs the same search than getName(Citation) on arbitrary implementations of GeoAPI interface.
        Parameters:
        info - The object to get the name from.
        authority - The authority for the name to return.
        Returns:
        The object's name (either a code or a local name), or null if no name matching the specified authority was found.
        Since:
        2.2
      • nameMatches

        public boolean nameMatches​(String name)
        Returns true if either the primary name or at least one alias matches the specified string. This method performs the search in the following order, regardless of any authority:
        Parameters:
        name - The name to compare.
        Returns:
        true if the primary name of at least one alias matches the specified name.
      • nameMatches

        public static boolean nameMatches​(IdentifiedObject object,
                                          String name)
        Returns true if either the primary name or at least one alias matches the specified string. This method performs the same check than the non-static method on arbitrary object implementing the GeoAPI interface.
        Parameters:
        object - The object to check.
        name - The name.
        Returns:
        true if the primary name of at least one alias matches the specified name.
      • nameMatches

        public static boolean nameMatches​(IdentifiedObject o1,
                                          IdentifiedObject o2)
        Returns true if the primary name of an object matches the primary name of one alias of the other object.
        Parameters:
        o1 - The first object to compare by name.
        o2 - The second object to compare by name.
        Returns:
        true if both objects have a common name.
        Since:
        2.4
      • equals

        public final boolean equals​(Object object)
        Compares the specified object with this object for equality.
        Overrides:
        equals in class Object
        Parameters:
        object - The other object (may be null).
        Returns:
        true if both objects are equal.
      • equals

        public boolean equals​(AbstractIdentifiedObject object,
                              boolean compareMetadata)
        Compares this object with the specified object for equality.

        If compareMetadata is true, then all available properties are compared including name, remarks, identifiers code, etc.

        If compareMetadata is false, then this method compare only the properties needed for computing transformations. In other words, sourceCS.equals(targetCS, false) returns true only if the transformation from sourceCS to targetCS is the identity transform, no matter what getName() saids.

        Some subclasses (especially AbstractDatum and AbstractParameterDescriptor) will test for the name, since objects with different name have completely different meaning. For example nothing differentiate the "semi_major" and "semi_minor" parameters except the name. The name comparison may be loose however, i.e. we may accept a name matching an alias.

        Parameters:
        object - The object to compare to this.
        compareMetadata - true for performing a strict comparison, or false for comparing only properties relevant to transformations.
        Returns:
        true if both objects are equal.
      • equals

        protected static boolean equals​(IdentifiedObject object1,
                                        IdentifiedObject object2,
                                        boolean compareMetadata)
        Compares two OpenGIS's IdentifiedObject objects for equality. This convenience method is provided for implementation of equals in subclasses.
        Parameters:
        object1 - The first object to compare (may be null).
        object2 - The second object to compare (may be null).
        compareMetadata - true for performing a strict comparaison, or false for comparing only properties relevant to transformations.
        Returns:
        true if both objects are equal.
      • equals

        protected static boolean equals​(IdentifiedObject[] array1,
                                        IdentifiedObject[] array2,
                                        boolean compareMetadata)
        Compares two arrays of OpenGIS's IdentifiedObject objects for equality. This convenience method is provided for implementation of equals method in subclasses.
        Parameters:
        array1 - The first array to compare (may be null).
        array2 - The second array to compare (may be null).
        compareMetadata - true for performing a strict comparaison, or false for comparing only properties relevant to transformations.
        Returns:
        true if both arrays are equal.
      • equals

        protected static boolean equals​(Collection<? extends IdentifiedObject> collection1,
                                        Collection<? extends IdentifiedObject> collection2,
                                        boolean compareMetadata)
        Compares two collectionss of OpenGIS's IdentifiedObject objects for equality. The comparaison take order in account, which make it more appropriate for List or LinkedHashSet comparaisons. This convenience method is provided for implementation of equals method in subclasses.
        Parameters:
        collection1 - The first collection to compare (may be null).
        collection2 - The second collection to compare (may be null).
        compareMetadata - true for performing a strict comparaison, or false for comparing only properties relevant to transformations.
        Returns:
        true if both collections are equal.
      • hashCode

        public int hashCode()
        Returns a hash value for this identified object. Name, identifiers and remarks are not taken in account. In other words, two identified objects will return the same hash value if they are equal in the sense of equals(AbstractIdentifiedObject, false).
        Overrides:
        hashCode in class Object
        Returns:
        The hash code value. This value doesn't need to be the same in past or future versions of this class.
      • asSet

        @SafeVarargs
        protected static <E> Set<E> asSet​(E... array)
        Returns the specified array as an immutable set, or null if the array is empty or null. This is a convenience method for sub-classes constructors.
        Type Parameters:
        E - The type of array elements.
        Parameters:
        array - The array to copy in a set. May be null.
        Returns:
        A set containing the array elements, or null if none or empty.
      • ensureNonNull

        protected static void ensureNonNull​(String name,
                                            Object object)
                                     throws InvalidParameterValueException
        Makes sure that an argument is non-null. This is a convenience method for subclass constructors.
        Parameters:
        name - Argument name.
        object - User argument.
        Throws:
        InvalidParameterValueException - if object is null.
      • ensureNonNull

        protected static void ensureNonNull​(String name,
                                            Object[] array,
                                            int index)
                                     throws InvalidParameterValueException
        Makes sure an array element is non-null. This is a convenience method for subclass constructors.
        Parameters:
        name - Argument name.
        array - User argument.
        index - Index of the element to check.
        Throws:
        InvalidParameterValueException - if array[i] is null.
      • ensureTimeUnit

        protected static void ensureTimeUnit​(Unit<?> unit)
                                      throws IllegalArgumentException
        Makes sure that the specified unit is a temporal one. This is a convenience method for subclass constructors.
        Parameters:
        unit - Unit to check.
        Throws:
        IllegalArgumentException - if unit is not a temporal unit.
      • ensureLinearUnit

        protected static void ensureLinearUnit​(Unit<?> unit)
                                        throws IllegalArgumentException
        Makes sure that the specified unit is a linear one. This is a convenience method for subclass constructors.
        Parameters:
        unit - Unit to check.
        Throws:
        IllegalArgumentException - if unit is not a linear unit.
      • ensureAngularUnit

        protected static void ensureAngularUnit​(Unit<?> unit)
                                         throws IllegalArgumentException
        Makes sure that the specified unit is an angular one. This is a convenience method for subclass constructors.
        Parameters:
        unit - Unit to check.
        Throws:
        IllegalArgumentException - if unit is not an angular unit.