DbAdapter.java :  » UnTagged » cyanogen-updater » cmupdaterapp » database » Android Open Source

Android Open Source » UnTagged » cyanogen updater 
cyanogen updater » cmupdaterapp » database » DbAdapter.java
package cmupdaterapp.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import cmupdaterapp.customTypes.FullThemeList;
import cmupdaterapp.customTypes.Screenshot;
import cmupdaterapp.customTypes.ThemeList;
import cmupdaterapp.customization.Customization;
import cmupdaterapp.misc.Log;
import cmupdaterapp.utils.StringUtils;

import java.net.URI;
import java.util.LinkedList;
import java.util.List;

public class DbAdapter {
    private static final String TAG = "DbAdapter";

    private static Boolean showDebugOutput;

    private static final int DATABASE_VERSION = 1;
    //Themelist
    private static final String DATABASE_TABLE_THEMELIST = "ThemeList";
    private static final String KEY_THEMELIST_ID = "id";
    private static final String INDEX_THEMELIST_ID = "uidx_themelist_id";
    public static final int COLUMN_THEMELIST_ID = 0;
    private static final String KEY_THEMELIST_NAME = "name";
    private static final String INDEX_THEMELIST_NAME = "idx_themelist_name";
    public static final int COLUMN_THEMELIST_NAME = 1;
    private static final String KEY_THEMELIST_URI = "uri";
    private static final String INDEX_THEMELIST_URI = "idx_themelist_uri";
    public static final int COLUMN_THEMELIST_URI = 2;
    private static final String KEY_THEMELIST_ENABLED = "enabled";
    private static final String INDEX_THEMELIST_ENABLED = "idx_themelist_enabled";
    public static final int COLUMN_THEMELIST_ENABLED = 3;
    private static final String KEY_THEMELIST_FEATURED = "featured";
    private static final String INDEX_THEMELIST_FEATURED = "idx_themelist_featured";
    public static final int COLUMN_THEMELIST_FEATURED = 4;
    //Screenshots
    private static final String DATABASE_TABLE_SCREENSHOT = "Screenshot";
    private static final String THEMELIST_ID_FOREIGNKEYCONSTRAINT = "fk_themelist_id";
    private static final String TRIGGER_THEMELIST_ID_INSERT = "fki_themelist_id";
    private static final String TRIGGER_THEMELIST_ID_UPDATE = "fku_themelist_id";
    private static final String TRIGGER_THEMELIST_ID_DELETE = "fkd_themelist_id";
    private static final String KEY_SCREENSHOT_ID = "id";
    private static final String INDEX_SCREENSHOT_ID = "uidx_screenshot_id";
    private static final int COLUMN_SCREENSHOT_ID = 0;
    private static final String KEY_SCREENSHOT_THEMELIST_ID = "themelist_id";
    private static final String INDEX_SCREENSHOT_THEMELIST_ID = "idx_screenshot_themelist_id";
    private static final int COLUMN_SCREENSHOT_THEMELIST_ID = 1;
    private static final String KEY_SCREENSHOT_URI = "uri";
    private static final String INDEX_SCREENSHOT_URI = "idx_screenshot_uri";
    private static final int COLUMN_SCREENSHOT_URI = 2;
    private static final String KEY_SCREENSHOT_MODIFYDATE = "modifydate";
    private static final String INDEX_SCREENSHOT_MODIFYDATE = "idx_screenshot_modifydate";
    private static final int COLUMN_SCREENSHOT_MODIFYDATE = 3;
    private static final String KEY_SCREENSHOT_SCREENSHOT = "screenshot";
    private static final String INDEX_SCREENSHOT_SCREENSHOT = "idx_screenshot_screenshot";
    private static final int COLUMN_SCREENSHOT_SCREENSHOT = 4;

    private static final String[] COLUMNS_SCREENSHOT = new String[] {
        KEY_SCREENSHOT_ID,
        KEY_SCREENSHOT_THEMELIST_ID,
        KEY_SCREENSHOT_URI,
        KEY_SCREENSHOT_MODIFYDATE,
        KEY_SCREENSHOT_SCREENSHOT
    };

