|
|
@ -8,15 +8,14 @@ import android.content.Context; |
|
|
|
import android.database.Cursor; |
|
|
|
import android.database.Cursor; |
|
|
|
import android.database.sqlite.SQLiteDatabase; |
|
|
|
import android.database.sqlite.SQLiteDatabase; |
|
|
|
import android.database.sqlite.SQLiteOpenHelper; |
|
|
|
import android.database.sqlite.SQLiteOpenHelper; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
public class HistoryDatabase extends SQLiteOpenHelper { |
|
|
|
|
|
|
|
|
|
|
|
// All Static variables
|
|
|
|
// All Static variables
|
|
|
|
// Database Version
|
|
|
|
// Database Version
|
|
|
|
private static final int DATABASE_VERSION = 1; |
|
|
|
private static final int DATABASE_VERSION = 2; |
|
|
|
|
|
|
|
|
|
|
|
// Database Name
|
|
|
|
// Database Name
|
|
|
|
public static final String DATABASE_NAME = "historyManager"; |
|
|
|
public static final String DATABASE_NAME = "historyManager"; |
|
|
@ -26,14 +25,22 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
|
|
|
|
|
|
|
|
// HistoryItems Table Columns names
|
|
|
|
// HistoryItems Table Columns names
|
|
|
|
public static final String KEY_ID = "id"; |
|
|
|
public static final String KEY_ID = "id"; |
|
|
|
|
|
|
|
|
|
|
|
public static final String KEY_URL = "url"; |
|
|
|
public static final String KEY_URL = "url"; |
|
|
|
|
|
|
|
|
|
|
|
public static final String KEY_TITLE = "title"; |
|
|
|
public static final String KEY_TITLE = "title"; |
|
|
|
|
|
|
|
public static final String KEY_TIME_VISITED = "time"; |
|
|
|
|
|
|
|
|
|
|
|
public static SQLiteDatabase mDatabase; |
|
|
|
public static SQLiteDatabase mDatabase; |
|
|
|
|
|
|
|
|
|
|
|
public HistoryDatabaseHandler(Context context) { |
|
|
|
private static HistoryDatabase mInstance; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static HistoryDatabase getInstance(Context context) { |
|
|
|
|
|
|
|
if (mInstance == null || mInstance.isClosed()) { |
|
|
|
|
|
|
|
mInstance = new HistoryDatabase(context); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return mInstance; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private HistoryDatabase(Context context) { |
|
|
|
super(context.getApplicationContext(), DATABASE_NAME, null, DATABASE_VERSION); |
|
|
|
super(context.getApplicationContext(), DATABASE_NAME, null, DATABASE_VERSION); |
|
|
|
mDatabase = this.getWritableDatabase(); |
|
|
|
mDatabase = this.getWritableDatabase(); |
|
|
|
} |
|
|
|
} |
|
|
@ -42,22 +49,22 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void onCreate(SQLiteDatabase db) { |
|
|
|
public void onCreate(SQLiteDatabase db) { |
|
|
|
String CREATE_HISTORY_TABLE = "CREATE TABLE " + TABLE_HISTORY + "(" + KEY_ID |
|
|
|
String CREATE_HISTORY_TABLE = "CREATE TABLE " + TABLE_HISTORY + "(" + KEY_ID |
|
|
|
+ " INTEGER PRIMARY KEY," + KEY_URL + " TEXT," + KEY_TITLE + " TEXT" + ")"; |
|
|
|
+ " INTEGER PRIMARY KEY," + KEY_URL + " TEXT," + KEY_TITLE + " TEXT," |
|
|
|
|
|
|
|
+ KEY_TIME_VISITED + " INTEGER" + ")"; |
|
|
|
db.execSQL(CREATE_HISTORY_TABLE); |
|
|
|
db.execSQL(CREATE_HISTORY_TABLE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Upgrading database
|
|
|
|
// Upgrading database
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { |
|
|
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { |
|
|
|
// Drop older table if existed
|
|
|
|
// Drop older table if it exists
|
|
|
|
db.execSQL("DROP TABLE IF EXISTS " + TABLE_HISTORY); |
|
|
|
db.execSQL("DROP TABLE IF EXISTS " + TABLE_HISTORY); |
|
|
|
|
|
|
|
|
|
|
|
// Create tables again
|
|
|
|
// Create tables again
|
|
|
|
onCreate(db); |
|
|
|
onCreate(db); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public boolean isOpen() { |
|
|
|
public boolean isClosed() { |
|
|
|
return mDatabase != null && mDatabase.isOpen(); |
|
|
|
return mDatabase == null || !mDatabase.isOpen(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -68,31 +75,31 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
super.close(); |
|
|
|
super.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* All CRUD(Create, Read, Update, Delete) Operations |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public synchronized void deleteHistoryItem(String url) { |
|
|
|
public synchronized void deleteHistoryItem(String url) { |
|
|
|
mDatabase.delete(TABLE_HISTORY, KEY_URL + " = ?", new String[] { url }); |
|
|
|
mDatabase.delete(TABLE_HISTORY, KEY_URL + " = ?", new String[] { url }); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public synchronized void visitHistoryItem(String url, String title) { |
|
|
|
public synchronized void visitHistoryItem(String url, String title) { |
|
|
|
mDatabase.delete(TABLE_HISTORY, KEY_URL + " = ?", new String[] { url }); |
|
|
|
|
|
|
|
ContentValues values = new ContentValues(); |
|
|
|
ContentValues values = new ContentValues(); |
|
|
|
values.put(KEY_URL, url); |
|
|
|
|
|
|
|
values.put(KEY_TITLE, title); |
|
|
|
values.put(KEY_TITLE, title); |
|
|
|
mDatabase.insert(TABLE_HISTORY, null, values); |
|
|
|
values.put(KEY_TIME_VISITED, System.currentTimeMillis()); |
|
|
|
|
|
|
|
Cursor q = mDatabase.query(false, TABLE_HISTORY, new String[] { KEY_URL }, |
|
|
|
|
|
|
|
KEY_URL + " = ?", new String[] { url }, null, null, null, "1"); |
|
|
|
|
|
|
|
if (q.getCount() > 0) { |
|
|
|
|
|
|
|
mDatabase.update(TABLE_HISTORY, values, KEY_URL + " = ?", new String[] { url }); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
addHistoryItem(new HistoryItem(url, title)); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Adding new item
|
|
|
|
|
|
|
|
public synchronized void addHistoryItem(HistoryItem item) { |
|
|
|
public synchronized void addHistoryItem(HistoryItem item) { |
|
|
|
ContentValues values = new ContentValues(); |
|
|
|
ContentValues values = new ContentValues(); |
|
|
|
values.put(KEY_URL, item.getUrl()); |
|
|
|
values.put(KEY_URL, item.getUrl()); |
|
|
|
values.put(KEY_TITLE, item.getTitle()); |
|
|
|
values.put(KEY_TITLE, item.getTitle()); |
|
|
|
|
|
|
|
values.put(KEY_TIME_VISITED, System.currentTimeMillis()); |
|
|
|
mDatabase.insert(TABLE_HISTORY, null, values); |
|
|
|
mDatabase.insert(TABLE_HISTORY, null, values); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Getting single item
|
|
|
|
|
|
|
|
String getHistoryItem(String url) { |
|
|
|
String getHistoryItem(String url) { |
|
|
|
Cursor cursor = mDatabase.query(TABLE_HISTORY, new String[] { KEY_ID, KEY_URL, KEY_TITLE }, |
|
|
|
Cursor cursor = mDatabase.query(TABLE_HISTORY, new String[] { KEY_ID, KEY_URL, KEY_TITLE }, |
|
|
|
KEY_URL + " = ?", new String[] { url }, null, null, null, null); |
|
|
|
KEY_URL + " = ?", new String[] { url }, null, null, null, null); |
|
|
@ -103,43 +110,40 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
|
|
|
|
|
|
|
|
cursor.close(); |
|
|
|
cursor.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
// return item
|
|
|
|
|
|
|
|
return m; |
|
|
|
return m; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public List<HistoryItem> findItemsContaining(String search) { |
|
|
|
public List<HistoryItem> findItemsContaining(String search) { |
|
|
|
List<HistoryItem> itemList = new ArrayList<HistoryItem>(); |
|
|
|
List<HistoryItem> itemList = new ArrayList<HistoryItem>(); |
|
|
|
// select query
|
|
|
|
|
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " WHERE " + KEY_TITLE + " LIKE '%" |
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " WHERE " + KEY_TITLE + " LIKE '%" |
|
|
|
+ search + "%' OR " + KEY_URL + " LIKE '%" + search + "%' LIMIT 5"; |
|
|
|
+ search + "%' OR " + KEY_URL + " LIKE '%" + search + "%' " + "ORDER BY " |
|
|
|
|
|
|
|
+ KEY_TIME_VISITED + " DESC LIMIT 5"; |
|
|
|
Cursor cursor = mDatabase.rawQuery(selectQuery, null); |
|
|
|
Cursor cursor = mDatabase.rawQuery(selectQuery, null); |
|
|
|
|
|
|
|
|
|
|
|
// looping through all rows and adding to list
|
|
|
|
|
|
|
|
int n = 0; |
|
|
|
int n = 0; |
|
|
|
if (cursor.moveToLast()) { |
|
|
|
if (cursor.moveToFirst()) { |
|
|
|
do { |
|
|
|
do { |
|
|
|
HistoryItem item = new HistoryItem(); |
|
|
|
HistoryItem item = new HistoryItem(); |
|
|
|
item.setID(Integer.parseInt(cursor.getString(0))); |
|
|
|
item.setID(Integer.parseInt(cursor.getString(0))); |
|
|
|
item.setUrl(cursor.getString(1)); |
|
|
|
item.setUrl(cursor.getString(1)); |
|
|
|
item.setTitle(cursor.getString(2)); |
|
|
|
item.setTitle(cursor.getString(2)); |
|
|
|
item.setImageId(R.drawable.ic_history); |
|
|
|
item.setImageId(R.drawable.ic_history); |
|
|
|
// Adding item to list
|
|
|
|
|
|
|
|
itemList.add(item); |
|
|
|
itemList.add(item); |
|
|
|
n++; |
|
|
|
n++; |
|
|
|
} while (cursor.moveToPrevious() && n < 5); |
|
|
|
} while (cursor.moveToNext() && n < 5); |
|
|
|
} |
|
|
|
} |
|
|
|
cursor.close(); |
|
|
|
cursor.close(); |
|
|
|
// return item list
|
|
|
|
|
|
|
|
return itemList; |
|
|
|
return itemList; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public List<HistoryItem> getLastHundredItems() { |
|
|
|
public List<HistoryItem> getLastHundredItems() { |
|
|
|
List<HistoryItem> itemList = new ArrayList<HistoryItem>(); |
|
|
|
List<HistoryItem> itemList = new ArrayList<HistoryItem>(); |
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_HISTORY; |
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " ORDER BY " + KEY_TIME_VISITED |
|
|
|
|
|
|
|
+ " DESC"; |
|
|
|
|
|
|
|
|
|
|
|
Cursor cursor = mDatabase.rawQuery(selectQuery, null); |
|
|
|
Cursor cursor = mDatabase.rawQuery(selectQuery, null); |
|
|
|
int counter = 0; |
|
|
|
int counter = 0; |
|
|
|
if (cursor.moveToLast()) { |
|
|
|
if (cursor.moveToFirst()) { |
|
|
|
do { |
|
|
|
do { |
|
|
|
HistoryItem item = new HistoryItem(); |
|
|
|
HistoryItem item = new HistoryItem(); |
|
|
|
item.setID(Integer.parseInt(cursor.getString(0))); |
|
|
|
item.setID(Integer.parseInt(cursor.getString(0))); |
|
|
@ -148,7 +152,7 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
item.setImageId(R.drawable.ic_history); |
|
|
|
item.setImageId(R.drawable.ic_history); |
|
|
|
itemList.add(item); |
|
|
|
itemList.add(item); |
|
|
|
counter++; |
|
|
|
counter++; |
|
|
|
} while (cursor.moveToPrevious() && counter < 100); |
|
|
|
} while (cursor.moveToNext() && counter < 100); |
|
|
|
} |
|
|
|
} |
|
|
|
cursor.close(); |
|
|
|
cursor.close(); |
|
|
|
return itemList; |
|
|
|
return itemList; |
|
|
@ -156,7 +160,8 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
|
|
|
|
|
|
|
|
public List<HistoryItem> getAllHistoryItems() { |
|
|
|
public List<HistoryItem> getAllHistoryItems() { |
|
|
|
List<HistoryItem> itemList = new ArrayList<HistoryItem>(); |
|
|
|
List<HistoryItem> itemList = new ArrayList<HistoryItem>(); |
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_HISTORY; |
|
|
|
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " ORDER BY " + KEY_TIME_VISITED |
|
|
|
|
|
|
|
+ " DESC"; |
|
|
|
|
|
|
|
|
|
|
|
Cursor cursor = mDatabase.rawQuery(selectQuery, null); |
|
|
|
Cursor cursor = mDatabase.rawQuery(selectQuery, null); |
|
|
|
|
|
|
|
|
|
|
@ -174,23 +179,22 @@ public class HistoryDatabaseHandler extends SQLiteOpenHelper { |
|
|
|
return itemList; |
|
|
|
return itemList; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Updating single item
|
|
|
|
|
|
|
|
public synchronized int updateHistoryItem(HistoryItem item) { |
|
|
|
public synchronized int updateHistoryItem(HistoryItem item) { |
|
|
|
|
|
|
|
|
|
|
|
ContentValues values = new ContentValues(); |
|
|
|
ContentValues values = new ContentValues(); |
|
|
|
values.put(KEY_URL, item.getUrl()); |
|
|
|
values.put(KEY_URL, item.getUrl()); |
|
|
|
values.put(KEY_TITLE, item.getTitle()); |
|
|
|
values.put(KEY_TITLE, item.getTitle()); |
|
|
|
|
|
|
|
values.put(KEY_TIME_VISITED, System.currentTimeMillis()); |
|
|
|
return mDatabase.update(TABLE_HISTORY, values, KEY_ID + " = ?", |
|
|
|
return mDatabase.update(TABLE_HISTORY, values, KEY_ID + " = ?", |
|
|
|
new String[] { String.valueOf(item.getId()) }); |
|
|
|
new String[] { String.valueOf(item.getId()) }); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Getting items Count
|
|
|
|
|
|
|
|
public int getHistoryItemsCount() { |
|
|
|
public int getHistoryItemsCount() { |
|
|
|
String countQuery = "SELECT * FROM " + TABLE_HISTORY; |
|
|
|
String countQuery = "SELECT * FROM " + TABLE_HISTORY; |
|
|
|
Cursor cursor = mDatabase.rawQuery(countQuery, null); |
|
|
|
Cursor cursor = mDatabase.rawQuery(countQuery, null); |
|
|
|
|
|
|
|
int n = cursor.getCount(); |
|
|
|
cursor.close(); |
|
|
|
cursor.close(); |
|
|
|
|
|
|
|
|
|
|
|
// return count
|
|
|
|
return n; |
|
|
|
return cursor.getCount(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |