package com.buddycloud.model.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.buddycloud.log.Logger; public class BuddycloudSQLiteOpenHelper extends SQLiteOpenHelper { public static final int DATABASE_VERSION = 15; public static final String DATABASE_NAME = "buddycloud.db"; private static BuddycloudSQLiteOpenHelper instance = null; private BuddycloudSQLiteOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public static BuddycloudSQLiteOpenHelper getInstance(Context context) { if (instance == null) { instance = new BuddycloudSQLiteOpenHelper(context); } return instance; } @Override public void onCreate(SQLiteDatabase db) { // Channel metadata table db.execSQL(ChannelMetadataTableHelper.CREATE_TABLE); // Subscribed channels table db.execSQL(SubscribedChannelsTableHelper.CREATE_TABLE); db.execSQL(SubscribedChannelsTableHelper.CREATE_USER_INDEX); // Unread counters table db.execSQL(UnreadCountersTableHelper.CREATE_TABLE); db.execSQL(UnreadCountersTableHelper.CREATE_USER_INDEX); // Posts table db.execSQL(PostsTableHelper.CREATE_TABLE); db.execSQL(PostsTableHelper.CREATE_CHANNEL_INDEX); // Threads table db.execSQL(ThreadsTableHelper.CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Logger.warn(BuddycloudSQLiteOpenHelper.class.getName(), "Upgrading " + DATABASE_NAME + " from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); // Drop old data db.execSQL("DROP TABLE IF EXISTS " + ChannelMetadataTableHelper.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + SubscribedChannelsTableHelper.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + UnreadCountersTableHelper.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + PostsTableHelper.TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + ThreadsTableHelper.TABLE_NAME); onCreate(db); } public void purgeDatabase() { SQLiteDatabase db = getWritableDatabase(); db.execSQL(PostsTableHelper.PURGE_TABLE); db.execSQL(UnreadCountersTableHelper.PURGE_TABLE); db.execSQL(SubscribedChannelsTableHelper.PURGE_TABLE); db.execSQL(ChannelMetadataTableHelper.PURGE_TABLE); db.execSQL(ThreadsTableHelper.PURGE_TABLE); } }