/******************************************************************************* * Copyright 2009 Robot Media SL * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package net.robotmedia.acv.provider; import java.util.*; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteStatement; public class DBHelper { private Context mContext; private SQLiteDatabase mDB; private SQLiteStatement mInsertFile; private SQLiteStatement mUpdateBookmark; private SQLiteStatement mIncreaseViews; private SQLiteStatement mUpdateLastOpened; private static final String INSERT_FILE = "INSERT INTO " + DBOpenHelper.FILES_TABLE + " (" + DBOpenHelper.PATH_COLUMN + ", " + DBOpenHelper.OPENED_COLUMN + ", " + DBOpenHelper.READ_COLUMN + ", " + DBOpenHelper.BOOKMARK_COLUMN + ", " + DBOpenHelper.VIEWS_COLUMN + ", " + DBOpenHelper.FAVORITE_COLUMN + ") values (?, ?, 1, 0, 0, 0)"; private static final String UPDATE_BOOKMARK = "UPDATE " + DBOpenHelper.FILES_TABLE + " SET " + DBOpenHelper.BOOKMARK_COLUMN + " = ? WHERE " + DBOpenHelper.PATH_COLUMN + " = ?"; private static final String INCREASE_VIEWS = "UPDATE " + DBOpenHelper.FILES_TABLE + " SET " + DBOpenHelper.VIEWS_COLUMN + " = " + DBOpenHelper.VIEWS_COLUMN + " + 1 WHERE " + DBOpenHelper.PATH_COLUMN + " = ?"; private static final String UPDATE_OPENED = "UPDATE " + DBOpenHelper.FILES_TABLE + " SET " + DBOpenHelper.OPENED_COLUMN + " = ? " + "WHERE " + DBOpenHelper.PATH_COLUMN + " = ?"; public DBHelper(Context context) { mContext = context; final DBOpenHelper openHelper = new DBOpenHelper(mContext); mDB = openHelper.getWritableDatabase(); mInsertFile = mDB.compileStatement(INSERT_FILE); mUpdateBookmark = mDB.compileStatement(UPDATE_BOOKMARK); mIncreaseViews = mDB.compileStatement(INCREASE_VIEWS); mUpdateLastOpened = mDB.compileStatement(UPDATE_OPENED); } public long insertFile(String path) { mInsertFile.bindString(1, path); mInsertFile.bindLong(2, new Date().getTime()); return mInsertFile.executeInsert(); } public void updateFileBookmark(String path, int bookmark) { mUpdateBookmark.bindLong(1, bookmark); mUpdateBookmark.bindString(2, path); mUpdateBookmark.execute(); } public void increaseFileViews(String path) { mIncreaseViews.bindString(1, path); mIncreaseViews.execute(); } public void updateLastOpened(String path) { mUpdateLastOpened.bindLong(1, new Date().getTime()); mUpdateLastOpened.bindString(2, path); mUpdateLastOpened.execute(); } public boolean existsFile(String path) { final Cursor cursor = mDB.query(DBOpenHelper.FILES_TABLE, new String[] { DBOpenHelper.PATH_COLUMN }, DBOpenHelper.PATH_COLUMN + " = ? ", new String[] { path }, null, null, null); final int count = cursor.getCount(); cursor.close(); return count > 0; } public int selectFileBookmark(final String path) { final Cursor cursor = mDB.query(DBOpenHelper.FILES_TABLE, new String[] { DBOpenHelper.BOOKMARK_COLUMN }, DBOpenHelper.PATH_COLUMN + " = ? ", new String[] { path }, null, null, null); if (cursor.moveToFirst()) { int bookmark = cursor.getInt(0); cursor.close(); return bookmark; } else { cursor.close(); return 0; } } public void deleteFiles() { mDB.delete(DBOpenHelper.FILES_TABLE, null, null); } public String selectMostRecentFile() { Cursor cursor = mDB.query(DBOpenHelper.FILES_TABLE, new String[] { DBOpenHelper.PATH_COLUMN }, null, null, null, null, DBOpenHelper.OPENED_COLUMN + " desc", "1"); if (cursor.moveToFirst()) { String file = cursor.getString(0); cursor.close(); return file; } else { cursor.close(); return null; } } public List<String> getRecentFiles() { ArrayList<String> files = new ArrayList<String>(); Cursor cursor = mDB.query(DBOpenHelper.FILES_TABLE, new String[] { DBOpenHelper.PATH_COLUMN }, null, null, null, null, DBOpenHelper.OPENED_COLUMN + " desc", "10"); if (cursor.moveToFirst()) { do { String path = cursor.getString(0); files.add(path); } while(cursor.moveToNext()); } cursor.close(); return files; } }