/** * Copyright (C) 2009 Michael A. MacDonald */ package android.androidVNC; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * @author Michael A. MacDonald * */ class VncDatabase extends SQLiteOpenHelper { static final int DBV_0_2_X = 9; static final int DBV_0_2_4 = 10; static final int DBV_0_4_7 = 11; static final int DBV_0_5_0 = 12; public final static String TAG = VncDatabase.class.toString(); VncDatabase(Context context) { super(context,"VncDatabase",null,DBV_0_5_0); } /* (non-Javadoc) * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase) */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL(AbstractConnectionBean.GEN_CREATE); db.execSQL(MostRecentBean.GEN_CREATE); db.execSQL(MetaList.GEN_CREATE); db.execSQL(AbstractMetaKeyBean.GEN_CREATE); db.execSQL(SentTextBean.GEN_CREATE); db.execSQL("INSERT INTO "+MetaList.GEN_TABLE_NAME+" VALUES ( 1, 'DEFAULT')"); } private void defaultUpgrade(SQLiteDatabase db) { Log.i(TAG, "Doing default database upgrade (drop and create tables)"); db.execSQL("DROP TABLE IF EXISTS " + AbstractConnectionBean.GEN_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MostRecentBean.GEN_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + MetaList.GEN_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + AbstractMetaKeyBean.GEN_TABLE_NAME); db.execSQL("DROP TABLE IF EXISTS " + SentTextBean.GEN_TABLE_NAME); onCreate(db); } /* (non-Javadoc) * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int) */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < DBV_0_2_X) { defaultUpgrade(db); } else { if (oldVersion == DBV_0_2_X) { Log.i(TAG, "Doing upgrade from 9 to 10"); db.execSQL("ALTER TABLE " + AbstractConnectionBean.GEN_TABLE_NAME + " RENAME TO OLD_" + AbstractConnectionBean.GEN_TABLE_NAME); db.execSQL(AbstractConnectionBean.GEN_CREATE); db.execSQL("INSERT INTO " + AbstractConnectionBean.GEN_TABLE_NAME + " SELECT *, 0 FROM OLD_" + AbstractConnectionBean.GEN_TABLE_NAME); db.execSQL("DROP TABLE OLD_" + AbstractConnectionBean.GEN_TABLE_NAME); oldVersion = DBV_0_2_4; } if (oldVersion == DBV_0_2_4) { Log.i(TAG,"Doing upgrade from 10 to 11"); db.execSQL("ALTER TABLE " + AbstractConnectionBean.GEN_TABLE_NAME + " ADD COLUMN " +AbstractConnectionBean.GEN_FIELD_USERNAME+" TEXT"); db.execSQL("ALTER TABLE " + AbstractConnectionBean.GEN_TABLE_NAME + " ADD COLUMN " +AbstractConnectionBean.GEN_FIELD_SECURECONNECTIONTYPE+" TEXT"); db.execSQL("ALTER TABLE " + MostRecentBean.GEN_TABLE_NAME + " ADD COLUMN " + MostRecentBean.GEN_FIELD_SHOW_SPLASH_VERSION + " INTEGER"); db.execSQL("ALTER TABLE " + MostRecentBean.GEN_TABLE_NAME + " ADD COLUMN " + MostRecentBean.GEN_FIELD_TEXT_INDEX); oldVersion = DBV_0_4_7; } Log.i(TAG,"Doing upgrade from 11 to 12"); // Haven't been using SentText before, primary key handling changed so drop and recreate it db.execSQL("DROP TABLE IF EXISTS " + SentTextBean.GEN_TABLE_NAME); db.execSQL(SentTextBean.GEN_CREATE); db.execSQL("ALTER TABLE " + AbstractConnectionBean.GEN_TABLE_NAME + " ADD COLUMN " +AbstractConnectionBean.GEN_FIELD_SHOWZOOMBUTTONS+" INTEGER DEFAULT 1"); db.execSQL("ALTER TABLE " + AbstractConnectionBean.GEN_TABLE_NAME + " ADD COLUMN " +AbstractConnectionBean.GEN_FIELD_DOUBLE_TAP_ACTION+" TEXT"); } } }