    private static final String[] COLUMNS_THEMELIST = new String[] {
      KEY_THEMELIST_ID,
      KEY_THEMELIST_NAME,
      KEY_THEMELIST_URI,
      KEY_THEMELIST_ENABLED,
      KEY_THEMELIST_FEATURED
    };

    // SQL Statements to create a new database.
    private static final String DATABASE_CREATE_THEMELIST =
            "create table " +
                    DATABASE_TABLE_THEMELIST +
                    " (" +
                    KEY_THEMELIST_ID + " integer primary key autoincrement, " +
                    KEY_THEMELIST_NAME + " text not null, " +
                    KEY_THEMELIST_URI + " text not null, " +
                    KEY_THEMELIST_ENABLED + " integer default 0, " +
                    KEY_THEMELIST_FEATURED + " integer default 0);";

    private static final String DATABASE_CREATE_SCREENSHOTS =
            "create table " +
                    DATABASE_TABLE_SCREENSHOT +
                    " (" +
                    KEY_SCREENSHOT_ID + " integer primary key autoincrement, " +
                    KEY_SCREENSHOT_THEMELIST_ID + " integer not null" +
                    " CONSTRAINT " + THEMELIST_ID_FOREIGNKEYCONSTRAINT + " REFERENCES " + DATABASE_TABLE_THEMELIST + "(" + KEY_THEMELIST_ID + ") ON DELETE CASCADE, " +
                    KEY_SCREENSHOT_URI + " text not null, " +
                    KEY_SCREENSHOT_MODIFYDATE + " date not null, " +
                    KEY_SCREENSHOT_SCREENSHOT + " blob);";

    //Trigger for foreign Key Constraints (i hate sqlite, hail to ORACLE!)
    private static final String TRIGGER_THEMELISTID_INSERT =
            "CREATE TRIGGER " + TRIGGER_THEMELIST_ID_INSERT +
                    " BEFORE INSERT ON " + DATABASE_TABLE_SCREENSHOT +
                    " FOR EACH ROW BEGIN" +
                    " SELECT CASE" +
                    " WHEN ((new." + KEY_SCREENSHOT_THEMELIST_ID + " IS NOT NULL)" +
                    " AND ((SELECT " + KEY_THEMELIST_ID + " FROM " + DATABASE_TABLE_THEMELIST +
                    " WHERE " + KEY_THEMELIST_ID + " = new." + KEY_SCREENSHOT_THEMELIST_ID + ") IS NULL))" +
                    " THEN RAISE(ABORT, 'insert on table " + DATABASE_TABLE_SCREENSHOT +
                    " violates foreign key constraint " + THEMELIST_ID_FOREIGNKEYCONSTRAINT + "')" +
                    " END;" +
                    " END;";

    private static final String TRIGGER_THEMELISTID_UPDATE =
            "CREATE TRIGGER " + TRIGGER_THEMELIST_ID_UPDATE +
                    " BEFORE UPDATE ON " + DATABASE_TABLE_SCREENSHOT +
                    " FOR EACH ROW BEGIN" +
                    " SELECT CASE" +
                    " WHEN ((SELECT " + KEY_THEMELIST_ID + " FROM " + DATABASE_TABLE_THEMELIST +
                    " WHERE " + KEY_THEMELIST_ID + " = new." + KEY_SCREENSHOT_THEMELIST_ID + ") IS NULL)" +
                    " THEN RAISE(ABORT, 'update on table " + DATABASE_TABLE_SCREENSHOT +
                    " violates foreign key constraint " + THEMELIST_ID_FOREIGNKEYCONSTRAINT + "')" +
                    " END;" +
                    " END;";

