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