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