Package net.sf.saxon.expr.sort
Class UcaCollatorUsingJava
- java.lang.Object
-
- net.sf.saxon.expr.sort.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(UnicodeString s1, UnicodeString s2)
Ask whether two strings are considered equal under this collationint
compareStrings(UnicodeString o1, UnicodeString o2)
Compare two strings for equality or ordering under the rules of this collationboolean
contains(UnicodeString s1, UnicodeString s2)
Test whether one string contains another, according to the rules of the XPath contains() functionboolean
endsWith(UnicodeString s1, UnicodeString s2)
Test whether one string ends with another, according to the rules of the XPath ends-with() functionAtomicMatchKey
getCollationKey(UnicodeString s)
Get a collation key that can be used as a proxy for strings being comparedjava.lang.String
getCollationURI()
Get the collation URI corresponding to this collationjava.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 collationjava.util.Properties
getProperties()
Get the properties of the collationjava.text.RuleBasedCollator
getRuleBasedCollator()
Get the underlying Java Collator objectint
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(UnicodeString s1, UnicodeString s2)
Test whether one string starts with another, according to the rules of the XPath starts-with() functionUnicodeString
substringAfter(UnicodeString s1, UnicodeString s2)
Return the part of a string after a given substring, according to the rules of the XPath substring-after() functionUnicodeString
substringBefore(UnicodeString s1, UnicodeString s2)
Return the part of a string before a given substring, according to the rules of the XPath substring-before() function
-
-
-
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 classjava.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(UnicodeString s1, UnicodeString s2)
Ask whether two strings are considered equal under this collation- Specified by:
comparesEqual
in interfaceStringCollator
- Parameters:
s1
- the first strings2
- 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 interfaceStringCollator
- Returns:
- the collation URI
-
compareStrings
public int compareStrings(UnicodeString o1, UnicodeString o2)
Compare two strings for equality or ordering under the rules of this collation- Specified by:
compareStrings
in interfaceStringCollator
- Parameters:
o1
- the first stringo2
- the second string- Returns:
- -1, 0, or +1 according to the relative ordering of the strings
-
getCollationKey
public AtomicMatchKey getCollationKey(UnicodeString s)
Get a collation key that can be used as a proxy for strings being compared- Specified by:
getCollationKey
in interfaceStringCollator
- Parameters:
s
- the string whose collation key is required- Returns:
- a collation key
-
contains
public boolean contains(UnicodeString s1, UnicodeString s2)
Test whether one string contains another, according to the rules of the XPath contains() function- Specified by:
contains
in interfaceSubstringMatcher
- Parameters:
s1
- the containing strings2
- the contained string- Returns:
- true iff s1 contains s2
-
endsWith
public boolean endsWith(UnicodeString s1, UnicodeString s2)
Test whether one string ends with another, according to the rules of the XPath ends-with() function- Specified by:
endsWith
in interfaceSubstringMatcher
- Parameters:
s1
- the containing strings2
- the contained string- Returns:
- true iff s1 ends with s2
-
startsWith
public boolean startsWith(UnicodeString s1, UnicodeString s2)
Test whether one string starts with another, according to the rules of the XPath starts-with() function- Specified by:
startsWith
in interfaceSubstringMatcher
- Parameters:
s1
- the containing strings2
- the contained string- Returns:
- true iff s1 starts with s2
-
substringAfter
public UnicodeString substringAfter(UnicodeString s1, UnicodeString 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 interfaceSubstringMatcher
- Parameters:
s1
- the containing strings2
- the contained string- Returns:
- the part of s1 that follows the first occurrence of s2
-
substringBefore
public UnicodeString substringBefore(UnicodeString s1, UnicodeString 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 interfaceSubstringMatcher
- Parameters:
s1
- the containing strings2
- the contained string- Returns:
- the part of s1 that precedes the first occurrence of s2
-
-