+package com.folioreader.model.sqlite;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author gautam chibde on 28/6/17.
+ */
+
+public class DictionaryTable {
+
+ public static final String TABLE_NAME = "dictionary_table";
+
+ public static final String ID = "_id";
+ public static final String WORD = "word";
+ public static final String MEANING = "meaning";
+ private SQLiteDatabase database;
+
+ public DictionaryTable(Context context) {
+ FolioDatabaseHelper dbHelper = new FolioDatabaseHelper(context);
+ database = dbHelper.getWritableDatabase();
+ }
+
+ public static final String SQL_CREATE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ( " + ID
+ + " INTEGER PRIMARY KEY AUTOINCREMENT" + ","
+ + WORD + " TEXT" + ","
+ + MEANING + " TEXT" + ")";
+
+ public static final String SQL_DROP = "DROP TABLE IF EXISTS " + TABLE_NAME;
+
+ public boolean insertWord(String word, String meaning) {
+ ContentValues values = new ContentValues();
+ values.put(WORD, word);
+ values.put(MEANING, meaning);
+ return database.insert(TABLE_NAME, null, values) > 0;
+ }
+
+ public void insert(Map<String, String> map) {
+ database.beginTransaction();
+ for (String key : map.keySet()) {
+ insertWord(key.toLowerCase(), map.get(key));
+ }
+ database.setTransactionSuccessful();
+ database.endTransaction();
+ }
+
+ public String getMeaningForWord(String word) {
+ Cursor c = database.rawQuery("SELECT * FROM "
+ + TABLE_NAME +
+ " WHERE " + WORD + " = '" + word.trim() + "'", null);
+ if (c.moveToFirst()) {
+ String toRetuen = c.getString(2);
+ c.close();
+ return toRetuen;
+ }
+ c.close();
+ return null;
+ }
+
+ public List<String> getMeaning(String word) {
+ List<String> words = new ArrayList<>();
+ String meaning = getMeaningForWord(word);
+ if (meaning != null) {
+ words.add(meaning);
+ return words;
+ } else {
+ return getProbableCombinations(word);
+ }
+ }
+
+ private List<String> getProbableCombinations(String word) {
+ List<String> combinations = new ArrayList<>();
+ for (int i = 1; i <= 3; i++) {
+ String m = getMeaningForWord(word.substring(0, word.length() - i));
+ if (m != null) {
+ combinations.add(m);
+ }
+ }
+ return combinations;
+ }
+}