net.sf.saxon.dotnet

Class DotNetComparator

Implemented Interfaces:
Serializable, StringCollator, SubstringMatcher

public class DotNetComparator
extends java.lang.Object
implements SubstringMatcher

A Collation implemented as a wrapper around a .NET CompareInfo object. Note that the objects to be compared must be strings.

Constructor Summary

DotNetComparator(CompareInfo comparer, CompareOptions options)
Create a collation based on a given .NET CompareInfo and CompareOptions

Method Summary

int
compareStrings(String o1, String o2)
Compares its two arguments for order.
boolean
comparesEqual(String s1, String s2)
Test whether one string is equal to another, according to the rules of the XPath compare() function.
boolean
contains(String s1, String s2)
Test whether one string contains another, according to the rules of the XPath contains() function
boolean
endsWith(String s1, String s2)
Test whether one string ends with another, according to the rules of the XPath ends-with() function
Object
getCollationKey(String value)
Return a collation key.
boolean
startsWith(String s1, String s2)
Test whether one string starts with another, according to the rules of the XPath starts-with() function
String
substringAfter(String s1, String s2)
Return the part of a string after a given substring, according to the rules of the XPath substring-after() function
String
substringBefore(String s1, String s2)
Return the part of a string before a given substring, according to the rules of the XPath substring-before() function

Constructor Details

DotNetComparator

public DotNetComparator(CompareInfo comparer,
                        CompareOptions options)
Create a collation based on a given .NET CompareInfo and CompareOptions
Parameters:
comparer - the CompareInfo, which determines the language-specific collation rules to be used
options - Options to be used in performing comparisons, for example whether they are to be case-blind and/or accent-blind

Method Details

compareStrings

public int compareStrings(String o1,
                          String o2)
Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

The implementor must ensure that sgn(compare(x, y)) == -sgn(compare(y, x)) for all x and y. (This implies that compare(x, y) must throw an exception if and only if compare(y, x) throws an exception.)

The implementor must also ensure that the relation is transitive: ((compare(x, y)>0) && (compare(y, z)>0)) implies compare(x, z)>0.

Finally, the implementer must ensure that compare(x, y)==0 implies that sgn(compare(x, z))==sgn(compare(y, z)) for all z.

It is generally the case, but not strictly required that (compare(x, y)==0) == (x.equals(y)). Generally speaking, any comparator that violates this condition should clearly indicate this fact. The recommended language is "Note: this comparator imposes orderings that are inconsistent with equals."

Specified by:
compareStrings in interface StringCollator
Parameters:
o1 - the first object to be compared.
o2 - the second object to be compared.
Returns:
a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

comparesEqual

public boolean comparesEqual(String s1,
                             String s2)
Test whether one string is equal to another, according to the rules of the XPath compare() function. The result is true if and only if the compare() method returns zero: but the implementation may be more efficient than calling compare and testing the result for zero
Specified by:
comparesEqual in interface SubstringMatcher
Parameters:
s1 - the first string
s2 - the second string
Returns:
true iff s1 equals s2

contains

public boolean contains(String s1,
                        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(String s1,
                        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

getCollationKey

public Object getCollationKey(String value)
Return a collation key. This is a wrapper around the System.Globalization.Sortkey object, where the wrapper implements the required comparison methods.
Specified by:
getCollationKey in interface StringCollator

startsWith

public boolean startsWith(String s1,
                          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 String substringAfter(String s1,
                             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 String substringBefore(String s1,
                              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