| /** |
| ******************************************************************************* |
| * Copyright (C) 1996-2005, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| * |
| ******************************************************************************* |
| */ |
| |
| package com.ibm.icu4jni.text; |
| |
| /** |
| * Interface for storing ICU collation equivalent enum values. |
| * Constants with the prefix VALUE corresponds to ICU's UColAttributeValues, |
| * the rest corresponds to UColAttribute. |
| * @author syn wee quek |
| * @stable ICU 2.4 |
| */ |
| |
| public final class CollationAttribute |
| { |
| // Collation strength constants ---------------------------------- |
| /** |
| * Default value, accepted by most attributes |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_DEFAULT = -1; |
| /** |
| * Primary collation strength |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_PRIMARY = 0; |
| /** |
| * Secondary collation strength |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_SECONDARY = 1; |
| /** |
| * Tertiary collation strength |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_TERTIARY = 2; |
| /** |
| * Default collation strength |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_DEFAULT_STRENGTH = VALUE_TERTIARY; |
| /** |
| * Quaternary collation strength |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_QUATERNARY = 3; |
| /** |
| * Identical collation strength |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_IDENTICAL = 15; |
| |
| /** |
| * Turn the feature off - works for FRENCH_COLLATION, CASE_LEVEL, |
| * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_OFF = 16; |
| /** @stable ICU 2.4 */ |
| public static final int VALUE_ON = 17; |
| |
| /** |
| * ALTERNATE_HANDLING mode constants |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_SHIFTED = 20; |
| /** @stable ICU 2.4 */ |
| public static final int VALUE_NON_IGNORABLE = 21; |
| |
| /** |
| * CASE_FIRST mode constants |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_LOWER_FIRST = 24; |
| /** @stable ICU 2.4 */ |
| public static final int VALUE_UPPER_FIRST = 25; |
| |
| /** |
| * NORMALIZATION_MODE mode constants |
| * @deprecated ICU 2.4. Users advised to use VALUE_ON instead. |
| */ |
| public static final int VALUE_ON_WITHOUT_HANGUL = 28; |
| |
| /** |
| * Number of attribute value constants |
| * @stable ICU 2.4 |
| */ |
| public static final int VALUE_ATTRIBUTE_VALUE_COUNT = 29; |
| |
| // Collation attribute constants ----------------------------------- |
| |
| /** |
| * Attribute for direction of secondary weights |
| * @stable ICU 2.4 |
| */ |
| public static final int FRENCH_COLLATION = 0; |
| /** |
| * Attribute for handling variable elements |
| * @stable ICU 2.4 |
| */ |
| public static final int ALTERNATE_HANDLING = 1; |
| /** |
| * Who goes first, lower case or uppercase. |
| * @stable ICU 2.4 |
| */ |
| public static final int CASE_FIRST = 2; |
| /** |
| * Do we have an extra case level |
| * @stable ICU 2.4 |
| */ |
| public static final int CASE_LEVEL = 3; |
| /** |
| * Attribute for normalization |
| * @stable ICU 2.4 |
| */ |
| public static final int NORMALIZATION_MODE = 4; |
| /** |
| * Attribute for strength |
| * @stable ICU 2.4 |
| */ |
| public static final int STRENGTH = 5; |
| /** |
| * Attribute count |
| * @stable ICU 2.4 |
| */ |
| public static final int ATTRIBUTE_COUNT = 6; |
| |
| // package methods -------------------------------------------------- |
| |
| /** |
| * Checks if argument is a valid collation strength |
| * @param strength potential collation strength |
| * @return true if strength is a valid collation strength, false otherwise |
| */ |
| static boolean checkStrength(int strength) |
| { |
| if (strength < VALUE_PRIMARY || |
| (strength > VALUE_QUATERNARY && strength != VALUE_IDENTICAL)) |
| return false; |
| return true; |
| } |
| |
| /** |
| * Checks if argument is a valid collation type |
| * @param type collation type to be checked |
| * @return true if type is a valid collation type, false otherwise |
| */ |
| static boolean checkType(int type) |
| { |
| if (type < FRENCH_COLLATION || type > STRENGTH) |
| return false; |
| return true; |
| } |
| |
| /** |
| * Checks if argument is a valid normalization type |
| * @param type normalization type to be checked |
| * @return true if type is a valid normalization type, false otherwise |
| */ |
| static boolean checkNormalization(int type) |
| { |
| if (type != VALUE_ON && type != VALUE_OFF |
| && type != VALUE_ON_WITHOUT_HANGUL) { |
| return false; |
| } |
| return true; |
| } |
| |
| /** |
| * Checks if attribute type and corresponding attribute value is valid |
| * @param type attribute type |
| * @param value attribute value |
| * @return true if the pair is valid, false otherwise |
| */ |
| static boolean checkAttribute(int type, int value) |
| { |
| if (value == VALUE_DEFAULT) { |
| return true; |
| } |
| |
| switch (type) |
| { |
| case FRENCH_COLLATION : |
| if (value >= VALUE_OFF && value <= VALUE_ON) |
| return true; |
| break; |
| case ALTERNATE_HANDLING : |
| if (value >= VALUE_SHIFTED && |
| value <= VALUE_NON_IGNORABLE) |
| return true; |
| break; |
| case CASE_FIRST : |
| if (value >= VALUE_LOWER_FIRST && |
| value <= VALUE_UPPER_FIRST) |
| return true; |
| break; |
| case CASE_LEVEL : |
| return (value == VALUE_ON || |
| value <= VALUE_OFF); |
| case NORMALIZATION_MODE : |
| return (value == VALUE_OFF || value == VALUE_ON || |
| value == VALUE_ON_WITHOUT_HANGUL); |
| case STRENGTH : |
| checkStrength(value); |
| } |
| return false; |
| } |
| } |