Class TextComparer

  • All Implemented Interfaces:
    AtomicComparer

    public class TextComparer
    extends Object
    implements AtomicComparer
    A Comparer used for comparing sort keys when data-type="text". The items to be compared are converted to strings, and the strings are then compared using an underlying collator
    Author:
    Michael H. Kay
    • Constructor Detail

    • Method Detail

      • getBaseComparer

        public AtomicComparer getBaseComparer()
        Get the underlying comparer (which doesn't do conversion to string)
      • getCollator

        public StringCollator getCollator()
        Description copied from interface: AtomicComparer
        Get the collation used by this AtomicComparer if any
        Specified by:
        getCollator in interface AtomicComparer
        Returns:
        the collation used for comparing strings, or null if not applicable
      • provideContext

        public AtomicComparer provideContext​(XPathContext context)
        Supply the dynamic context in case this is needed for the comparison
        Specified by:
        provideContext in interface AtomicComparer
        Parameters:
        context - the dynamic evaluation context
        Returns:
        either the original AtomicComparer, or a new AtomicComparer in which the context is known. The original AtomicComparer is not modified
      • compareAtomicValues

        public int compareAtomicValues​(AtomicValue a,
                                       AtomicValue b)
                                throws ClassCastException,
                                       NoDynamicContextException
        Compare two Items by converting them to strings and comparing the string values.
        Specified by:
        compareAtomicValues in interface AtomicComparer
        Parameters:
        a - the first Item to be compared.
        b - the second Item to be compared.
        Returns:
        <0 if a<b, 0 if a=b, >0 if a>b
        Throws:
        ClassCastException - if the objects are not Items, or are items that cannot be convered to strings (e.g. QNames)
        NoDynamicContextException - if this comparer required access to dynamic context information, notably the implicit timezone, and this information is not available. In general this happens if a context-dependent comparison is attempted at compile-time, and it signals the compiler to generate code that tries again at run-time.
      • save

        public String save()
        Create a string representation of this AtomicComparer that can be saved in a compiled package and used to reconstitute the AtomicComparer when the package is reloaded
        Specified by:
        save in interface AtomicComparer
        Returns:
        a string representation of the AtomicComparer