• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 
17 package com.android.inputmethod.latin;
18 
19 import com.android.inputmethod.keyboard.ProximityInfo;
20 
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.concurrent.CopyOnWriteArrayList;
25 
26 /**
27  * Class for a collection of dictionaries that behave like one dictionary.
28  */
29 public class DictionaryCollection extends Dictionary {
30 
31     protected final List<Dictionary> mDictionaries;
32 
DictionaryCollection()33     public DictionaryCollection() {
34         mDictionaries = new CopyOnWriteArrayList<Dictionary>();
35     }
36 
DictionaryCollection(Dictionary... dictionaries)37     public DictionaryCollection(Dictionary... dictionaries) {
38         if (null == dictionaries) {
39             mDictionaries = new CopyOnWriteArrayList<Dictionary>();
40         } else {
41             mDictionaries = new CopyOnWriteArrayList<Dictionary>(dictionaries);
42             mDictionaries.removeAll(Collections.singleton(null));
43         }
44     }
45 
DictionaryCollection(Collection<Dictionary> dictionaries)46     public DictionaryCollection(Collection<Dictionary> dictionaries) {
47         mDictionaries = new CopyOnWriteArrayList<Dictionary>(dictionaries);
48         mDictionaries.removeAll(Collections.singleton(null));
49     }
50 
51     @Override
getWords(final WordComposer composer, final WordCallback callback, final ProximityInfo proximityInfo)52     public void getWords(final WordComposer composer, final WordCallback callback,
53             final ProximityInfo proximityInfo) {
54         for (final Dictionary dict : mDictionaries)
55             dict.getWords(composer, callback, proximityInfo);
56     }
57 
58     @Override
getBigrams(final WordComposer composer, final CharSequence previousWord, final WordCallback callback)59     public void getBigrams(final WordComposer composer, final CharSequence previousWord,
60             final WordCallback callback) {
61         for (final Dictionary dict : mDictionaries)
62             dict.getBigrams(composer, previousWord, callback);
63     }
64 
65     @Override
isValidWord(CharSequence word)66     public boolean isValidWord(CharSequence word) {
67         for (int i = mDictionaries.size() - 1; i >= 0; --i)
68             if (mDictionaries.get(i).isValidWord(word)) return true;
69         return false;
70     }
71 
72     @Override
close()73     public void close() {
74         for (final Dictionary dict : mDictionaries)
75             dict.close();
76     }
77 
addDictionary(Dictionary newDict)78     public void addDictionary(Dictionary newDict) {
79         if (null != newDict) mDictionaries.add(newDict);
80     }
81 }
82