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