/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.picasa.sync;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.TextUtils;
/**
*
* @author sihai
*
*/
public class PicasaDatabaseHelper extends SQLiteOpenHelper {
private static final String ALBUM_ENTRY_PROJECTION_LIST;
private static final String ALBUM_ENTRY_QUERY;
private static final String ALBUM_TABLE;
private static final String USER_ACCOUNT_QUERY;
private static final String USER_ID_QUERY;
private static final String USER_TABLE;
public static PicasaDatabaseHelper sInstance;
private Context mContext;
static {
USER_TABLE = UserEntry.SCHEMA.getTableName();
ALBUM_TABLE = AlbumEntry.SCHEMA.getTableName();
USER_ID_QUERY = (new StringBuilder("select _id from ")).append(USER_TABLE).append(" where account").append("='%s' LIMIT 1").toString();
ALBUM_ENTRY_PROJECTION_LIST = TextUtils.join(",", AlbumEntry.SCHEMA.getProjection());
ALBUM_ENTRY_QUERY = (new StringBuilder("select ")).append(ALBUM_ENTRY_PROJECTION_LIST).append(" from ").append(ALBUM_TABLE).append(" where _id=(%s) LIMIT 1").toString();
USER_ACCOUNT_QUERY = (new StringBuilder("select account")).append(" from ").append(USER_TABLE).append(" where _id=%s LIMIT 1").toString();
}
private PicasaDatabaseHelper(Context context) {
super(context.getApplicationContext(), "picasa.db", null, 107);
mContext = context.getApplicationContext();
}
public static synchronized PicasaDatabaseHelper get(Context context) {
PicasaDatabaseHelper picasadatabasehelper;
if(sInstance == null)
sInstance = new PicasaDatabaseHelper(context);
picasadatabasehelper = sInstance;
return picasadatabasehelper;
}
final AlbumEntry getAlbumEntry(String s) {
String s1 = String.format(ALBUM_ENTRY_QUERY, new Object[] {
s
});
Cursor cursor = null;
try {
cursor = getReadableDatabase().rawQuery(s1, null);
AlbumEntry albumentry = null;
if(cursor == null || !cursor.moveToNext()) {
return null;
}
return (AlbumEntry)AlbumEntry.SCHEMA.cursorToObject(cursor, new AlbumEntry());
} finally {
if(null != cursor) {
cursor.close();
}
}
}
public final synchronized SQLiteDatabase getReadableDatabase() {
try {
return super.getReadableDatabase();
} catch (Throwable t) {
mContext.deleteDatabase("picasa.db");
return super.getReadableDatabase();
}
}
final String getUserAccount(long l) {
String query = String.format(USER_ACCOUNT_QUERY, new Object[]{String.valueOf(l)});
Cursor cursor = null;
try {
cursor = getReadableDatabase().rawQuery(query, null);
if(null == cursor || !cursor.moveToNext()) {
return null;
}
return cursor.getString(0);
} finally {
if(null != cursor) {
cursor.close();
}
}
}
public final synchronized SQLiteDatabase getWritableDatabase() {
try {
return super.getWritableDatabase();
} catch (Throwable t) {
mContext.deleteDatabase("picasa.db");
return super.getWritableDatabase();
}
}
public final void onCreate(SQLiteDatabase sqlitedatabase) {
PhotoEntry.SCHEMA.createTables(sqlitedatabase);
AlbumEntry.SCHEMA.createTables(sqlitedatabase);
UserEntry.SCHEMA.createTables(sqlitedatabase);
PicasaSyncManager.get(mContext).requestAccountSync();
}
public final void onDowngrade(SQLiteDatabase sqlitedatabase, int i, int j) {
onUpgrade(sqlitedatabase, i, j);
}
public final void onUpgrade(SQLiteDatabase sqlitedatabase, int i, int j) {
PhotoEntry.SCHEMA.dropTables(sqlitedatabase);
AlbumEntry.SCHEMA.dropTables(sqlitedatabase);
UserEntry.SCHEMA.dropTables(sqlitedatabase);
onCreate(sqlitedatabase);
PicasaSyncManager.get(mContext).requestMetadataSync(true);
}
}