Class CaseFirstCollator

java.lang.Object
net.sf.saxon.expr.sort.CaseFirstCollator
All Implemented Interfaces:
StringCollator

public class CaseFirstCollator extends Object implements StringCollator
A StringCollator that sorts lowercase before uppercase, or vice versa.

Case is irrelevant, unless the strings are equal ignoring case, in which case lowercase comes first.

  • Constructor Details

    • CaseFirstCollator

      public CaseFirstCollator(StringCollator base, boolean upperFirst, String collationURI)
      Create a CaseFirstCollator
      Parameters:
      base - the base collator, which determines how characters are sorted irrespective of case
      upperFirst - true if uppercase precedes lowercase, false otherwise
      collationURI - the URI of the collation
  • Method Details

    • makeCaseOrderedCollator

      public static StringCollator makeCaseOrderedCollator(String uri, StringCollator stringCollator, String caseOrder) throws XPathException
      Throws:
      XPathException
    • getCollationURI

      public String getCollationURI()
      Get the collation URI. It must be possible to use this collation URI to reconstitute the collation
      Specified by:
      getCollationURI in interface StringCollator
      Returns:
      a collation URI that can be used to reconstruct the collation when an XSLT package is reloaded.
    • compareStrings

      public int compareStrings(UnicodeString a, UnicodeString b)
      Compare two string objects: case is irrelevant, unless the strings are equal ignoring case, in which case lowercase comes first.
      Specified by:
      compareStrings in interface StringCollator
      Parameters:
      a - the first string
      b - the second string
      Returns:
      <0 if a<b, 0 if a=b, >0 if a>b
      Throws:
      ClassCastException - if the objects are of the wrong type for this Comparer
    • comparesEqual

      public boolean comparesEqual(UnicodeString s1, UnicodeString s2)
      Compare two strings for equality. This may be more efficient than using compareStrings and testing whether the result is zero, but it must give the same result
      Specified by:
      comparesEqual in interface StringCollator
      Parameters:
      s1 - the first string
      s2 - the second string
      Returns:
      true if and only if the strings are considered equal,
    • getCollationKey

      public AtomicMatchKey getCollationKey(UnicodeString s)
      Get a collation key for a String. The essential property of collation keys is that if (and only if) two strings are equal under the collation, then comparing the collation keys using the equals() method must return true.
      Specified by:
      getCollationKey in interface StringCollator
      Parameters:
      s - the string whose collation key is required
      Returns:
      the collation key