    //Delete cached Screenshots, when ThemeList is removed
    private static final String TRIGGER_THEMELISTID_DELETE =
            "CREATE TRIGGER " + TRIGGER_THEMELIST_ID_DELETE +
                    " BEFORE DELETE ON " + DATABASE_TABLE_THEMELIST +
                    " FOR EACH ROW BEGIN" +
                    " DELETE FROM " + DATABASE_TABLE_SCREENSHOT +
                    " WHERE " + KEY_SCREENSHOT_THEMELIST_ID + " = old." + KEY_THEMELIST_ID + ";" +
                    " END;";

    //Indeces ThemeList
    private static final String INDEX_THEMELIST_THEMELIST_ID =
            "CREATE UNIQUE INDEX IF NOT EXISTS " + INDEX_THEMELIST_ID +
                    " ON " + DATABASE_TABLE_THEMELIST + "(" + KEY_THEMELIST_ID + ");";

    private static final String INDEX_THEMELIST_THEMELIST_NAME =
            "CREATE INDEX IF NOT EXISTS " + INDEX_THEMELIST_NAME +
                    " ON " + DATABASE_TABLE_THEMELIST + "(" + KEY_THEMELIST_NAME + ");";

    private static final String INDEX_THEMELIST_THEMELIST_URI =
            "CREATE INDEX IF NOT EXISTS " + INDEX_THEMELIST_URI +
                    " ON " + DATABASE_TABLE_THEMELIST + "(" + KEY_THEMELIST_URI + ");";

    private static final String INDEX_THEMELIST_THEMELIST_ENABLED =
            "CREATE INDEX IF NOT EXISTS " + INDEX_THEMELIST_ENABLED +
                    " ON " + DATABASE_TABLE_THEMELIST + "(" + KEY_THEMELIST_ENABLED + ");";

    private static final String INDEX_THEMELIST_THEMELIST_FEATURED =
            "CREATE INDEX IF NOT EXISTS " + INDEX_THEMELIST_FEATURED +
                    " ON " + DATABASE_TABLE_THEMELIST + "(" + KEY_THEMELIST_FEATURED + ");";

    //Indeces Screenshots
    private static final String INDEX_SCREENSHOT_SCREENSHOT_ID =
            "CREATE UNIQUE INDEX IF NOT EXISTS " + INDEX_SCREENSHOT_ID +
                    " ON " + DATABASE_TABLE_SCREENSHOT + "(" + KEY_SCREENSHOT_ID + ");";

    private static final String INDEX_SCREENSHOT_SCREENSHOT_THEMELIST_ID =
            "CREATE INDEX IF NOT EXISTS " + INDEX_SCREENSHOT_THEMELIST_ID +
                    " ON " + DATABASE_TABLE_SCREENSHOT + "(" + KEY_SCREENSHOT_THEMELIST_ID + ");";

    private static final String INDEX_SCREENSHOT_SCREENSHOT_URI =
            "CREATE INDEX IF NOT EXISTS " + INDEX_SCREENSHOT_URI +
                    " ON " + DATABASE_TABLE_SCREENSHOT + "(" + KEY_SCREENSHOT_URI + ");";

    private static final String INDEX_SCREENSHOT_SCREENSHOT_MODIFYDATE =
            "CREATE INDEX IF NOT EXISTS " + INDEX_SCREENSHOT_MODIFYDATE +
                    " ON " + DATABASE_TABLE_SCREENSHOT + "(" + KEY_SCREENSHOT_MODIFYDATE + ");";

    private static final String INDEX_SCREENSHOT_SCREENSHOT_SCREENSHOT =
            "CREATE INDEX IF NOT EXISTS " + INDEX_SCREENSHOT_SCREENSHOT +
                    " ON " + DATABASE_TABLE_SCREENSHOT + "(" + KEY_SCREENSHOT_SCREENSHOT + ");";

    private final Context context;
    private final DatabaseHelper helper;
    private SQLiteDatabase db;

    public DbAdapter(Context _context, Boolean _showDebugOutput) {
        context = _context;
        helper = new DatabaseHelper(context);
      showDebugOutput = _showDebugOutput;
    }

