package net.kismetwireless.android.smarterwifimanager;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by dragorn on 8/30/13.
*/
public class SmarterWifiDBHelper extends SQLiteOpenHelper {
public static final String TABLE_SSID = "ssid";
public static final String COL_SSID_ID = "_id";
public static final String COL_SSID_SSID = "ssid";
public static final String COL_SSID_TIME_S = "timesec";
public static final String TABLE_CELL = "cell";
public static final String COL_CELL_ID = "_id";
public static final String COL_CELL_CELLID = "cellid";
public static final String COL_CELL_TIME_S = "timesec";
public static final String COL_CELL_TIME_LAST_S = "lasttimesec";
public static final String TABLE_SSID_CELL_MAP = "ssidcellmap";
public static final String COL_SCMAP_ID = "_id";
public static final String COL_SCMAP_SSIDID = "ssidid";
public static final String COL_SCMAP_CELLID = "cellid";
public static final String COL_SCMAP_TIME_S = "timesec";
public static final String COL_SCMAP_TIME_LAST_S = "lasttimesec";
public static final String TABLE_SSID_BLACKLIST = "ssidblacklist";
public static final String COL_SSIDBL_ID = "_id";
public static final String COL_SSIDBL_SSID = "ssid";
public static final String COL_SSIDBL_BLACKLIST = "blacklist";
public static final String TABLE_BT_BLACKLIST = "btblacklist";
public static final String COL_BTBL_ID = "_id";
public static final String COL_BTBL_MAC = "btmac";
public static final String COL_BTBL_NAME = "btname";
public static final String COL_BTBL_BLACKLIST = "blacklist";
public static final String COL_BTBL_ENABLE = "enable";
public static final String TABLE_TIMERANGE = "timerange";
public static final String COL_TIMERANGE_ID = "_id";
public static final String COL_TIMERANGE_ENABLED = "enabled";
public static final String COL_TIMERANGE_START_HR = "starthr";
public static final String COL_TIMERANGE_START_MIN = "startmin";
public static final String COL_TIMERANGE_END_HR = "endhr";
public static final String COL_TIMERANGE_END_MIN = "endmin";
public static final String COL_TIMERANGE_REPEAT = "repeat";
public static final String COL_TIMERANGE_CONTROL_WIFI = "controlwifi";
public static final String COL_TIMERANGE_ENABLE_WIFI = "enablewifi";
public static final String COL_TIMERANGE_CONTROL_BT = "controlbt";
public static final String COL_TIMERANGE_ENABLE_BT = "enablebt";
public static final String CREATE_SSID_TABLE =
"CREATE TABLE " + TABLE_SSID + " (" +
COL_SSID_ID + " integer primary key autoincrement, " +
COL_SSID_SSID + " text, " +
COL_SSID_TIME_S + " int " +
");";
public static final String CREATE_CELL_TABLE =
"CREATE TABLE " + TABLE_CELL + " (" +
COL_CELL_ID + " integer primary key autoincrement, " +
COL_CELL_CELLID + " int, " +
COL_CELL_TIME_S + " int," +
COL_CELL_TIME_LAST_S + " int " +
");";
public static final String CREATE_SSID_CELL_MAP_TABLE =
"CREATE TABLE " + TABLE_SSID_CELL_MAP + " (" +
COL_SCMAP_ID + " integer primary key autoincrement, " +
COL_SCMAP_SSIDID + " int, " +
COL_SCMAP_CELLID + " int, " +
COL_SCMAP_TIME_S + " int," +
COL_SCMAP_TIME_LAST_S + " int" +
");";
public static final String CREATE_SSID_BLACKLIST_TABLE =
"CREATE TABLE " + TABLE_SSID_BLACKLIST + " (" +
COL_SSIDBL_ID + " integer primary key autoincrement, " +
COL_SSIDBL_SSID + " text," +
COL_SSIDBL_BLACKLIST + " int" +
");";
public static final String CREATE_BLUETOOTH_BLACKLIST_TABLE =
"CREATE TABLE " + TABLE_BT_BLACKLIST + " (" +
COL_BTBL_ID + " integer primary key autoincrement, " +
COL_BTBL_MAC + " text, " +
COL_BTBL_NAME + " text, " +
COL_BTBL_BLACKLIST + " int," +
COL_BTBL_ENABLE + " int" +
");";
public static final String CREATE_TIMERANGE_TABLE =
"CREATE TABLE " + TABLE_TIMERANGE + " (" +
COL_TIMERANGE_ID + " integer primary key autoincrement, " +
COL_TIMERANGE_ENABLED + " int, " +
COL_TIMERANGE_START_HR + " int, " +
COL_TIMERANGE_START_MIN + " int, " +
COL_TIMERANGE_END_HR + " int, " +
COL_TIMERANGE_END_MIN + " int, " +
COL_TIMERANGE_REPEAT + " int, " +
COL_TIMERANGE_CONTROL_WIFI + " int, " +
COL_TIMERANGE_ENABLE_WIFI + " int, " +
COL_TIMERANGE_CONTROL_BT + " int, " +
COL_TIMERANGE_ENABLE_BT + " int" +
");";
public static final String DATABASE_NAME = "smartermap.db";
private static final int DATABASE_VERSION = 10;
public SmarterWifiDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(CREATE_SSID_TABLE);
database.execSQL(CREATE_CELL_TABLE);
database.execSQL(CREATE_SSID_CELL_MAP_TABLE);
database.execSQL(CREATE_SSID_BLACKLIST_TABLE);
database.execSQL(CREATE_BLUETOOTH_BLACKLIST_TABLE);
database.execSQL(CREATE_TIMERANGE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 4) {
db.execSQL("DROP TABLE " + TABLE_SSID_BLACKLIST);
db.execSQL(CREATE_SSID_BLACKLIST_TABLE);
}
if (oldVersion < 7) {
try {
db.execSQL("DROP TABLE " + TABLE_BT_BLACKLIST);
} catch (SQLiteException e) {
Log.e("smarter", "failed to drop old table, soldiering on: " + e);
}
db.execSQL(CREATE_BLUETOOTH_BLACKLIST_TABLE);
}
if (oldVersion < 8) {
LogAlias.d("smarter", "Purging old cell tower format");
db.execSQL("DELETE FROM " + TABLE_SSID_CELL_MAP);
db.execSQL("DELETE FROM " + TABLE_CELL);
}
if (oldVersion < 9) {
LogAlias.d("smarter", "creating new timerange table");
db.execSQL(CREATE_TIMERANGE_TABLE);
}
if (oldVersion < 10) {
LogAlias.d("smarter", "adding last timesec column");
db.execSQL("ALTER TABLE " + TABLE_CELL + " ADD COLUMN " + COL_CELL_TIME_LAST_S + " int;");
db.execSQL("ALTER TABLE " + TABLE_SSID_CELL_MAP + " ADD COLUMN " + COL_SCMAP_TIME_LAST_S + " int;");
}
}
}