Class UcaCollatorUsingJava

  • All Implemented Interfaces:
    StringCollator, SubstringMatcher

    public class UcaCollatorUsingJava
    extends java.lang.Object
    implements SubstringMatcher
    This class implements (an approximation to) the UCA Collation Algorithm relying solely on the built-in Java support (that is, without using the ICU library). This provides a fallback implementation for Saxon-HE, and it is used only when the collation URI does not include the option fallback=no.
    • Constructor Summary

      Constructors 
      Constructor Description
      UcaCollatorUsingJava​(java.lang.String uri)
      Create a collation from a given collation URI
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean comparesEqual​(java.lang.CharSequence s1, java.lang.CharSequence s2)
      Ask whether two strings are considered equal under this collation
      int compareStrings​(java.lang.CharSequence o1, java.lang.CharSequence o2)
      Compare two strings for equality or ordering under the rules of this collation
      boolean contains​(java.lang.String s1, java.lang.String s2)
      Test whether one string contains another, according to the rules of the XPath contains() function
      boolean endsWith​(java.lang.String s1, java.lang.String s2)
      Test whether one string ends with another, according to the rules of the XPath ends-with() function
      AtomicMatchKey getCollationKey​(java.lang.CharSequence s)
      Get a collation key that can be used as a proxy for strings being compared
      java.lang.String getCollationURI()
      Get the collation URI corresponding to this collation
      java.text.CollationKey getJavaCollationKey​(java.lang.String source)
      Factory method to create a CollationKey that can be used as a proxy for string comparisons under this collation
      java.util.Properties getProperties()
      Get the properties of the collation
      java.text.RuleBasedCollator getRuleBasedCollator()
      Get the underlying Java Collator object
      int getStrength()
      Get the strength of the collation (primary, secondary, tertiary, etc)
      int hashCode()
      Get a hash code used to compare two collations.
      void setStrength​(int newStrength)
      Set the strength of the collation (primary, secondary, tertiary, etc)
      boolean startsWith​(java.lang.String s1, java.lang.String s2)
      Test whether one string starts with another, according to the rules of the XPath starts-with() function
      java.lang.String substringAfter​(java.lang.String s1, java.lang.String s2)
      Return the part of a string after a given substring, according to the rules of the XPath substring-after() function
      java.lang.String substringBefore​(java.lang.String s1, java.lang.String s2)
      Return the part of a string before a given substring, according to the rules of the XPath substring-before() function
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • UcaCollatorUsingJava

        public UcaCollatorUsingJava​(java.lang.String uri)
                             throws XPathException
        Create a collation from a given collation URI
        Parameters:
        uri - the collation URI, in the format defined in the W3C Functions and Operators specification
        Throws:
        XPathException - if the collation URI does not conform to the W3C rules, or if it requires features that Saxon-HE does not support
    • Method Detail

      • getRuleBasedCollator

        public java.text.RuleBasedCollator getRuleBasedCollator()
        Get the underlying Java Collator object
        Returns:
        the underlying Java Collator
      • getJavaCollationKey

        public java.text.CollationKey getJavaCollationKey​(java.lang.String source)
        Factory method to create a CollationKey that can be used as a proxy for string comparisons under this collation
        Parameters:
        source - the string whose CollationKey is required
        Returns:
        a CollationKey with the property that two collation keys are equal (according to its Object.equals(Object) method if their corresponding strings are considered to be equal under this collation
      • hashCode

        public int hashCode()
        Get a hash code used to compare two collations. (Probably not used.)
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        a suitable hash code
      • getProperties

        public java.util.Properties getProperties()
        Get the properties of the collation
        Returns:
        the properties of the collation
      • setStrength

        public void setStrength​(int newStrength)
        Set the strength of the collation (primary, secondary, tertiary, etc)
        Parameters:
        newStrength - the strength
      • getStrength

        public int getStrength()
        Get the strength of the collation (primary, secondary, tertiary, etc)
        Returns:
        the strength
      • comparesEqual

        public boolean comparesEqual​(java.lang.CharSequence s1,
                                     java.lang.CharSequence s2)
        Ask whether two strings are considered equal under this collation
        Specified by:
        comparesEqual in interface StringCollator
        Parameters:
        s1 - the first string
        s2 - the second string
        Returns:
        true if the strings are considered equal
      • getCollationURI

        public java.lang.String getCollationURI()
        Get the collation URI corresponding to this collation
        Specified by:
        getCollationURI in interface StringCollator
        Returns:
        the collation URI
      • compareStrings

        public int compareStrings​(java.lang.CharSequence o1,
                                  java.lang.CharSequence o2)
        Compare two strings for equality or ordering under the rules of this collation
        Specified by:
        compareStrings in interface StringCollator
        Parameters:
        o1 - the first string
        o2 - the second string
        Returns:
        -1, 0, or +1 according to the relative ordering of the strings
      • getCollationKey

        public AtomicMatchKey getCollationKey​(java.lang.CharSequence s)
        Get a collation key that can be used as a proxy for strings being compared
        Specified by:
        getCollationKey in interface StringCollator
        Parameters:
        s - the string whose collation key is required
        Returns:
        a collation key
      • contains

        public boolean contains​(java.lang.String s1,
                                java.lang.String s2)
        Test whether one string contains another, according to the rules of the XPath contains() function
        Specified by:
        contains in interface SubstringMatcher
        Parameters:
        s1 - the containing string
        s2 - the contained string
        Returns:
        true iff s1 contains s2
      • endsWith

        public boolean endsWith​(java.lang.String s1,
                                java.lang.String s2)
        Test whether one string ends with another, according to the rules of the XPath ends-with() function
        Specified by:
        endsWith in interface SubstringMatcher
        Parameters:
        s1 - the containing string
        s2 - the contained string
        Returns:
        true iff s1 ends with s2
      • startsWith

        public boolean startsWith​(java.lang.String s1,
                                  java.lang.String s2)
        Test whether one string starts with another, according to the rules of the XPath starts-with() function
        Specified by:
        startsWith in interface SubstringMatcher
        Parameters:
        s1 - the containing string
        s2 - the contained string
        Returns:
        true iff s1 starts with s2
      • substringAfter

        public java.lang.String substringAfter​(java.lang.String s1,
                                               java.lang.String s2)
        Return the part of a string after a given substring, according to the rules of the XPath substring-after() function
        Specified by:
        substringAfter in interface SubstringMatcher
        Parameters:
        s1 - the containing string
        s2 - the contained string
        Returns:
        the part of s1 that follows the first occurrence of s2
      • substringBefore

        public java.lang.String substringBefore​(java.lang.String s1,
                                                java.lang.String s2)
        Return the part of a string before a given substring, according to the rules of the XPath substring-before() function
        Specified by:
        substringBefore in interface SubstringMatcher
        Parameters:
        s1 - the containing string
        s2 - the contained string
        Returns:
        the part of s1 that precedes the first occurrence of s2