package com.madeinhk.model; import android.content.ContentProviderClient; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.RemoteException; import android.provider.BaseColumns; import java.util.ArrayList; import java.util.List; /** * Created by tonymak on 10/16/14. */ public class ECDictionary { public static final String TABLE_NAME = "ecdict"; private static final Uri sBaseUri = Uri.parse("content://" + DictionaryContentProvider .AUTHORITY); private static final Uri sEngToChiUri = sBaseUri.buildUpon().appendPath("by_word").build(); private static final Uri sWordFromIdUri = sBaseUri.buildUpon().appendPath("by_id").build(); private static final Uri sAutoCompleteUri = sBaseUri.buildUpon().appendPath("autocomplete") .build(); private static final Uri FAVOURITE_WORD_URI = sBaseUri.buildUpon().appendPath ("favourite_words").build(); private Context mContext; private ContentProviderClient mProviderClient; public ECDictionary(Context context) { mContext = context.getApplicationContext(); mProviderClient = mContext.getContentResolver().acquireContentProviderClient (DictionaryContentProvider.AUTHORITY); } public interface COLUMNS { String _ID = BaseColumns._ID; String WORD = "word"; String MEANING = "meaning"; String PHONETIC_STRING = "phonetic_string"; String EXAMPLE = "example"; String DIFFICULTY = "difficulty"; } public Word lookupFromId(String id) { Word word = null; try { Uri uri = sWordFromIdUri.buildUpon().appendPath(id).build(); Cursor cursor = mProviderClient.query(uri, null, null, null, null); boolean valid = cursor.moveToFirst(); if (!valid) { return null; } word = fromCursor(cursor); cursor.close(); } catch (RemoteException ex) { ex.printStackTrace(); } return word; } private Word fromCursor(Cursor cursor) { String dictWord = cursor.getString(1); String meaning = cursor.getString(2); String phoneticString = cursor.getString(3); String example = cursor.getString(4); int difficulty = cursor.getInt(5); return Word.fromLookupResult(new LookupResult(dictWord, meaning, phoneticString, example, difficulty)); } public Word lookup(String word) { if (word == null) { return null; } word = word.trim(); Word wordRet = null; try { Uri uri = sEngToChiUri.buildUpon().appendPath(word).build(); Cursor cursor = mProviderClient.query(uri, null, null, null, null); boolean valid = cursor.moveToFirst(); if (!valid) { return null; } wordRet = fromCursor(cursor); cursor.close(); } catch (RemoteException ex) { ex.printStackTrace(); } return wordRet; } public List<Word> getAllFavouriteWords() { Cursor cursor = mContext.getContentResolver().query(FAVOURITE_WORD_URI, null, null, null, null); List<Word> wordList = new ArrayList<Word>(); while (cursor.moveToNext()) { wordList.add(fromCursor(cursor)); } cursor.close(); return wordList; } }