SavedQueryRemover.java revision fe44549626d6a3c4ac3a41214771bf645bcada57
1fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang/* 2fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * Copyright (C) 2017 The Android Open Source Project 3fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * 4fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * you may not use this file except in compliance with the License. 6fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * You may obtain a copy of the License at 7fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * 8fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 9fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * 10fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * Unless required by applicable law or agreed to in writing, software 11fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * See the License for the specific language governing permissions and 14fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang * limitations under the License. 15fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang */ 16fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 17fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangpackage com.android.settings.search2; 18fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 19fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.content.Context; 20fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.database.sqlite.SQLiteDatabase; 21fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.database.sqlite.SQLiteException; 22fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.util.Log; 23fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 24fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport com.android.settings.search.IndexDatabaseHelper; 25fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport com.android.settings.utils.AsyncLoader; 26fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 27fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES; 28fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 29fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangpublic class SavedQueryRemover extends AsyncLoader<Void> { 30fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 31fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang private static final String LOG_TAG = "SavedQueryRemover"; 32fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 33fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang private final String mQuery; 34fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 35fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang public SavedQueryRemover(Context context, String query) { 36fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang super(context); 37fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang mQuery = query; 38fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 39fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 40fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang @Override 41fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang public Void loadInBackground() { 42fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang final SQLiteDatabase database = getWritableDatabase(); 43fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang try { 44fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang // First, delete all saved queries that are the same 45fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang database.delete(TABLE_SAVED_QUERIES, 46fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang IndexDatabaseHelper.SavedQueriesColumns.QUERY + " = ?", 47fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang new String[]{mQuery}); 48fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } catch (Exception e) { 49fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang Log.d(LOG_TAG, "Cannot update saved Search queries", e); 50fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 51fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang return null; 52fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 53fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 54fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang @Override 55fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang protected void onDiscardResult(Void result) { 56fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 57fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 58fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 59fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang private SQLiteDatabase getWritableDatabase() { 60fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang try { 61fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang return IndexDatabaseHelper.getInstance(getContext()).getWritableDatabase(); 62fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } catch (SQLiteException e) { 63fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang Log.e(LOG_TAG, "Cannot open writable database", e); 64fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang return null; 65fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 66fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 67fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang} 68