10144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar/* 20144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** 30144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** Copyright (C) 2014, The Android Open Source Project 40144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** 50144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** Licensed under the Apache License, Version 2.0 (the "License"); 60144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** you may not use this file except in compliance with the License. 70144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** You may obtain a copy of the License at 80144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** 90144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** http://www.apache.org/licenses/LICENSE-2.0 100144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** 110144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** Unless required by applicable law or agreed to in writing, software 120144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** distributed under the License is distributed on an "AS IS" BASIS, 130144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** See the License for the specific language governing permissions and 150144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar** limitations under the License. 160144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar*/ 170144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 180144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarpackage com.android.providers.telephony; 190144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 200144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarimport android.content.Context; 210144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarimport android.database.sqlite.SQLiteDatabase; 220144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarimport android.database.sqlite.SQLiteOpenHelper; 230144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarimport android.text.TextUtils; 24cc28f5747906c51908a5ae59ca6a79abd1019834pkanwarimport android.util.Log; 25cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar 260144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarimport java.util.ArrayList; 270144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarimport java.util.List; 280144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 290144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwarpublic class CarrierDatabaseHelper extends SQLiteOpenHelper { 300144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar private static final String TAG = "CarrierDatabaseHelper"; 310144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar private static final boolean DBG = true; 320144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 330144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar private static final String DATABASE_NAME = "CarrierInformation.db"; 340144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar public static final String CARRIER_KEY_TABLE = "carrier_key"; 35cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar private static final int DATABASE_VERSION = 2; 360144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 370144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar /** 380144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar * CarrierDatabaseHelper carrier database helper class. 390144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar * @param context of the user. 400144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar */ 410144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar public CarrierDatabaseHelper(Context context) { 420144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar super(context, DATABASE_NAME, null, DATABASE_VERSION); 430144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar } 440144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 45cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String KEY_TYPE = "key_type"; 46cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String MCC = "mcc"; 47cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String MNC = "mnc"; 48cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String MVNO_TYPE = "mvno_type"; 49cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String MVNO_MATCH_DATA = "mvno_match_data"; 50cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String PUBLIC_KEY = "public_key"; 51cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String KEY_IDENTIFIER = "key_identifier"; 52cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String EXPIRATION_TIME = "expiration_time"; 53cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public static final String LAST_MODIFIED = "last_modified"; 540144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 550144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar private static final List<String> CARRIERS_UNIQUE_FIELDS = new ArrayList<String>(); 560144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 570144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar static { 580144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar CARRIERS_UNIQUE_FIELDS.add(MCC); 590144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar CARRIERS_UNIQUE_FIELDS.add(MNC); 600144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar CARRIERS_UNIQUE_FIELDS.add(KEY_TYPE); 610144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar CARRIERS_UNIQUE_FIELDS.add(MVNO_TYPE); 620144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar CARRIERS_UNIQUE_FIELDS.add(MVNO_MATCH_DATA); 630144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar } 640144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 650144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar public static String getStringForCarrierKeyTableCreation(String tableName) { 660144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar return "CREATE TABLE " + tableName + 670144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar "(_id INTEGER PRIMARY KEY," + 680144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar MCC + " TEXT DEFAULT ''," + 690144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar MNC + " TEXT DEFAULT ''," + 700144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar MVNO_TYPE + " TEXT DEFAULT ''," + 710144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar MVNO_MATCH_DATA + " TEXT DEFAULT ''," + 720144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar KEY_TYPE + " TEXT DEFAULT ''," + 73cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar KEY_IDENTIFIER + " TEXT DEFAULT ''," + 74cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar PUBLIC_KEY + " BLOB DEFAULT ''," + 75cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar EXPIRATION_TIME + " INTEGER DEFAULT 0," + 760144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar LAST_MODIFIED + " INTEGER DEFAULT 0," + 770144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar "UNIQUE (" + TextUtils.join(", ", CARRIERS_UNIQUE_FIELDS) + "));"; 780144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar } 790144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 800144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar @Override 810144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar public void onCreate(SQLiteDatabase db) { 820144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar db.execSQL(getStringForCarrierKeyTableCreation(CARRIER_KEY_TABLE)); 830144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar } 840144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar 85cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public void createCarrierTable(SQLiteDatabase db) { 86cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar db.execSQL(getStringForCarrierKeyTableCreation(CARRIER_KEY_TABLE)); 87cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar } 88cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar 89cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar public void dropCarrierTable(SQLiteDatabase db) { 90cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar db.execSQL("DROP TABLE IF EXISTS " + CARRIER_KEY_TABLE + ";"); 91cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar } 92cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar 930144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar @Override 940144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 95cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar Log.d(TAG, "dbh.onUpgrade:+ db=" + db + " oldV=" + oldVersion + " newV=" + newVersion); 96cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar if (oldVersion < 2) { 97cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar dropCarrierTable(db); 98cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar createCarrierTable(db); 99cc28f5747906c51908a5ae59ca6a79abd1019834pkanwar } 1000144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar } 1010144c1c734a73b5f2cf4b8b9675c0cd047f3b15bpkanwar} 102