Class ItemComparator

  • All Implemented Interfaces:
    Serializable, Comparator

    public class ItemComparator
    extends Object
    implements Comparator, Serializable
    Compare two Items by their DCValues. The DCValues to be compared are specified by the element, qualifier and language parameters to the constructor. If the Item has more than one matching Metadatum, then the max parameter to the constructor specifies whether the maximum or minimum lexicographic value will be used.
    Version:
    $Revision$
    Author:
    Peter Breton
    See Also:
    Serialized Form
    • Field Detail

      • element

        protected String element
        Dublin Core element
      • qualifier

        protected String qualifier
        Dublin Core qualifier
      • language

        protected String language
        Language
      • max

        protected boolean max
        Whether maximum or minimum value will be used
      • itemService

        protected transient ItemService itemService
    • Constructor Detail

      • ItemComparator

        public ItemComparator​(String element,
                              String qualifier,
                              String language,
                              boolean max)
        Constructor.
        Parameters:
        element - The Dublin Core element
        qualifier - The Dublin Core qualifier
        language - The language for the DCValues
        max - If true, and there is more than one Metadatum for element, qualifier and language, then use the maximum value lexicographically; otherwise use the minimum value.
    • Method Detail

      • compare

        public int compare​(Object first,
                           Object second)
        Compare two Items by checking their DCValues for element, qualifier, and language.

        Return greater than or equal to 1 if the first is lexicographically greater than the second; less than or equal to -1 if the second is lexicographically greater than the first, and 0 otherwise.

        Specified by:
        compare in interface Comparator
        Parameters:
        first - The first object to compare. Must be an object of type org.dspace.content.Item.
        second - The second object to compare. Must be an object of type org.dspace.content.Item.
        Returns:
        greater than or equal 1 if the first is lexicographically greater than the second; less than or equal -1 if the second is lexicographically greater than the first, and 0 otherwise.
      • equals

        public boolean equals​(Object obj)
        Return true if the object is equal to this one, false otherwise. Another object is equal to this one if it is also an ItemComparator, and has the same values for element, qualifier, language, and max.
        Specified by:
        equals in interface Comparator
        Overrides:
        equals in class Object
        Parameters:
        obj - The object to compare to.
        Returns:
        True if the other object is equal to this one, false otherwise.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • equalsWithNull

        protected boolean equalsWithNull​(String first,
                                         String second)
        Parameters:
        first - first operand
        second - second operand
        Returns:
        true if the first string is equal to the second. Either or both may be null.
      • getValue

        protected String getValue​(Item item)
        Choose the canonical value from an item for comparison. If there are no values, null is returned. If there is exactly one value, then it is returned. Otherwise, either the maximum or minimum lexicographical value is returned; the parameter to the constructor says which.
        Parameters:
        item - The item to check
        Returns:
        The chosen value, or null
      • normalizeTitle

        protected String normalizeTitle​(MetadataValue value)
        Normalize the title of a Metadatum.
        Parameters:
        value - metadata value
        Returns:
        normalized title