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";
3136a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch    static final int DATABASE_VERSION = 2;
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";
4136a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String COMPANY_NAME = "companyname";
4236a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String ADDRESS_LINE_1 = "addressline1";
4336a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String ADDRESS_LINE_2 = "addressline2";
4436a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String CITY = "city";
4536a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String STATE = "state";
4636a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String ZIP_CODE = "zipcode";
4736a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String COUNTRY = "country";
4836a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        static final String PHONE_NUMBER = "phone";
49af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
50af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
51af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private static class AutoFillProfileDatabaseHelper extends SQLiteOpenHelper {
52af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        AutoFillProfileDatabaseHelper(Context context) {
53af55452d7f37c20201663b80ca77b64457323361Ben Murdoch             super(context, DATABASE_NAME, null, DATABASE_VERSION);
54af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
55af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
56af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        @Override
57af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        public void onCreate(SQLiteDatabase db) {
58af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            db.execSQL("CREATE TABLE " + PROFILES_TABLE_NAME + " ("
59af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + Profiles._ID + " INTEGER PRIMARY KEY,"
60af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + Profiles.FULL_NAME + " TEXT,"
6136a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.EMAIL_ADDRESS + " TEXT,"
6236a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.COMPANY_NAME + " TEXT,"
6336a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.ADDRESS_LINE_1 + " TEXT,"
6436a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.ADDRESS_LINE_2 + " TEXT,"
6536a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.CITY + " TEXT,"
6636a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.STATE + " TEXT,"
6736a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.ZIP_CODE + " TEXT,"
6836a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.COUNTRY + " TEXT,"
6936a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                    + Profiles.PHONE_NUMBER + " TEXT"
70af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + " );");
71af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
72af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
73af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        @Override
74af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
75af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            Log.w(LOGTAG, "Upgrading database from version " + oldVersion + " to "
76af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                    + newVersion + ", which will destroy all old data");
77af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            db.execSQL("DROP TABLE IF EXISTS " + PROFILES_TABLE_NAME);
78af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            onCreate(db);
79af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
80af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
81af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
82af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private AutoFillProfileDatabase(Context context) {
83af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        mOpenHelper = new AutoFillProfileDatabaseHelper(context);
84af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
85af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
86af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public static AutoFillProfileDatabase getInstance(Context context) {
87af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        if (sInstance == null) {
88af55452d7f37c20201663b80ca77b64457323361Ben Murdoch            sInstance = new AutoFillProfileDatabase(context);
89af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        }
90af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        return sInstance;
91af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
92af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
93af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    private SQLiteDatabase getDatabase(boolean writable) {
94af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        return writable ? mOpenHelper.getWritableDatabase() : mOpenHelper.getReadableDatabase();
95af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
96af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
97af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public Cursor getProfile(int id) {
9836a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        final String[] cols = {
9936a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.FULL_NAME,
10036a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.EMAIL_ADDRESS,
10136a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.COMPANY_NAME,
10236a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.ADDRESS_LINE_1,
10336a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.ADDRESS_LINE_2,
10436a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.CITY,
10536a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.STATE,
10636a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.ZIP_CODE,
10736a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.COUNTRY,
10836a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch                Profiles.PHONE_NUMBER
10936a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        };
11036a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch
11136a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        final String[] selectArgs = { Integer.toString(id) };
11236a23dd3e46167507070bd9f0e6237570d721b2fBen Murdoch        return getDatabase(false).query(PROFILES_TABLE_NAME, cols, Profiles._ID + "=?", selectArgs,
113af55452d7f37c20201663b80ca77b64457323361Ben Murdoch                null, null, null, "1");
114af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
115af55452d7f37c20201663b80ca77b64457323361Ben Murdoch
11623da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch    public void dropProfile(int id) {
11723da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch        final String sql = "DELETE FROM " + PROFILES_TABLE_NAME +" WHERE " + Profiles._ID + " = ?;";
11823da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch        final Object[] params = { id };
11923da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch        getDatabase(true).execSQL(sql, params);
12023da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch    }
12123da30e29c15ac47aab3fa7ec7091d22dbf86177Ben Murdoch
122af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    public void close() {
123af55452d7f37c20201663b80ca77b64457323361Ben Murdoch        mOpenHelper.close();
124af55452d7f37c20201663b80ca77b64457323361Ben Murdoch    }
125af55452d7f37c20201663b80ca77b64457323361Ben Murdoch}
126