    public DbAdapter open() throws SQLException{
      db = helper.getWritableDatabase();
        return this;
    }

    public void close() {
        helper.close();
    }

    // Insert a new Theme
    public long insertTheme(ThemeList _theme) {
        ContentValues newValues = new ContentValues();
        newValues.put(KEY_THEMELIST_NAME, _theme.name);
        newValues.put(KEY_THEMELIST_URI, _theme.url.toString());
        newValues.put(KEY_THEMELIST_ENABLED, _theme.enabled ? 1 : 0);
        newValues.put(KEY_THEMELIST_FEATURED, _theme.featured ? 1 : 0);
        return db.insert(DATABASE_TABLE_THEMELIST, null, newValues);
    }

    // Remove a theme based on its index
    public boolean removeTheme(long _rowIndex) {
        return db.delete(DATABASE_TABLE_THEMELIST, KEY_THEMELIST_ID + "= ?",
            new String[]{Long.toString(_rowIndex)}) > 0;
    }

    public long getThemeCount() {
      return DatabaseUtils.queryNumEntries(db, DATABASE_TABLE_THEMELIST);
    }

    // Removes all themes
    public boolean removeAllThemes() {
        return db.delete(DATABASE_TABLE_THEMELIST, null, null) > 0;
    }

    // Removes all themes
    public boolean removeAllFeaturedThemes() {
        return db.delete(DATABASE_TABLE_THEMELIST, KEY_THEMELIST_FEATURED + "= ?",
            new String[]{"1"}) > 0;
    }

    // Disable all Themes
    public boolean disableAllThemes() {
        ContentValues newValue = new ContentValues();
        newValue.put(KEY_THEMELIST_ENABLED, 0);
        return db.update(DATABASE_TABLE_THEMELIST, newValue, null, null) > 0;
    }

    // Disable all Featured Themes
    public boolean disableAllFeaturedThemes() {
        ContentValues newValue = new ContentValues();
        newValue.put(KEY_THEMELIST_ENABLED, 0);
        return db.update(DATABASE_TABLE_THEMELIST, newValue, KEY_THEMELIST_FEATURED + "= ?",
            new String[]{"1"}) > 0;
    }

    // Enable all Themes
    public boolean enableAllThemes() {
        ContentValues newValue = new ContentValues();
        newValue.put(KEY_THEMELIST_ENABLED, 1);
        return db.update(DATABASE_TABLE_THEMELIST, newValue, null, null) > 0;
    }

    // enable all Featured Themes
    public boolean enableAllFeaturedThemes() {
        ContentValues newValue = new ContentValues();
        newValue.put(KEY_THEMELIST_ENABLED, 1);
        return db.update(DATABASE_TABLE_THEMELIST, newValue,
            KEY_THEMELIST_FEATURED + "= ?", new String[]{"1"}) > 0;
    }

    // Update a Theme
    public boolean updateTheme(long _rowIndex, ThemeList _theme) {
        ContentValues newValue = new ContentValues();
        newValue.put(KEY_THEMELIST_NAME, _theme.name);
        newValue.put(KEY_THEMELIST_URI, _theme.url.toString());
        newValue.put(KEY_THEMELIST_ENABLED, _theme.enabled ? 1 : 0);
        newValue.put(KEY_THEMELIST_FEATURED, _theme.featured ? 1 : 0);
        return db.update(DATABASE_TABLE_THEMELIST, newValue,
            KEY_THEMELIST_ID + "= ?", new String[]{Long.toString(_rowIndex)}) > 0;
    }

    public Cursor getAllThemesCursor() {
        return db.query(DATABASE_TABLE_THEMELIST, COLUMNS_THEMELIST,
            null, null, null, null, KEY_THEMELIST_NAME);
    }

