AutoFillProfileDatabase.java revision af55452d7f37c20201663b80ca77b64457323361
1af55452d7f37c20201663b80ca77b64457323361Ben Murdoch/*
2af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * Copyright (C) 2010 The Android Open Source Project
3af55452d7f37c20201663b80ca77b64457323361Ben Murdoch *
4af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * Licensed under the Apache License, Version 2.0 (the "License");
5af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * you may not use this file except in compliance with the License.
6af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * You may obtain a copy of the License at
7af55452d7f37c20201663b80ca77b64457323361Ben Murdoch *
8af55452d7f37c20201663b80ca77b64457323361Ben Murdoch *      http://www.apache.org/licenses/LICENSE-2.0
9af55452d7f37c20201663b80ca77b64457323361Ben Murdoch *
10af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * Unless required by applicable law or agreed to in writing, software
11af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * distributed under the License is distributed on an "AS IS" BASIS,
12af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * See the License for the specific language governing permissions and
14af55452d7f37c20201663b80ca77b64457323361Ben Murdoch * limitations under the License.
15af55452d7f37c20201663b80ca77b64457323361Ben Murdoch */
16af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
17af55452d7f37c20201663b80ca77b64457323361Ben Murdochpackage com.android.browser;
18af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
19af55452d7f37c20201663b80ca77b64457323361Ben Murdochimport android.content.Context;
20af55452d7f37c20201663b80ca77b64457323361Ben Murdochimport android.database.Cursor;
21af55452d7f37c20201663b80ca77b64457323361Ben Murdochimport android.database.sqlite.SQLiteDatabase;
22af55452d7f37c20201663b80ca77b64457323361Ben Murdochimport android.database.sqlite.SQLiteOpenHelper;
23af55452d7f37c20201663b80ca77b64457323361Ben Murdochimport android.provider.BaseColumns;
24af55452d7f37c20201663b80ca77b64457323361Ben Murdochimport android.util.Log;
25af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
26af55452d7f37c20201663b80ca77b64457323361Ben Murdochpublic class AutoFillProfileDatabase {
27af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
28af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    static final String LOGTAG = "AutoFillProfileDatabase";
29af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
30af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    static final String DATABASE_NAME = "autofill.db";
31af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    static final int DATABASE_VERSION = 1;
32af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    static final String PROFILES_TABLE_NAME = "profiles";
33af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private AutoFillProfileDatabaseHelper mOpenHelper;
34af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private static AutoFillProfileDatabase sInstance;
35af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
36af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public static final class Profiles implements BaseColumns {
37af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        private Profiles() { }
38af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
39af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        static final String FULL_NAME = "fullname";
40af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        static final String EMAIL_ADDRESS = "email";
41af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
42af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
43af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private static class AutoFillProfileDatabaseHelper extends SQLiteOpenHelper {
44af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        AutoFillProfileDatabaseHelper(Context context) {
45af55452d7f37c20201663b80ca77b64457323361Ben Murdoch             super(context, DATABASE_NAME, null, DATABASE_VERSION);
46af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
47af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
48af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        @Override
49af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        public void onCreate(SQLiteDatabase db) {
50af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            db.execSQL("CREATE TABLE " + PROFILES_TABLE_NAME + " ("
51af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + Profiles._ID + " INTEGER PRIMARY KEY,"
52af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + Profiles.FULL_NAME + " TEXT,"
53af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + Profiles.EMAIL_ADDRESS + " TEXT"
54af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + " );");
55af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
56af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
57af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        @Override
58af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
59af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            Log.w(LOGTAG, "Upgrading database from version " + oldVersion + " to "
60af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + newVersion + ", which will destroy all old data");
61af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            db.execSQL("DROP TABLE IF EXISTS " + PROFILES_TABLE_NAME);
62af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            onCreate(db);
63af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
64af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
65af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
66af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private AutoFillProfileDatabase(Context context) {
67af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        mOpenHelper = new AutoFillProfileDatabaseHelper(context);
68af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
69af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
70af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public static AutoFillProfileDatabase getInstance(Context context) {
71af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        if (sInstance == null) {
72af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            sInstance = new AutoFillProfileDatabase(context);
73af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
74af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        return sInstance;
75af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
76af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
77af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private SQLiteDatabase getDatabase(boolean writable) {
78af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        return writable ? mOpenHelper.getWritableDatabase() : mOpenHelper.getReadableDatabase();
79af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
80af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
81af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public void addOrUpdateProfile(final int id, final String fullName, final String email) {
82af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        final String SQL = "INSERT OR REPLACE INTO " + PROFILES_TABLE_NAME + " ("
83af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                + Profiles._ID + ","
84af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                + Profiles.FULL_NAME + ","
85af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                + Profiles.EMAIL_ADDRESS
86af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                + ") VALUES (?,?,?);";
87af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        final Object[] PARAMS = {id, fullName, email};
88af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        getDatabase(true).execSQL(SQL, PARAMS);
89af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
90af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
91af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public Cursor getProfile(int id) {
92af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        final String[] COLS = {Profiles.FULL_NAME, Profiles.EMAIL_ADDRESS };
93af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        final String[] SEL_ARGS = { Integer.toString(id) };
94af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        return getDatabase(false).query(PROFILES_TABLE_NAME, COLS, Profiles._ID + "=?", SEL_ARGS,
95af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                null, null, null, "1");
96af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
97af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
98af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public void close() {
99af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        mOpenHelper.close();
100af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
101af55452d7f37c20201663b80ca77b64457323361Ben Murdoch}
102