Move util classes under common
Also why did we have two copies of LocaleUtils >.> Bug: 18108776 Change-Id: I03b4403dfd51934e66b567f2f8b87da419cfb3ab
This commit is contained in:
parent
7286667754
commit
5b91b551e5
50 changed files with 56 additions and 244 deletions
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.latin.utils;
|
||||
package com.android.inputmethod.latin.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.latin.utils;
|
||||
package com.android.inputmethod.latin.common;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
* the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.latin.utils;
|
||||
package com.android.inputmethod.latin.common;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
|
@ -14,9 +14,7 @@
|
|||
* the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.dictionarypack;
|
||||
|
||||
import android.text.TextUtils;
|
||||
package com.android.inputmethod.latin.common;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
@ -103,8 +101,8 @@ public final class LocaleUtils {
|
|||
* @return a constant that measures how well the tested locale matches the reference locale.
|
||||
*/
|
||||
public static int getMatchLevel(final String referenceLocale, final String testedLocale) {
|
||||
if (TextUtils.isEmpty(referenceLocale)) {
|
||||
return TextUtils.isEmpty(testedLocale) ? LOCALE_FULL_MATCH : LOCALE_ANY_MATCH;
|
||||
if (StringUtils.isEmpty(referenceLocale)) {
|
||||
return StringUtils.isEmpty(testedLocale) ? LOCALE_FULL_MATCH : LOCALE_ANY_MATCH;
|
||||
}
|
||||
if (null == testedLocale) return LOCALE_NO_MATCH;
|
||||
final String[] referenceParams = referenceLocale.split("_", 3);
|
|
@ -31,9 +31,9 @@ import android.view.inputmethod.EditorInfo;
|
|||
import com.android.inputmethod.keyboard.Key;
|
||||
import com.android.inputmethod.keyboard.Keyboard;
|
||||
import com.android.inputmethod.keyboard.KeyboardView;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.settings.Settings;
|
||||
import com.android.inputmethod.latin.settings.SettingsValues;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ import com.android.inputmethod.annotations.UsedForTesting;
|
|||
import com.android.inputmethod.latin.SuggestedWords;
|
||||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.define.DebugFlags;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
|
|
|
@ -31,6 +31,7 @@ import android.text.TextUtils;
|
|||
import android.util.Log;
|
||||
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.DebugLogUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
@ -25,6 +25,7 @@ import android.os.IBinder;
|
|||
import android.widget.Toast;
|
||||
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
package com.android.inputmethod.dictionarypack;
|
||||
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ContentResolver;
|
||||
|
|
|
@ -26,6 +26,7 @@ import android.widget.TextView;
|
|||
|
||||
import com.android.inputmethod.annotations.ExternallyReferenced;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ import com.android.inputmethod.compat.ConnectivityManagerCompatUtils;
|
|||
import com.android.inputmethod.compat.DownloadManagerCompatUtils;
|
||||
import com.android.inputmethod.compat.NotificationCompatUtils;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.ApplicationUtils;
|
||||
import com.android.inputmethod.latin.utils.DebugLogUtils;
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
|
|||
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
|
||||
import com.android.inputmethod.keyboard.internal.KeyboardParams;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
|
@ -56,9 +56,9 @@ import com.android.inputmethod.latin.R;
|
|||
import com.android.inputmethod.latin.RichInputMethodSubtype;
|
||||
import com.android.inputmethod.latin.SuggestedWords;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.settings.DebugSettings;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.utils.TypefaceUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
|
|
@ -31,7 +31,7 @@ import com.android.inputmethod.accessibility.MoreKeysKeyboardAccessibilityDelega
|
|||
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
|
||||
/**
|
||||
* A view that renders a virtual {@link MoreKeysKeyboard}. It handles rendering of keys and
|
||||
|
|
|
@ -35,10 +35,10 @@ import com.android.inputmethod.keyboard.internal.TimerProxy;
|
|||
import com.android.inputmethod.keyboard.internal.TypingTimeRecorder;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.InputPointers;
|
||||
import com.android.inputmethod.latin.define.DebugFlags;
|
||||
import com.android.inputmethod.latin.settings.Settings;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.utils.ResourceUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
|
@ -24,7 +24,7 @@ import android.graphics.PorterDuffXfermode;
|
|||
import android.util.AttributeSet;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ import android.text.TextUtils;
|
|||
import com.android.inputmethod.keyboard.PointerTracker;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.SuggestedWords;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
|
||||
import com.android.inputmethod.keyboard.Key;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.utils.ViewLayoutUtils;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
|
|
|
@ -21,10 +21,10 @@ import android.util.SparseIntArray;
|
|||
|
||||
import com.android.inputmethod.compat.CharacterCompat;
|
||||
import com.android.inputmethod.keyboard.Key;
|
||||
import com.android.inputmethod.latin.common.CollectionUtils;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.define.DebugFlags;
|
||||
import com.android.inputmethod.latin.utils.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
|
|
@ -22,7 +22,7 @@ import android.view.MotionEvent;
|
|||
import com.android.inputmethod.keyboard.Key;
|
||||
import com.android.inputmethod.keyboard.KeyDetector;
|
||||
import com.android.inputmethod.keyboard.PointerTracker;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
|
||||
public final class NonDistinctMultitouchHelper {
|
||||
private static final String TAG = NonDistinctMultitouchHelper.class.getSimpleName();
|
||||
|
|
|
@ -23,7 +23,7 @@ import android.graphics.Path;
|
|||
|
||||
import com.android.inputmethod.keyboard.PointerTracker;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
|
||||
/**
|
||||
* Draw rubber band preview graphics during sliding key input.
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package com.android.inputmethod.latin;
|
||||
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.android.inputmethod.annotations.UsedForTesting;
|
|||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.common.ComposedData;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.common.InputPointers;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
|
@ -33,7 +34,6 @@ import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
|||
import com.android.inputmethod.latin.makedict.WordProperty;
|
||||
import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
import com.android.inputmethod.latin.utils.JniUtils;
|
||||
import com.android.inputmethod.latin.utils.WordInputEventForPersonalization;
|
||||
|
||||
|
|
|
@ -21,11 +21,11 @@ import android.content.SharedPreferences;
|
|||
import android.content.res.AssetFileDescriptor;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.android.inputmethod.annotations.UsedForTesting;
|
|||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.common.ComposedData;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
import com.android.inputmethod.latin.makedict.FormatSpec;
|
||||
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||
|
@ -32,7 +33,6 @@ import com.android.inputmethod.latin.utils.AsyncResultHolder;
|
|||
import com.android.inputmethod.latin.utils.CombinedFormatUtils;
|
||||
import com.android.inputmethod.latin.utils.DistracterFilter;
|
||||
import com.android.inputmethod.latin.utils.ExecutorUtils;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
import com.android.inputmethod.latin.utils.WordInputEventForPersonalization;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
@ -77,6 +77,7 @@ import com.android.inputmethod.keyboard.TextDecoratorUi;
|
|||
import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
|
||||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.InputPointers;
|
||||
import com.android.inputmethod.latin.define.DebugFlags;
|
||||
import com.android.inputmethod.latin.define.ProductionFlags;
|
||||
|
@ -93,7 +94,6 @@ import com.android.inputmethod.latin.suggestions.SuggestionStripViewAccessor;
|
|||
import com.android.inputmethod.latin.touchinputconsumer.GestureConsumer;
|
||||
import com.android.inputmethod.latin.utils.ApplicationUtils;
|
||||
import com.android.inputmethod.latin.utils.CapsModeUtils;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.utils.CursorAnchorInfoUtils;
|
||||
import com.android.inputmethod.latin.utils.DialogUtils;
|
||||
import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
|
||||
|
|
|
@ -23,7 +23,7 @@ import android.view.inputmethod.InputMethodSubtype;
|
|||
|
||||
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
|
|
@ -21,10 +21,10 @@ import com.android.inputmethod.event.Event;
|
|||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.common.ComposedData;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.InputPointers;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.define.DebugFlags;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
|
@ -26,10 +26,10 @@ import android.os.Environment;
|
|||
import com.android.inputmethod.latin.BinaryDictionaryFileDumper;
|
||||
import com.android.inputmethod.latin.BinaryDictionaryGetter;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
import com.android.inputmethod.latin.utils.DialogUtils;
|
||||
import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
|
|
|
@ -19,7 +19,7 @@ package com.android.inputmethod.latin.personalization;
|
|||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
|
|
|
@ -34,10 +34,10 @@ import com.android.inputmethod.latin.NgramContext;
|
|||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.WordComposer;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.ScriptUtils;
|
||||
import com.android.inputmethod.latin.utils.SuggestionResults;
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ import android.widget.EditText;
|
|||
|
||||
import com.android.inputmethod.compat.UserDictionaryCompatUtils;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
|
|
|
@ -31,7 +31,7 @@ import android.view.inputmethod.InputMethodManager;
|
|||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
package com.android.inputmethod.latin.userdictionary;
|
||||
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.android.inputmethod.latin.AssetFileAddress;
|
|||
import com.android.inputmethod.latin.BinaryDictionaryGetter;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
|
||||
|
|
|
@ -1,195 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.inputmethod.latin.utils;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* A class to help with handling Locales in string form.
|
||||
*
|
||||
* This file has the same meaning and features (and shares all of its code) with
|
||||
* the one in the dictionary pack. They need to be kept synchronized; for any
|
||||
* update/bugfix to this file, consider also updating/fixing the version in the
|
||||
* dictionary pack.
|
||||
*/
|
||||
public final class LocaleUtils {
|
||||
private LocaleUtils() {
|
||||
// Intentional empty constructor for utility class.
|
||||
}
|
||||
|
||||
// Locale match level constants.
|
||||
// A higher level of match is guaranteed to have a higher numerical value.
|
||||
// Some room is left within constants to add match cases that may arise necessary
|
||||
// in the future, for example differentiating between the case where the countries
|
||||
// are both present and different, and the case where one of the locales does not
|
||||
// specify the countries. This difference is not needed now.
|
||||
|
||||
// Nothing matches.
|
||||
public static final int LOCALE_NO_MATCH = 0;
|
||||
// The languages matches, but the country are different. Or, the reference locale requires a
|
||||
// country and the tested locale does not have one.
|
||||
public static final int LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER = 3;
|
||||
// The languages and country match, but the variants are different. Or, the reference locale
|
||||
// requires a variant and the tested locale does not have one.
|
||||
public static final int LOCALE_LANGUAGE_AND_COUNTRY_MATCH_VARIANT_DIFFER = 6;
|
||||
// The required locale is null or empty so it will accept anything, and the tested locale
|
||||
// is non-null and non-empty.
|
||||
public static final int LOCALE_ANY_MATCH = 10;
|
||||
// The language matches, and the tested locale specifies a country but the reference locale
|
||||
// does not require one.
|
||||
public static final int LOCALE_LANGUAGE_MATCH = 15;
|
||||
// The language and the country match, and the tested locale specifies a variant but the
|
||||
// reference locale does not require one.
|
||||
public static final int LOCALE_LANGUAGE_AND_COUNTRY_MATCH = 20;
|
||||
// The compared locales are fully identical. This is the best match level.
|
||||
public static final int LOCALE_FULL_MATCH = 30;
|
||||
|
||||
// The level at which a match is "normally" considered a locale match with standard algorithms.
|
||||
// Don't use this directly, use #isMatch to test.
|
||||
private static final int LOCALE_MATCH = LOCALE_ANY_MATCH;
|
||||
|
||||
// Make this match the maximum match level. If this evolves to have more than 2 digits
|
||||
// when written in base 10, also adjust the getMatchLevelSortedString method.
|
||||
private static final int MATCH_LEVEL_MAX = 30;
|
||||
|
||||
/**
|
||||
* Return how well a tested locale matches a reference locale.
|
||||
*
|
||||
* This will check the tested locale against the reference locale and return a measure of how
|
||||
* a well it matches the reference. The general idea is that the tested locale has to match
|
||||
* every specified part of the required locale. A full match occur when they are equal, a
|
||||
* partial match when the tested locale agrees with the reference locale but is more specific,
|
||||
* and a difference when the tested locale does not comply with all requirements from the
|
||||
* reference locale.
|
||||
* In more detail, if the reference locale specifies at least a language and the testedLocale
|
||||
* does not specify one, or specifies a different one, LOCALE_NO_MATCH is returned. If the
|
||||
* reference locale is empty or null, it will match anything - in the form of LOCALE_FULL_MATCH
|
||||
* if the tested locale is empty or null, and LOCALE_ANY_MATCH otherwise. If the reference and
|
||||
* tested locale agree on the language, but not on the country,
|
||||
* LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER is returned if the reference locale specifies a country,
|
||||
* and LOCALE_LANGUAGE_MATCH otherwise.
|
||||
* If they agree on both the language and the country, but not on the variant,
|
||||
* LOCALE_LANGUAGE_AND_COUNTRY_MATCH_VARIANT_DIFFER is returned if the reference locale
|
||||
* specifies a variant, and LOCALE_LANGUAGE_AND_COUNTRY_MATCH otherwise. If everything matches,
|
||||
* LOCALE_FULL_MATCH is returned.
|
||||
* Examples:
|
||||
* en <=> en_US => LOCALE_LANGUAGE_MATCH
|
||||
* en_US <=> en => LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER
|
||||
* en_US_POSIX <=> en_US_Android => LOCALE_LANGUAGE_AND_COUNTRY_MATCH_VARIANT_DIFFER
|
||||
* en_US <=> en_US_Android => LOCALE_LANGUAGE_AND_COUNTRY_MATCH
|
||||
* sp_US <=> en_US => LOCALE_NO_MATCH
|
||||
* de <=> de => LOCALE_FULL_MATCH
|
||||
* en_US <=> en_US => LOCALE_FULL_MATCH
|
||||
* "" <=> en_US => LOCALE_ANY_MATCH
|
||||
*
|
||||
* @param referenceLocale the reference locale to test against.
|
||||
* @param testedLocale the locale to test.
|
||||
* @return a constant that measures how well the tested locale matches the reference locale.
|
||||
*/
|
||||
public static int getMatchLevel(String referenceLocale, String testedLocale) {
|
||||
if (TextUtils.isEmpty(referenceLocale)) {
|
||||
return TextUtils.isEmpty(testedLocale) ? LOCALE_FULL_MATCH : LOCALE_ANY_MATCH;
|
||||
}
|
||||
if (null == testedLocale) return LOCALE_NO_MATCH;
|
||||
String[] referenceParams = referenceLocale.split("_", 3);
|
||||
String[] testedParams = testedLocale.split("_", 3);
|
||||
// By spec of String#split, [0] cannot be null and length cannot be 0.
|
||||
if (!referenceParams[0].equals(testedParams[0])) return LOCALE_NO_MATCH;
|
||||
switch (referenceParams.length) {
|
||||
case 1:
|
||||
return 1 == testedParams.length ? LOCALE_FULL_MATCH : LOCALE_LANGUAGE_MATCH;
|
||||
case 2:
|
||||
if (1 == testedParams.length) return LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER;
|
||||
if (!referenceParams[1].equals(testedParams[1]))
|
||||
return LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER;
|
||||
if (3 == testedParams.length) return LOCALE_LANGUAGE_AND_COUNTRY_MATCH;
|
||||
return LOCALE_FULL_MATCH;
|
||||
case 3:
|
||||
if (1 == testedParams.length) return LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER;
|
||||
if (!referenceParams[1].equals(testedParams[1]))
|
||||
return LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER;
|
||||
if (2 == testedParams.length) return LOCALE_LANGUAGE_AND_COUNTRY_MATCH_VARIANT_DIFFER;
|
||||
if (!referenceParams[2].equals(testedParams[2]))
|
||||
return LOCALE_LANGUAGE_AND_COUNTRY_MATCH_VARIANT_DIFFER;
|
||||
return LOCALE_FULL_MATCH;
|
||||
}
|
||||
// It should be impossible to come here
|
||||
return LOCALE_NO_MATCH;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a string that represents this match level, with better matches first.
|
||||
*
|
||||
* The strings are sorted in lexicographic order: a better match will always be less than
|
||||
* a worse match when compared together.
|
||||
*/
|
||||
public static String getMatchLevelSortedString(int matchLevel) {
|
||||
// This works because the match levels are 0~99 (actually 0~30)
|
||||
// Ideally this should use a number of digits equals to the 1og10 of the greater matchLevel
|
||||
return String.format(Locale.ROOT, "%02d", MATCH_LEVEL_MAX - matchLevel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find out whether a match level should be considered a match.
|
||||
*
|
||||
* This method takes a match level as returned by the #getMatchLevel method, and returns whether
|
||||
* it should be considered a match in the usual sense with standard Locale functions.
|
||||
*
|
||||
* @param level the match level, as returned by getMatchLevel.
|
||||
* @return whether this is a match or not.
|
||||
*/
|
||||
public static boolean isMatch(int level) {
|
||||
return LOCALE_MATCH <= level;
|
||||
}
|
||||
|
||||
private static final HashMap<String, Locale> sLocaleCache = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Creates a locale from a string specification.
|
||||
*/
|
||||
@Nullable
|
||||
public static Locale constructLocaleFromString(@Nullable final String localeStr) {
|
||||
if (localeStr == null) {
|
||||
// TODO: Should this be Locale.ROOT?
|
||||
return null;
|
||||
}
|
||||
synchronized (sLocaleCache) {
|
||||
Locale retval = sLocaleCache.get(localeStr);
|
||||
if (retval != null) {
|
||||
return retval;
|
||||
}
|
||||
final String[] localeParams = localeStr.split("_", 3);
|
||||
if (localeParams.length == 1) {
|
||||
retval = new Locale(localeParams[0]);
|
||||
} else if (localeParams.length == 2) {
|
||||
retval = new Locale(localeParams[0], localeParams[1]);
|
||||
} else if (localeParams.length == 3) {
|
||||
retval = new Locale(localeParams[0], localeParams[1], localeParams[2]);
|
||||
}
|
||||
if (retval != null) {
|
||||
sLocaleCache.put(localeStr, retval);
|
||||
}
|
||||
// TODO: Should return Locale.ROOT instead of null?
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -28,6 +28,7 @@ import android.view.inputmethod.InputMethodSubtype;
|
|||
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.RichInputMethodSubtype;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
|
|
@ -30,7 +30,7 @@ import com.android.inputmethod.keyboard.KeyboardLayoutSetTestsBase;
|
|||
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
|
||||
import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyVisual;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.RunInLocale;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ import android.util.Pair;
|
|||
|
||||
import com.android.inputmethod.latin.NgramContext.WordInfo;
|
||||
import com.android.inputmethod.latin.common.CodePointUtils;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictDecoder;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
|
@ -30,8 +32,6 @@ import com.android.inputmethod.latin.makedict.FusionDictionary;
|
|||
import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
|
||||
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.WordInputEventForPersonalization;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
@ -24,12 +24,12 @@ import android.util.Pair;
|
|||
import com.android.inputmethod.latin.NgramContext.WordInfo;
|
||||
import com.android.inputmethod.latin.common.CodePointUtils;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
import com.android.inputmethod.latin.makedict.FormatSpec;
|
||||
import com.android.inputmethod.latin.makedict.WeightedString;
|
||||
import com.android.inputmethod.latin.makedict.WordProperty;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
|
|
@ -44,10 +44,10 @@ import com.android.inputmethod.latin.Dictionary.PhonyDictionary;
|
|||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.InputPointers;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.settings.DebugSettings;
|
||||
import com.android.inputmethod.latin.settings.Settings;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
|
|
@ -20,8 +20,8 @@ import android.test.AndroidTestCase;
|
|||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import com.android.inputmethod.latin.common.Constants;
|
||||
import com.android.inputmethod.latin.common.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.common.StringUtils;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
|
||||
/**
|
||||
* Unit tests for WordComposer.
|
||||
|
|
|
@ -18,7 +18,7 @@ package com.android.inputmethod.latin.makedict;
|
|||
|
||||
import com.android.inputmethod.annotations.UsedForTesting;
|
||||
import com.android.inputmethod.latin.BinaryDictionary;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
|
@ -20,10 +20,10 @@ import com.android.inputmethod.annotations.UsedForTesting;
|
|||
import com.android.inputmethod.latin.BinaryDictionary;
|
||||
import com.android.inputmethod.latin.Dictionary;
|
||||
import com.android.inputmethod.latin.NgramContext;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
|
||||
import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
|
|
@ -23,9 +23,9 @@ import android.util.Log;
|
|||
import com.android.inputmethod.latin.ExpandableBinaryDictionary;
|
||||
import com.android.inputmethod.latin.NgramContext;
|
||||
import com.android.inputmethod.latin.NgramContext.WordInfo;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||
import com.android.inputmethod.latin.utils.DistracterFilter;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
|
|
|
@ -20,6 +20,8 @@ import android.test.AndroidTestCase;
|
|||
import android.test.suitebuilder.annotation.LargeTest;
|
||||
|
||||
import com.android.inputmethod.latin.BinaryDictionary;
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||
import com.android.inputmethod.latin.makedict.FormatSpec;
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ import android.test.AndroidTestCase;
|
|||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.inputmethod.latin.common.LocaleUtils;
|
||||
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
|
||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@ package com.android.inputmethod.latin.utils;
|
|||
import android.test.AndroidTestCase;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import com.android.inputmethod.latin.common.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
|
|
@ -50,10 +50,7 @@ LATINIME_SRC_FILES_FOR_DICTTOOL := \
|
|||
latin/settings/SettingsValuesForSuggestion.java \
|
||||
latin/utils/BinaryDictionaryUtils.java \
|
||||
latin/utils/CombinedFormatUtils.java \
|
||||
latin/utils/CoordinateUtils.java \
|
||||
latin/utils/FileUtils.java \
|
||||
latin/utils/JniUtils.java \
|
||||
latin/utils/LocaleUtils.java
|
||||
latin/utils/JniUtils.java
|
||||
|
||||
LATINIME_OVERRIDABLE_SRC_FILES_FOR_DICTTOOL := \
|
||||
latin/define/DebugFlags.java
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
package com.android.inputmethod.latin.dicttool;
|
||||
|
||||
import com.android.inputmethod.latin.common.FileUtils;
|
||||
import com.android.inputmethod.latin.makedict.BinaryDictDecoderEncoderTests;
|
||||
import com.android.inputmethod.latin.makedict.BinaryDictEncoderFlattenTreeTests;
|
||||
import com.android.inputmethod.latin.makedict.FusionDictionaryTest;
|
||||
import com.android.inputmethod.latin.utils.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
|
Loading…
Reference in a new issue