1bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi/*
2bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project
3bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi *
4bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License");
5bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * you may not use this file except in compliance with the License.
6bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * You may obtain a copy of the License at
7bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi *
8bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi *      http://www.apache.org/licenses/LICENSE-2.0
9bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi *
10bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software
11bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS,
12bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * See the License for the specific language governing permissions and
14bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * limitations under the License.
15bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi */
16bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
17bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagipackage com.android.inputmethod.latin.utils;
18bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
19bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport java.util.List;
20bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport java.util.Locale;
21bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
22bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport android.view.inputmethod.InputMethodSubtype;
23bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
24bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport com.android.inputmethod.latin.Dictionary;
25bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport com.android.inputmethod.latin.PrevWordsInfo;
26bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
27bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagipublic class DistracterFilterCheckingIsInDictionary implements DistracterFilter {
28bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    private final DistracterFilter mDistracterFilter;
29bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    private final Dictionary mDictionary;
30bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
31bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    public DistracterFilterCheckingIsInDictionary(final DistracterFilter distracterFilter,
32bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi            final Dictionary dictionary) {
33bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        mDistracterFilter = distracterFilter;
34bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        mDictionary = dictionary;
35bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    }
36bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
37bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    @Override
38bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    public boolean isDistracterToWordsInDictionaries(PrevWordsInfo prevWordsInfo,
39bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi            String testedWord, Locale locale) {
40bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        if (mDictionary.isInDictionary(testedWord)) {
41bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi            // This filter treats entries that are already in the dictionary as non-distracters
42bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi            // because they have passed the filtering in the past.
43bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi            return false;
44bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        } else {
45bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi            return mDistracterFilter.isDistracterToWordsInDictionaries(
46bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi                    prevWordsInfo, testedWord, locale);
47bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        }
48bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    }
49bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
50bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    @Override
51bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    public void updateEnabledSubtypes(List<InputMethodSubtype> enabledSubtypes) {
52bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        // Do nothing.
53bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    }
54bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi
55bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    @Override
56bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    public void close() {
57bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi        // Do nothing.
58bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi    }
59bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi}
60