Package org.h2.value
Class CompareMode
- java.lang.Object
-
- org.h2.value.CompareMode
-
- All Implemented Interfaces:
java.util.Comparator<Value>
- Direct Known Subclasses:
CompareModeDefault
,CompareModeIcu4J
public class CompareMode extends java.lang.Object implements java.util.Comparator<Value>
Instances of this class can compare strings. Case sensitive and case insensitive comparison is supported, and comparison using a collator.
-
-
Field Summary
Fields Modifier and Type Field Description private static boolean
CAN_USE_ICU4J
static java.lang.String
CHARSET
This constant means the charset specified should be used.static java.lang.String
DEFAULT
This constant means the default collator should be used, even if ICU4J is in the classpath.static java.lang.String
ICU4J
This constant means ICU4J should be used (this will fail if it is not in the classpath).private static CompareMode
lastUsed
private static java.util.Locale[]
LOCALES
private java.lang.String
name
static java.lang.String
OFF
This constant means there is no collator set, and the default string comparison is to be used.private int
strength
-
Constructor Summary
Constructors Modifier Constructor Description protected
CompareMode(java.lang.String name, int strength)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compare(Value o1, Value o2)
(package private) static boolean
compareLocaleNames(java.util.Locale locale, java.lang.String name)
Compare name of the locale with the given name.int
compareString(java.lang.String a, java.lang.String b, boolean ignoreCase)
Compare two strings.boolean
equals(java.lang.Object obj)
boolean
equalsChars(java.lang.String a, int ai, java.lang.String b, int bi, boolean ignoreCase)
Compare two characters in a string.static java.util.Locale[]
getCollationLocales(boolean onlyIfInitialized)
Returns available locales for collations.static java.text.Collator
getCollator(java.lang.String name)
Get the collator object for the given language name or language / country combination.static CompareMode
getInstance(java.lang.String name, int strength)
Create a new compare mode with the given collator and strength.java.lang.String
getName()
static java.lang.String
getName(java.util.Locale l)
Get the collation name.int
getStrength()
int
hashCode()
-
-
-
Field Detail
-
OFF
public static final java.lang.String OFF
This constant means there is no collator set, and the default string comparison is to be used.- See Also:
- Constant Field Values
-
DEFAULT
public static final java.lang.String DEFAULT
This constant means the default collator should be used, even if ICU4J is in the classpath.- See Also:
- Constant Field Values
-
ICU4J
public static final java.lang.String ICU4J
This constant means ICU4J should be used (this will fail if it is not in the classpath).- See Also:
- Constant Field Values
-
CHARSET
public static final java.lang.String CHARSET
This constant means the charset specified should be used. This will fail if the specified charset does not exist.- See Also:
- Constant Field Values
-
LOCALES
private static java.util.Locale[] LOCALES
-
lastUsed
private static volatile CompareMode lastUsed
-
CAN_USE_ICU4J
private static final boolean CAN_USE_ICU4J
-
name
private final java.lang.String name
-
strength
private final int strength
-
-
Method Detail
-
getInstance
public static CompareMode getInstance(java.lang.String name, int strength)
Create a new compare mode with the given collator and strength. If required, a new CompareMode is created, or if possible the last one is returned. A cache is used to speed up comparison when using a collator; CollationKey objects are cached.- Parameters:
name
- the collation name or nullstrength
- the collation strength- Returns:
- the compare mode
-
getCollationLocales
public static java.util.Locale[] getCollationLocales(boolean onlyIfInitialized)
Returns available locales for collations.- Parameters:
onlyIfInitialized
- iftrue
, returnsnull
when locales are not yet initialized- Returns:
- available locales for collations.
-
equalsChars
public boolean equalsChars(java.lang.String a, int ai, java.lang.String b, int bi, boolean ignoreCase)
Compare two characters in a string.- Parameters:
a
- the first stringai
- the character index in the first stringb
- the second stringbi
- the character index in the second stringignoreCase
- true if a case-insensitive comparison should be made- Returns:
- true if the characters are equals
-
compareString
public int compareString(java.lang.String a, java.lang.String b, boolean ignoreCase)
Compare two strings.- Parameters:
a
- the first stringb
- the second stringignoreCase
- true if a case-insensitive comparison should be made- Returns:
- -1 if the first string is 'smaller', 1 if the second string is smaller, and 0 if they are equal
-
getName
public static java.lang.String getName(java.util.Locale l)
Get the collation name.- Parameters:
l
- the locale- Returns:
- the name of the collation
-
compareLocaleNames
static boolean compareLocaleNames(java.util.Locale locale, java.lang.String name)
Compare name of the locale with the given name. The case of the name is ignored.- Parameters:
locale
- the localename
- the name- Returns:
- true if they match
-
getCollator
public static java.text.Collator getCollator(java.lang.String name)
Get the collator object for the given language name or language / country combination.- Parameters:
name
- the language name- Returns:
- the collator
-
getName
public java.lang.String getName()
-
getStrength
public int getStrength()
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equals
in interfacejava.util.Comparator<Value>
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
-