package com.seafile.seadroid2.cameraupload; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.seafile.seadroid2.SeadroidApplication; import java.io.File; public class CameraUploadDBHelper extends SQLiteOpenHelper { private static final String DEBUG_TAG = "CameraUploadDBHelper"; // If you change the database schema, you must increment the database // version. public static final int DATABASE_VERSION = 3; public static final String DATABASE_NAME = "photo.db"; private static CameraUploadDBHelper dbHelper; private SQLiteDatabase database; // PhotoCache table private static final String PHOTOCACHE_TABLE_NAME = "PhotoCache"; private static final String PHOTOCACHE_COLUMN_ID = "id"; private static final String PHOTOCACHE_COLUMN_FILE = "file"; private static final String PHOTOCACHE_COLUMN_DATE_ADDED = "date_added"; private static final String SQL_CREATE_PHOTOCACHE_TABLE = "CREATE TABLE " + PHOTOCACHE_TABLE_NAME + " (" + PHOTOCACHE_COLUMN_ID + " INTEGER PRIMARY KEY, " + PHOTOCACHE_COLUMN_FILE + " TEXT NOT NULL, " + PHOTOCACHE_COLUMN_DATE_ADDED + " BIGINT NOT NULL);"; private static final String[] projection = { PHOTOCACHE_COLUMN_ID, PHOTOCACHE_COLUMN_FILE, PHOTOCACHE_COLUMN_DATE_ADDED }; public static synchronized CameraUploadDBHelper getInstance() { if (dbHelper == null) { dbHelper = new CameraUploadDBHelper(SeadroidApplication.getAppContext()); dbHelper.database = dbHelper.getWritableDatabase(); } return dbHelper; } private CameraUploadDBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { createPhotoCacheTable(db); } private void createPhotoCacheTable(SQLiteDatabase db) { db.execSQL(SQL_CREATE_PHOTOCACHE_TABLE); db.execSQL("CREATE INDEX photo_repoid_index ON " + PHOTOCACHE_TABLE_NAME + " (" + PHOTOCACHE_COLUMN_FILE + ");"); db.execSQL("CREATE INDEX photo_account_index ON " + PHOTOCACHE_TABLE_NAME + " (" + PHOTOCACHE_COLUMN_DATE_ADDED + ");"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + PHOTOCACHE_TABLE_NAME + ";"); onCreate(db); } @Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { onUpgrade(db, oldVersion, newVersion); } public boolean isUploaded(File file) { String path = file.getAbsolutePath(); long modified = file.lastModified(); Cursor c = database.query( PHOTOCACHE_TABLE_NAME, projection, PHOTOCACHE_COLUMN_FILE + " = ? and " + PHOTOCACHE_COLUMN_DATE_ADDED + " = ?", new String[] { path, Long.toString(modified) }, null, // don't group the rows null, // don't filter by row groups null // The sort order ); int count = c.getCount(); c.close(); return count > 0; } public void markAsUploaded(File file) { String path = file.getAbsolutePath(); long modified = file.lastModified(); ContentValues values = new ContentValues(); values.put(PHOTOCACHE_COLUMN_FILE, path); values.put(PHOTOCACHE_COLUMN_DATE_ADDED, modified); database.insert(PHOTOCACHE_TABLE_NAME, null, values); } public void cleanPhotoCache() { database.delete(PHOTOCACHE_TABLE_NAME, null, null); } }