    public ThemeList getThemeItem(long _rowIndex) throws SQLException {
        Cursor cursor = db.query(true, DATABASE_TABLE_THEMELIST,
            COLUMNS_THEMELIST, KEY_THEMELIST_ID + "= ?",
            new String[]{Long.toString(_rowIndex)}, null, null, null, null);
        if ((cursor.getCount() == 0) || !cursor.moveToFirst()) {
            cursor.close();
            throw new SQLException("No Theme item found for row: " + _rowIndex);
        }
        String name = cursor.getString(COLUMN_THEMELIST_NAME);
        String uri = cursor.getString(COLUMN_THEMELIST_URI);
        int enabled = cursor.getInt(COLUMN_THEMELIST_ENABLED);
        int featured = cursor.getInt(COLUMN_THEMELIST_FEATURED);
        int Key = cursor.getInt(COLUMN_THEMELIST_ID);
        ThemeList result = new ThemeList();
        result.name = name;
        result.url = URI.create(uri);
        result.PrimaryKey = Key;
        result.enabled = enabled == 1;
        result.featured = featured == 1;
        cursor.close();
        return result;
    }

    public void UpdateFeaturedThemes(FullThemeList t) {
        FullThemeList retValue = new FullThemeList();
        //Get the enabled state of the current Featured Themes
        for (ThemeList tl : t.returnFullThemeList()) {
            Cursor result = db.query(true, DATABASE_TABLE_THEMELIST,
                COLUMNS_THEMELIST, KEY_THEMELIST_NAME + "= ? and "
                + KEY_THEMELIST_FEATURED + "= ?",
                new String[]{tl.name, "1"}, null, null, null, null);
            if (!result.moveToFirst()) {
                if (showDebugOutput) Log.d(TAG, "Theme " + tl.name + " not found in your List");
                retValue.addThemeToList(tl);
                continue;
            }
            tl.enabled = result.getInt(COLUMN_THEMELIST_ENABLED) != 0;
            retValue.addThemeToList(tl);
            result.close();
        }
        //Delete all featured Themes
        db.delete(DATABASE_TABLE_THEMELIST, KEY_THEMELIST_FEATURED + "= ?",
            new String[]{"1"});
        if (showDebugOutput) Log.d(TAG, "Deleted all old Featured Theme Servers");
        //Add all Featured Themes again
        for (ThemeList tl2 : retValue.returnFullThemeList()) {
            insertTheme(tl2);
        }
        if (showDebugOutput) Log.d(TAG, "Updated Featured Theme Servers");
    }

    //SCREENSHOTS

    // Remove a Screenshot based on its index
    public boolean removeScreenshot(long _rowIndex) {
        return db.delete(DATABASE_TABLE_SCREENSHOT, KEY_SCREENSHOT_ID + "= ?",
            new String[]{Long.toString(_rowIndex)}) > 0;
    }

    // Remove all Screenshots for given Theme except the ones in the parameter
    public boolean removeScreenshotExcept(int ForeignKey, String[] primaryKeysNotToRemove) {
        if (primaryKeysNotToRemove == null || primaryKeysNotToRemove.length == 0)
            return false;
        String temp = StringUtils.arrayToString(primaryKeysNotToRemove, ",");
        return db.delete(DATABASE_TABLE_SCREENSHOT, KEY_SCREENSHOT_THEMELIST_ID + "= ? AND "
                + KEY_SCREENSHOT_ID + " not in (?)",
                new String[]{Integer.toString(ForeignKey), temp}) > 0;
    }

    // Remove a Screenshot based on its FeaturedThemeIndex
    public boolean removeAllScreenshotsForTheme(long FeaturedThemeId) {
        return db.delete(DATABASE_TABLE_SCREENSHOT,
            KEY_SCREENSHOT_THEMELIST_ID + "= ?",
            new String[]{Long.toString(FeaturedThemeId)}) > 0;
    }

