Package org.h2.value

Class CompareMode

java.lang.Object
org.h2.value.CompareMode
All Implemented Interfaces:
Comparator<Value>
Direct Known Subclasses:
CompareModeDefault, CompareModeIcu4J

public class CompareMode extends Object implements Comparator<Value>
Instances of this class can compare strings. Case sensitive and case insensitive comparison is supported, and comparison using a collator.
  • Field Details

    • OFF

      public static final String OFF
      This constant means there is no collator set, and the default string comparison is to be used.
      See Also:
    • DEFAULT

      public static final String DEFAULT
      This constant means the default collator should be used, even if ICU4J is in the classpath.
      See Also:
    • ICU4J

      public static final String ICU4J
      This constant means ICU4J should be used (this will fail if it is not in the classpath).
      See Also:
    • CHARSET

      public static final String CHARSET
      This constant means the charset specified should be used. This will fail if the specified charset does not exist.
      See Also:
    • LOCALES

      private static Locale[] LOCALES
    • lastUsed

      private static volatile CompareMode lastUsed
    • CAN_USE_ICU4J

      private static final boolean CAN_USE_ICU4J
    • name

      private final String name
    • strength

      private final int strength
  • Constructor Details

    • CompareMode

      protected CompareMode(String name, int strength)
  • Method Details

    • getInstance

      public static CompareMode getInstance(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 null
      strength - the collation strength
      Returns:
      the compare mode
    • getCollationLocales

      public static Locale[] getCollationLocales(boolean onlyIfInitialized)
      Returns available locales for collations.
      Parameters:
      onlyIfInitialized - if true, returns null when locales are not yet initialized
      Returns:
      available locales for collations.
    • equalsChars

      public boolean equalsChars(String a, int ai, String b, int bi, boolean ignoreCase)
      Compare two characters in a string.
      Parameters:
      a - the first string
      ai - the character index in the first string
      b - the second string
      bi - the character index in the second string
      ignoreCase - true if a case-insensitive comparison should be made
      Returns:
      true if the characters are equals
    • compareString

      public int compareString(String a, String b, boolean ignoreCase)
      Compare two strings.
      Parameters:
      a - the first string
      b - the second string
      ignoreCase - 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 String getName(Locale l)
      Get the collation name.
      Parameters:
      l - the locale
      Returns:
      the name of the collation
    • compareLocaleNames

      static boolean compareLocaleNames(Locale locale, String name)
      Compare name of the locale with the given name. The case of the name is ignored.
      Parameters:
      locale - the locale
      name - the name
      Returns:
      true if they match
    • getCollator

      public static Collator getCollator(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 String getName()
    • getStrength

      public int getStrength()
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface Comparator<Value>
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • compare

      public int compare(Value o1, Value o2)
      Specified by:
      compare in interface Comparator<Value>