/******************************************************************************* * Copyright (c) 2014 CodingBad. * All rights reserved. This file is part of ASA. * * ASA is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ASA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ASA. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * Ayelén Chavez - ashy.on.line@gmail.com * Joaquín Rinaudo - jmrinaudo@gmail.com ******************************************************************************/ package com.thesis.asa.provider; import java.util.HashMap; import java.util.Map; import android.Manifest; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class SettingsDB extends SQLiteOpenHelper { public static final String DB_NAME = "settings.db"; public static final int DB_VERSION = 22; public static final String TABLE = "status"; // Contacts Settings DB public static final String CONTACTS_TABLE = "contacts_settings"; public static final String COL_PKG_NAME = "pkgName"; public static final String COL_PROCESSES_NAMES = "processes"; public static final String COL_GROUPS = "availableGroups"; private static final String CREATE_CONTACTS_TABLE = "create table "+ CONTACTS_TABLE+" ("+ COL_PKG_NAME + " text primary key, " + COL_PROCESSES_NAMES + " text not null, " + COL_GROUPS + " text not null);"; // Device data DB public static final String DEVICE_DATA_TABLE = "device_data_settings"; public static final String COL_ANDROID_ID = "getString"; public static final String COL_TELEPHONY_ID = "getDeviceId"; public static final String COL_SUBSCRIBER_ID = "getSubscriberId"; public static final String COL_SIM_NUMBER = "getSimSerialNumber"; public static final String COL_LINE_NUMBER = "getLine1Number"; private static final String CREATE_DEVICE_DATA_TABLE = "create table "+ DEVICE_DATA_TABLE+" ("+ COL_PKG_NAME + " text primary key, " + COL_PROCESSES_NAMES + " text not null, " + COL_ANDROID_ID + " text, " + COL_TELEPHONY_ID + " text, "+ COL_SUBSCRIBER_ID + " text, "+ COL_SIM_NUMBER + " text, "+ COL_LINE_NUMBER + " text);"; public static final String[] DEVICE_DATA_TABLE_COLUMNS = {COL_ANDROID_ID, COL_TELEPHONY_ID, COL_SUBSCRIBER_ID, COL_SIM_NUMBER, COL_LINE_NUMBER}; // Wifi Info Settings DB public static final String WIFI_TABLE = "wifi_settings"; public static final String COL_BSSID = "getBSSID"; public static final String COL_IPADDRESS = "getIpAddress"; public static final String COL_MACADDRESS = "getMacAddress"; public static final String COL_SSID = "getSSID"; public static final String COL_CONFIGURATIONS = "getConfiguredNetworks"; public static final String COL_SCANS = "getScanResults"; private static final String CREATE_WIFI_TABLE = "create table "+ WIFI_TABLE+" ("+ COL_PKG_NAME + " text primary key, " + COL_PROCESSES_NAMES + " text not null, " + COL_SSID + " text, "+ COL_BSSID + " text, "+ COL_IPADDRESS + " text, "+ COL_MACADDRESS + " text, "+ COL_CONFIGURATIONS + " text, "+ COL_SCANS +" text )"; // Wifi Saved State DB public static final String WIFI_STATES_TABLE = "saved_wifi_settings"; private static final String CREATE_WIFI_STATES_TABLE = "create table "+ WIFI_STATES_TABLE +" ("+ COL_SSID + " text, "+ COL_BSSID + " text, "+ COL_IPADDRESS + " text, "+ COL_MACADDRESS + " text, "+ COL_CONFIGURATIONS + " text, " + COL_SCANS +" text, "+ "PRIMARY KEY ("+COL_SSID+", "+COL_BSSID+", "+COL_IPADDRESS+", "+COL_MACADDRESS+", "+COL_CONFIGURATIONS+", "+COL_SCANS+"));"; public static final String[] WIFI_TABLE_COLUMNS = {COL_SSID, COL_BSSID, COL_IPADDRESS, COL_MACADDRESS, COL_CONFIGURATIONS, COL_SCANS}; public static final String[] WIFI_STATES_TABLE_COLUMNS = {COL_SSID, COL_BSSID, COL_IPADDRESS, COL_MACADDRESS, COL_SCANS}; public static final String LOCATION_TABLE = "location_settings"; public static final String COL_LATITUDE = "latitude"; public static final String COL_LONGITUDE = "longitude"; public static final String COL_CELL_LOCATION = "getCellLocation"; public static final String COL_NEIGHBORING_CELL_INFO = "getNeighboringCellInfo"; private static final String CREATE_LOCATION_TABLE = "create table "+ LOCATION_TABLE+" ("+ COL_PKG_NAME + " text primary key, " + COL_PROCESSES_NAMES + " text not null, " + COL_LATITUDE + " text, "+ COL_LONGITUDE + " text, "+ COL_CELL_LOCATION + " text, "+ COL_NEIGHBORING_CELL_INFO + " text not null )"; public static final String[] LOCATION_TABLE_COLUMNS = {COL_LATITUDE, COL_LONGITUDE, COL_CELL_LOCATION, COL_NEIGHBORING_CELL_INFO }; public static final String LOCATION_STATES_TABLE = "saved_location_settings"; private static final String CREATE_LOCATION_STATES_TABLE = "create table "+ LOCATION_STATES_TABLE +" (" + COL_LATITUDE + " text, "+ COL_LONGITUDE + " text, "+ COL_CELL_LOCATION + " text, "+ COL_NEIGHBORING_CELL_INFO + " text not null )"; // Internet Settings DB public static final String INTERNET_TABLE = "internet_settings"; public static final String COL_JAVASCRIPT_ENABLED = "setJavascriptEnabled"; private static final String CREATE_INTERNET_TABLE = "create table "+ INTERNET_TABLE+" ("+ COL_PKG_NAME + " text primary key, " + COL_PROCESSES_NAMES + " text not null, " + COL_JAVASCRIPT_ENABLED + " text )"; public static final String[] INTERNET_TABLE_COLUMNS = {COL_JAVASCRIPT_ENABLED}; // Default Settings DB public static final String DEFAULT_TABLE = "default_settings"; public static final String COL_PERMISSION = "permission"; public static final String COL_SYSTEM = "isSystem"; public static final String COL_CONFIGURATION = "configuration"; private static final String CREATE_DEFAULT_TABLE = "create table "+ DEFAULT_TABLE+" ("+ COL_PERMISSION + " text not null, " + COL_SYSTEM + " integer not null, " + COL_CONFIGURATION + " text not null, " + "PRIMARY KEY ("+COL_PERMISSION+", "+COL_SYSTEM+"));"; private static final String DEBUG_TAG = "SettingsProvider"; public SettingsDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_CONTACTS_TABLE); db.execSQL(CREATE_DEVICE_DATA_TABLE); db.execSQL(CREATE_WIFI_TABLE); db.execSQL(CREATE_DEFAULT_TABLE); db.execSQL(CREATE_WIFI_STATES_TABLE); db.execSQL(CREATE_LOCATION_TABLE); db.execSQL(CREATE_LOCATION_STATES_TABLE); db.execSQL(CREATE_INTERNET_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(DEBUG_TAG, "Upgrading database. Existing contents will be lost. [" + oldVersion + "]->[" + newVersion + "]"); db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE); db.execSQL("DROP TABLE IF EXISTS " + DEVICE_DATA_TABLE); db.execSQL("DROP TABLE IF EXISTS " + WIFI_TABLE); db.execSQL("DROP TABLE IF EXISTS " + DEFAULT_TABLE); db.execSQL("DROP TABLE IF EXISTS " + WIFI_STATES_TABLE); db.execSQL("DROP TABLE IF EXISTS " + LOCATION_TABLE); db.execSQL("DROP TABLE IF EXISTS " + LOCATION_STATES_TABLE); db.execSQL("DROP TABLE IF EXISTS " + INTERNET_TABLE); onCreate(db); } private static Map<String, String> tableByPermission; static { tableByPermission = new HashMap<String, String>(); tableByPermission.put(Manifest.permission.READ_CONTACTS, CONTACTS_TABLE); tableByPermission.put(Manifest.permission.ACCESS_FINE_LOCATION, LOCATION_TABLE); tableByPermission.put(Manifest.permission.ACCESS_WIFI_STATE, WIFI_TABLE); tableByPermission.put(Manifest.permission.READ_PHONE_STATE, DEVICE_DATA_TABLE); tableByPermission.put(Manifest.permission.ACCESS_COARSE_LOCATION, LOCATION_TABLE); tableByPermission.put(Manifest.permission.ACCESS_FINE_LOCATION, LOCATION_TABLE); tableByPermission.put(Manifest.permission.INTERNET, INTERNET_TABLE); } public static String getTableNameForPermission(String permission) { return tableByPermission.get(permission); } }