Package org.h2.value

Class 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()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Comparator

        reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
    • 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
    • Constructor Detail

      • CompareMode

        protected CompareMode​(java.lang.String name,
                              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 null
        strength - the collation strength
        Returns:
        the compare mode
      • getCollationLocales

        public static java.util.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​(java.lang.String a,
                                   int ai,
                                   java.lang.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​(java.lang.String a,
                                 java.lang.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 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 locale
        name - 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 interface java.util.Comparator<Value>
        Overrides:
        equals in class java.lang.Object
      • hashCode

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

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