package database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.util.Log;
//import com.orhanobut.logger.Logger;
class DatabaseHelper extends SQLiteOpenHelper {
private SQLiteDatabase db;
private static final String CREATE_TABLE_AREA = "CREATE TABLE table_area (description TEXT, id INTEGER, name TEXT);";
private static final String CREATE_TABLE_ROOM = "CREATE TABLE table_room (area_id INTEGER, description TEXT, id INTEGER, name TEXT);";
private static final String CREATE_TABLE_ICON = "CREATE TABLE table_icon (name TEXT, value TEXT, reference INTEGER);";
private static final String CREATE_TABLE_FEATURE = "CREATE TABLE table_feature (device_feature_model_id TEXT, id INTEGER, device_id INTEGER, device_usage_id TEXT, address TEXT, device_type_id TEXT, description TEXT, name TEXT, state_key TEXT, parameters TEXT, value_type TEXT);";
private static final String CREATE_TABLE_FEATURE_ASSOCIATION = "CREATE TABLE table_feature_association (place_id INTEGER, place_type TEXT, device_feature_id INTEGER, id INTEGER, device_feature TEXT );";
private static final String CREATE_TABLE_FEATURE_STATE = "CREATE TABLE table_feature_state (device_id INTEGER, key TEXT, value TEXT);";
private static final String CREATE_TABLE_FEATURE_MAP = "CREATE TABLE table_feature_map (id, posx INTEGER, posy INTEGER, map TEXT);";
private static final String CREATE_TABLE_APP_WIDGETS = "CREATE TABLE table_app_widgets (widget_id INTEGER, device_feature_id_sensor INTEGER, device_feature_id_command INTEGER);";
private static final String DATABASE_NAME = Environment.getExternalStorageDirectory() + "/domodroid/.conf/domodroid.db";
private static final int DATABASE_VERSION = 2;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
//com.orhanobut.logger.Logger.init("DatabaseHelper").methodCount(0);
//Logger.i("DATABASE_NAME = " + DATABASE_NAME);
Log.i("DatabaseHelper", "DATABASE_NAME = " + DATABASE_NAME);
}
@Override
public void onCreate(SQLiteDatabase db) {
this.db = db;
db.execSQL(CREATE_TABLE_AREA);
db.execSQL(CREATE_TABLE_ROOM);
db.execSQL(CREATE_TABLE_ICON);
db.execSQL(CREATE_TABLE_FEATURE);
db.execSQL(CREATE_TABLE_FEATURE_MAP);
db.execSQL(CREATE_TABLE_FEATURE_ASSOCIATION);
db.execSQL(CREATE_TABLE_FEATURE_STATE);
db.execSQL(CREATE_TABLE_APP_WIDGETS);
}
@Override
protected void finalize() throws Throwable {
if (db != null)
db.close();
super.finalize();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == 1 && newVersion == 2) {
Log.w("DatabaseHelper", "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will add table for appwidgets");
//drop before recreating it as it may crash when switching from different version (fdroid/dev/store/github...)
db.execSQL("DROP TABLE IF EXISTS table_app_widgets");
db.execSQL(CREATE_TABLE_APP_WIDGETS);
} else {
Log.w("DatabaseHelper", "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS table_area");
db.execSQL("DROP TABLE IF EXISTS table_room");
db.execSQL("DROP TABLE IF EXISTS table_icon");
db.execSQL("DROP TABLE IF EXISTS table_feature");
db.execSQL("DROP TABLE IF EXISTS table_feature_association");
db.execSQL("DROP TABLE IF EXISTS table_feature_state");
db.execSQL("DROP TABLE IF EXISTS table_feature_map");
db.execSQL("DROP TABLE IF EXISTS table_app_widgets");
onCreate(db);
}
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("DatabaseHelper", "Downgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS table_area");
db.execSQL("DROP TABLE IF EXISTS table_room");
db.execSQL("DROP TABLE IF EXISTS table_icon");
db.execSQL("DROP TABLE IF EXISTS table_feature");
db.execSQL("DROP TABLE IF EXISTS table_feature_association");
db.execSQL("DROP TABLE IF EXISTS table_feature_state");
db.execSQL("DROP TABLE IF EXISTS table_feature_map");
db.execSQL("DROP TABLE IF EXISTS table_app_widgets");
onCreate(db);
}
}