/* * Copyright 2014 A.C.R. Development */ package acr.browser.lightning; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class HistoryDatabaseHandler extends SQLiteOpenHelper { // All Static variables // Database Version private static final int DATABASE_VERSION = 1; // Database Name public static final String DATABASE_NAME = "historyManager"; // HistoryItems table name public static final String TABLE_HISTORY = "history"; // HistoryItems Table Columns names public static final String KEY_ID = "id"; public static final String KEY_URL = "url"; public static final String KEY_TITLE = "title"; public static SQLiteDatabase mDatabase; public HistoryDatabaseHandler(Context context) { super(context.getApplicationContext(), DATABASE_NAME, null, DATABASE_VERSION); mDatabase = this.getWritableDatabase(); } // Creating Tables @Override public void onCreate(SQLiteDatabase db) { String CREATE_HISTORY_TABLE = "CREATE TABLE " + TABLE_HISTORY + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_URL + " TEXT," + KEY_TITLE + " TEXT" + ")"; db.execSQL(CREATE_HISTORY_TABLE); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS " + TABLE_HISTORY); // Create tables again onCreate(db); } public boolean isOpen() { if (mDatabase != null) { return mDatabase.isOpen(); } else { return false; } } @Override public synchronized void close() { if (mDatabase != null) { mDatabase.close(); } super.close(); } /** * All CRUD(Create, Read, Update, Delete) Operations */ public synchronized void deleteHistoryItem(String url) { mDatabase.delete(TABLE_HISTORY, KEY_URL + " = ?", new String[] { url }); } public synchronized void visitHistoryItem(String url, String title) { mDatabase.delete(TABLE_HISTORY, KEY_URL + " = ?", new String[] { url }); ContentValues values = new ContentValues(); values.put(KEY_URL, url); values.put(KEY_TITLE, title); mDatabase.insert(TABLE_HISTORY, null, values); } // Adding new item public synchronized void addHistoryItem(HistoryItem item) { ContentValues values = new ContentValues(); values.put(KEY_URL, item.getUrl()); values.put(KEY_TITLE, item.getTitle()); mDatabase.insert(TABLE_HISTORY, null, values); } // Getting single item String getHistoryItem(String url) { Cursor cursor = mDatabase.query(TABLE_HISTORY, new String[] { KEY_ID, KEY_URL, KEY_TITLE }, KEY_URL + "=?", new String[] { url }, null, null, null, null); String m = null; if (cursor != null) { cursor.moveToFirst(); m = cursor.getString(0); cursor.close(); } // return item return m; } public List findItemsContaining(String search) { List itemList = new ArrayList(); // select query String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " WHERE " + KEY_TITLE + " LIKE '%" + search + "%' OR " + KEY_URL + " LIKE '%" + search + "%' LIMIT 5"; Cursor cursor = mDatabase.rawQuery(selectQuery, null); // looping through all rows and adding to list int n = 0; if (cursor.moveToLast()) { do { HistoryItem item = new HistoryItem(); item.setID(Integer.parseInt(cursor.getString(0))); item.setUrl(cursor.getString(1)); item.setTitle(cursor.getString(2)); item.setImageId(R.drawable.ic_history); // Adding item to list itemList.add(item); n++; } while (cursor.moveToPrevious() && n < 5); } cursor.close(); // return item list return itemList; } public List getLastHundredItems() { List itemList = new ArrayList(); String selectQuery = "SELECT * FROM " + TABLE_HISTORY; Cursor cursor = mDatabase.rawQuery(selectQuery, null); int counter = 0; if (cursor.moveToLast()) { do { HistoryItem item = new HistoryItem(); item.setID(Integer.parseInt(cursor.getString(0))); item.setUrl(cursor.getString(1)); item.setTitle(cursor.getString(2)); item.setImageId(R.drawable.ic_history); itemList.add(item); counter++; } while (cursor.moveToPrevious() && counter < 100); } cursor.close(); return itemList; } public List getAllHistoryItems() { List itemList = new ArrayList(); String selectQuery = "SELECT * FROM " + TABLE_HISTORY; Cursor cursor = mDatabase.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { HistoryItem item = new HistoryItem(); item.setID(Integer.parseInt(cursor.getString(0))); item.setUrl(cursor.getString(1)); item.setTitle(cursor.getString(2)); item.setImageId(R.drawable.ic_history); itemList.add(item); } while (cursor.moveToNext()); } cursor.close(); return itemList; } // Updating single item public synchronized int updateHistoryItem(HistoryItem item) { ContentValues values = new ContentValues(); values.put(KEY_URL, item.getUrl()); values.put(KEY_TITLE, item.getTitle()); int n = mDatabase.update(TABLE_HISTORY, values, KEY_ID + " = ?", new String[] { String.valueOf(item.getId()) }); // updating row return n; } // Getting items Count public int getHistoryItemsCount() { String countQuery = "SELECT * FROM " + TABLE_HISTORY; Cursor cursor = mDatabase.rawQuery(countQuery, null); cursor.close(); // return count return cursor.getCount(); } }