15d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro/* 25d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * Copyright (C) 2011 The Android Open Source Project 35d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * 45d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * Licensed under the Apache License, Version 2.0 (the "License"); 55d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * you may not use this file except in compliance with the License. 65d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * You may obtain a copy of the License at 75d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * 85d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * http://www.apache.org/licenses/LICENSE-2.0 95d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * 105d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * Unless required by applicable law or agreed to in writing, software 115d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * distributed under the License is distributed on an "AS IS" BASIS, 125d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * See the License for the specific language governing permissions and 145d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * limitations under the License 155d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro */ 165d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 175d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoropackage com.android.providers.contacts; 185d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 195d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoroimport android.content.ContentValues; 205d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoroimport android.content.Context; 215d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoroimport android.database.sqlite.SQLiteDatabase; 225d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoroimport android.provider.ContactsContract.Profile; 235d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 2438210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport com.android.providers.contacts.util.NeededForTesting; 2538210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki 265d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro/** 275d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro * A separate version of the contacts database helper for storing the user's profile data. 285d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro */ 295d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoropublic class ProfileDatabaseHelper extends ContactsDatabaseHelper { 305d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private static final String TAG = "ProfileDatabaseHelper"; 315d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 325d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private static final String DATABASE_NAME = "profile.db"; 335d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 345d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro // SQLite-standard table and columns for tracking autoincrement sequences. 355d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private static final String SEQUENCE_TABLE = "sqlite_sequence"; 365d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private static final String SEQUENCE_NAME = "name"; 375d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private static final String SEQUENCE_SEQ = "seq"; 385d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 395d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private static ProfileDatabaseHelper sSingleton = null; 405d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 415d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro /** 429b626252d91e451a822f48cd127aef5d609a6257Makoto Onuki * Returns a new instance for unit tests. 435d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro */ 449b626252d91e451a822f48cd127aef5d609a6257Makoto Onuki @NeededForTesting 459b626252d91e451a822f48cd127aef5d609a6257Makoto Onuki public static ProfileDatabaseHelper getNewInstanceForTest(Context context) { 469b626252d91e451a822f48cd127aef5d609a6257Makoto Onuki return new ProfileDatabaseHelper(context, null, false); 475d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 485d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 495d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro private ProfileDatabaseHelper( 505d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro Context context, String databaseName, boolean optimizationEnabled) { 515d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro super(context, databaseName, optimizationEnabled); 525d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 535d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 545d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro public static synchronized ProfileDatabaseHelper getInstance(Context context) { 555d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro if (sSingleton == null) { 565d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro sSingleton = new ProfileDatabaseHelper(context, DATABASE_NAME, true); 575d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 585d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro return sSingleton; 595d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 605d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 615d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro @Override 625d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro protected int dbForProfile() { 635d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro return 1; 645d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 655d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro 665d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro @Override 675d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro protected void initializeAutoIncrementSequences(SQLiteDatabase db) { 685d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro for (String table : Tables.SEQUENCE_TABLES) { 695d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro ContentValues values = new ContentValues(); 705d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro values.put(SEQUENCE_NAME, table); 715d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro values.put(SEQUENCE_SEQ, Profile.MIN_ID); 725d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro db.insert(SEQUENCE_TABLE, null, values); 735d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 745d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro } 755d0a768b56ed4bd0dfef81b8389247ba74766659Dave Santoro} 76