    // Insert a new Screenshot
    public long insertScreenshot(Screenshot _screenshot) {

        ContentValues newValues = new ContentValues();
        newValues.put(KEY_SCREENSHOT_THEMELIST_ID, _screenshot.ForeignThemeListKey);
        newValues.put(KEY_SCREENSHOT_URI, _screenshot.url.toString());
        newValues.put(KEY_SCREENSHOT_MODIFYDATE, _screenshot.getModifyDate());
        newValues.put(KEY_SCREENSHOT_SCREENSHOT, _screenshot.getPictureAsByteArray());
        return db.insert(DATABASE_TABLE_SCREENSHOT, null, newValues);
    }

    //Get all Screenshots for a Theme
    public List<Screenshot> getAllScreenshotsForTheme(long _themeIndex) throws SQLException {
        Cursor cursor = db.query(true, DATABASE_TABLE_SCREENSHOT,
            COLUMNS_SCREENSHOT, KEY_SCREENSHOT_THEMELIST_ID + "= ?",
            new String[]{Long.toString(_themeIndex)}, null, null, null, null);
        if ((cursor.getCount() == 0) || !cursor.moveToFirst()) {
            cursor.close();
            return null;
        }

        List<Screenshot> result = new LinkedList<Screenshot>();

        cursor.moveToFirst();
        do {
            Screenshot item = new Screenshot();
            item.PrimaryKey = cursor.getInt(COLUMN_SCREENSHOT_ID);
            item.ForeignThemeListKey = cursor.getInt(COLUMN_SCREENSHOT_THEMELIST_ID);
            item.url = URI.create(cursor.getString(COLUMN_SCREENSHOT_URI));
            item.setModifyDate(cursor.getString(COLUMN_SCREENSHOT_MODIFYDATE));
            item.setBitmapFromByteArray(cursor.getBlob(COLUMN_SCREENSHOT_SCREENSHOT));
            result.add(item);
        } while (cursor.moveToNext());
        cursor.close();
        return result;
    }

    //Get single Screenshots by Id
    public Screenshot getScreenshotById(long _index) throws SQLException {
        Cursor cursor = db.query(true, DATABASE_TABLE_SCREENSHOT,
            COLUMNS_SCREENSHOT, KEY_SCREENSHOT_ID + "= ?",
            new String[]{Long.toString(_index)}, null, null, null, null);
        if ((cursor.getCount() == 0) || !cursor.moveToFirst()) {
            cursor.close();
            throw new SQLException("No Screenshot found for Key: " + _index);
        }

        Screenshot result = new Screenshot();
        result.PrimaryKey = cursor.getInt(COLUMN_SCREENSHOT_ID);
        result.ForeignThemeListKey = cursor.getInt(COLUMN_SCREENSHOT_THEMELIST_ID);
        result.url = URI.create(cursor.getString(COLUMN_SCREENSHOT_URI));
        result.setModifyDate(cursor.getString(COLUMN_SCREENSHOT_MODIFYDATE));
        result.setBitmapFromByteArray(cursor.getBlob(COLUMN_SCREENSHOT_SCREENSHOT));
        cursor.close();
        return result;
    }

    //Checks if a Screenshot already exists. Cause the Primary Key is Stored in the Screenshot Object
    //The contains() Method will not work cause theres no Primary Key on Download
    //Will return a Screenshotobject with only the PrimaryKey if found, otherwise -1,the Modifydate and the blob
    public Screenshot ScreenshotExists(int ForeignKey, String Url) throws SQLException {
        Screenshot retValue = new Screenshot();
        Cursor cursor = db.query(true, DATABASE_TABLE_SCREENSHOT,
            COLUMNS_SCREENSHOT, KEY_SCREENSHOT_THEMELIST_ID + "= ? AND "
            + KEY_SCREENSHOT_URI + "= ?",
                new String[]{Integer.toString(ForeignKey), Url}, null, null, null, null);
        if ((cursor.getCount() != 0) && cursor.moveToFirst()) {
            retValue.PrimaryKey = cursor.getInt(COLUMN_SCREENSHOT_ID);
            retValue.ForeignThemeListKey = cursor.getInt(COLUMN_SCREENSHOT_THEMELIST_ID);
            retValue.url = URI.create(cursor.getString(COLUMN_SCREENSHOT_URI));
            retValue.setModifyDate(cursor.getString(COLUMN_SCREENSHOT_MODIFYDATE));
            retValue.setBitmapFromByteArray(cursor.getBlob(COLUMN_SCREENSHOT_SCREENSHOT));
        }
        cursor.close();
        return retValue;
    }

