Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9fde197 authored by Zhu Youhua's avatar Zhu Youhua Committed by Gerrit - the friendly Code Review server
Browse files

Dialer: add upgrade for smart search table.

Add upgrade for smart search table in dialer db.

Change-Id: I24a938626e86a3fade82ca0c92e557345b095ea9
CRs-Fixed: 988088
parent 0fbf7de5
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.dialer.database;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
@@ -50,6 +51,7 @@ import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;

import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
@@ -84,6 +86,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
     * </pre>
     */
    public static final int DATABASE_VERSION = 9;
    public static final int DATABASE_SHAREPREF_VERSION = 1;
    public static final String DATABASE_SHAREPREF_KEY = "database_sharepref_key";
    public static final String DATABASE_NAME = "dialer.db";

    /**
@@ -459,6 +463,11 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
        setupTables(db);
    }

    @Override
    public void onOpen(SQLiteDatabase db) {
        upgradeSmartSearchDatabase(db);
    }

    private void setupTables(SQLiteDatabase db) {
        dropTables(db);
        db.execSQL("CREATE TABLE " + Tables.SMARTDIAL_TABLE + " ("
@@ -514,6 +523,49 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
        }
    }

    private boolean isNeedUpgradeForSmartSearch() {
        String FILENAME = "upgradeSmartSearchTable";

        Log.d(TAG, "Shared Preference Created with name:  " + FILENAME);
        SharedPreferences pref = mContext.getSharedPreferences(FILENAME,
                mContext.MODE_PRIVATE);
        if (pref != null) {
            int mSharePrefVersion = pref.getInt(DATABASE_SHAREPREF_KEY,0);
            if(mSharePrefVersion < DATABASE_SHAREPREF_VERSION) {
                Editor editor;
                editor = pref.edit();
                editor.putInt(DATABASE_SHAREPREF_KEY, DATABASE_SHAREPREF_VERSION);
                editor.commit();
                return true;
            }
            return false;
        } else {
            Log.d(TAG, "fail to get SharedPreferences !");
            return false;
        }
    }

    private void upgradeSmartSearchDatabase(SQLiteDatabase db) {
        if (isNeedUpgradeForSmartSearch()) {
            db.beginTransaction();
            try {
                upgradeDatabaseSmartSearch(db);
                db.setTransactionSuccessful();
            } catch (Throwable ex) {
                Log.e(TAG, ex.getMessage(), ex);
            } finally {
                db.endTransaction();
            }
        }
    }

    private void upgradeDatabaseSmartSearch(SQLiteDatabase db) {
        db.execSQL("ALTER TABLE " +  Tables.SMARTDIAL_TABLE + " ADD COLUMN " +
                SmartDialDbColumns.ACCOUNT_TYPE + " TEXT;");
        db.execSQL("ALTER TABLE " +  Tables.SMARTDIAL_TABLE + " ADD COLUMN " +
                SmartDialDbColumns.ACCOUNT_NAME + " TEXT;");
    }

    public void dropTables(SQLiteDatabase db) {
        db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE);
        db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE);