| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.browser; |
| |
| import android.content.Context; |
| import android.database.Cursor; |
| import android.database.sqlite.SQLiteDatabase; |
| import android.database.sqlite.SQLiteOpenHelper; |
| import android.provider.BaseColumns; |
| import android.util.Log; |
| import android.webkit.WebSettingsClassic.AutoFillProfile; |
| |
| public class AutoFillProfileDatabase { |
| |
| static final String LOGTAG = "AutoFillProfileDatabase"; |
| |
| static final String DATABASE_NAME = "autofill.db"; |
| static final int DATABASE_VERSION = 2; |
| static final String PROFILES_TABLE_NAME = "profiles"; |
| private AutoFillProfileDatabaseHelper mOpenHelper; |
| private static AutoFillProfileDatabase sInstance; |
| |
| public static final class Profiles implements BaseColumns { |
| private Profiles() { } |
| |
| static final String FULL_NAME = "fullname"; |
| static final String EMAIL_ADDRESS = "email"; |
| static final String COMPANY_NAME = "companyname"; |
| static final String ADDRESS_LINE_1 = "addressline1"; |
| static final String ADDRESS_LINE_2 = "addressline2"; |
| static final String CITY = "city"; |
| static final String STATE = "state"; |
| static final String ZIP_CODE = "zipcode"; |
| static final String COUNTRY = "country"; |
| static final String PHONE_NUMBER = "phone"; |
| } |
| |
| private static class AutoFillProfileDatabaseHelper extends SQLiteOpenHelper { |
| AutoFillProfileDatabaseHelper(Context context) { |
| super(context, DATABASE_NAME, null, DATABASE_VERSION); |
| } |
| |
| @Override |
| public void onCreate(SQLiteDatabase db) { |
| db.execSQL("CREATE TABLE " + PROFILES_TABLE_NAME + " (" |
| + Profiles._ID + " INTEGER PRIMARY KEY," |
| + Profiles.FULL_NAME + " TEXT," |
| + Profiles.EMAIL_ADDRESS + " TEXT," |
| + Profiles.COMPANY_NAME + " TEXT," |
| + Profiles.ADDRESS_LINE_1 + " TEXT," |
| + Profiles.ADDRESS_LINE_2 + " TEXT," |
| + Profiles.CITY + " TEXT," |
| + Profiles.STATE + " TEXT," |
| + Profiles.ZIP_CODE + " TEXT," |
| + Profiles.COUNTRY + " TEXT," |
| + Profiles.PHONE_NUMBER + " TEXT" |
| + " );"); |
| } |
| |
| @Override |
| public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { |
| Log.w(LOGTAG, "Upgrading database from version " + oldVersion + " to " |
| + newVersion + ", which will destroy all old data"); |
| db.execSQL("DROP TABLE IF EXISTS " + PROFILES_TABLE_NAME); |
| onCreate(db); |
| } |
| } |
| |
| private AutoFillProfileDatabase(Context context) { |
| mOpenHelper = new AutoFillProfileDatabaseHelper(context); |
| } |
| |
| public static AutoFillProfileDatabase getInstance(Context context) { |
| if (sInstance == null) { |
| sInstance = new AutoFillProfileDatabase(context); |
| } |
| return sInstance; |
| } |
| |
| private SQLiteDatabase getDatabase(boolean writable) { |
| return writable ? mOpenHelper.getWritableDatabase() : mOpenHelper.getReadableDatabase(); |
| } |
| |
| public void addOrUpdateProfile(final int id, AutoFillProfile profile) { |
| final String sql = "INSERT OR REPLACE INTO " + PROFILES_TABLE_NAME + " (" |
| + Profiles._ID + "," |
| + Profiles.FULL_NAME + "," |
| + Profiles.EMAIL_ADDRESS + "," |
| + Profiles.COMPANY_NAME + "," |
| + Profiles.ADDRESS_LINE_1 + "," |
| + Profiles.ADDRESS_LINE_2 + "," |
| + Profiles.CITY + "," |
| + Profiles.STATE + "," |
| + Profiles.ZIP_CODE + "," |
| + Profiles.COUNTRY + "," |
| + Profiles.PHONE_NUMBER |
| + ") VALUES (?,?,?,?,?,?,?,?,?,?,?);"; |
| final Object[] params = { id, |
| profile.getFullName(), |
| profile.getEmailAddress(), |
| profile.getCompanyName(), |
| profile.getAddressLine1(), |
| profile.getAddressLine2(), |
| profile.getCity(), |
| profile.getState(), |
| profile.getZipCode(), |
| profile.getCountry(), |
| profile.getPhoneNumber() }; |
| getDatabase(true).execSQL(sql, params); |
| } |
| |
| public Cursor getProfile(int id) { |
| final String[] cols = { |
| Profiles.FULL_NAME, |
| Profiles.EMAIL_ADDRESS, |
| Profiles.COMPANY_NAME, |
| Profiles.ADDRESS_LINE_1, |
| Profiles.ADDRESS_LINE_2, |
| Profiles.CITY, |
| Profiles.STATE, |
| Profiles.ZIP_CODE, |
| Profiles.COUNTRY, |
| Profiles.PHONE_NUMBER |
| }; |
| |
| final String[] selectArgs = { Integer.toString(id) }; |
| return getDatabase(false).query(PROFILES_TABLE_NAME, cols, Profiles._ID + "=?", selectArgs, |
| null, null, null, "1"); |
| } |
| |
| public void dropProfile(int id) { |
| final String sql = "DELETE FROM " + PROFILES_TABLE_NAME +" WHERE " + Profiles._ID + " = ?;"; |
| final Object[] params = { id }; |
| getDatabase(true).execSQL(sql, params); |
| } |
| |
| public void close() { |
| mOpenHelper.close(); |
| } |
| } |