    // Update a Screenshot
    public boolean updateScreenshot(long _rowIndex, Screenshot _screenshot) {
        ContentValues newValue = new ContentValues();
        newValue.put(KEY_SCREENSHOT_THEMELIST_ID, _screenshot.ForeignThemeListKey);
        newValue.put(KEY_SCREENSHOT_URI, _screenshot.url.toString());
        newValue.put(KEY_SCREENSHOT_MODIFYDATE, _screenshot.getModifyDate());
        newValue.put(KEY_SCREENSHOT_SCREENSHOT, _screenshot.getPictureAsByteArray());
        return db.update(DATABASE_TABLE_SCREENSHOT, newValue,
            KEY_SCREENSHOT_ID + "= ?", new String[]{Long.toString(_rowIndex)}) > 0;
    }

    // Delete All Screenshots
    public void deleteAllScreenshot() {
        db.execSQL("DELETE FROM " + DATABASE_TABLE_SCREENSHOT + ";");
    }

    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context, Customization.DATABASE_FILE, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            if (showDebugOutput) Log.d(TAG, "Create Database");
            db.execSQL(DATABASE_CREATE_THEMELIST);
            db.execSQL(DATABASE_CREATE_SCREENSHOTS);

            db.execSQL(INDEX_THEMELIST_THEMELIST_ID);
            db.execSQL(INDEX_THEMELIST_THEMELIST_NAME);
            db.execSQL(INDEX_THEMELIST_THEMELIST_URI);
            db.execSQL(INDEX_THEMELIST_THEMELIST_ENABLED);
            db.execSQL(INDEX_THEMELIST_THEMELIST_FEATURED);
            db.execSQL(INDEX_SCREENSHOT_SCREENSHOT_ID);
            db.execSQL(INDEX_SCREENSHOT_SCREENSHOT_THEMELIST_ID);
            db.execSQL(INDEX_SCREENSHOT_SCREENSHOT_URI);
            db.execSQL(INDEX_SCREENSHOT_SCREENSHOT_MODIFYDATE);
            db.execSQL(INDEX_SCREENSHOT_SCREENSHOT_SCREENSHOT);

            db.execSQL(TRIGGER_THEMELISTID_INSERT);
            db.execSQL(TRIGGER_THEMELISTID_UPDATE);
            db.execSQL(TRIGGER_THEMELISTID_DELETE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion,
                              int newVersion)
        {
          if (showDebugOutput)
                Log.d(TAG, "Upgrading from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
            //Drop the old tables and triggers
            if (showDebugOutput) Log.d(TAG, "Dropping old Database");
            db.execSQL("DROP TRIGGER IF EXISTS " + TRIGGER_THEMELIST_ID_INSERT);
            db.execSQL("DROP TRIGGER IF EXISTS " + TRIGGER_THEMELIST_ID_UPDATE);
            db.execSQL("DROP TRIGGER IF EXISTS " + TRIGGER_THEMELIST_ID_DELETE);

            db.execSQL("DROP INDEX IF EXISTS " + INDEX_THEMELIST_ID);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_THEMELIST_NAME);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_THEMELIST_URI);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_THEMELIST_ENABLED);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_THEMELIST_FEATURED);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_SCREENSHOT_ID);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_SCREENSHOT_THEMELIST_ID);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_SCREENSHOT_URI);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_SCREENSHOT_MODIFYDATE);
            db.execSQL("DROP INDEX IF EXISTS " + INDEX_SCREENSHOT_SCREENSHOT);

            db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SCREENSHOT);
            db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_THEMELIST);
            onCreate(db);
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.