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. 152078bc2358031ef3a191900d9036daf4251911c1Matthew Fritze * 16fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang */ 17fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 182078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzepackage com.android.settings.search; 19fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 204e7bd693b20b471f1d170909e9609fe5c97a72f0Fan Zhangimport static com.android.settings.search.IndexDatabaseHelper.Tables.TABLE_SAVED_QUERIES; 214e7bd693b20b471f1d170909e9609fe5c97a72f0Fan Zhang 22fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.content.Context; 23fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.database.sqlite.SQLiteDatabase; 24fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.database.sqlite.SQLiteException; 25fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport android.util.Log; 26fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 27fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangimport com.android.settings.utils.AsyncLoader; 28fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 29fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhangpublic class SavedQueryRemover extends AsyncLoader<Void> { 30fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 31fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang private static final String LOG_TAG = "SavedQueryRemover"; 32fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 334e7bd693b20b471f1d170909e9609fe5c97a72f0Fan Zhang public SavedQueryRemover(Context context) { 34fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang super(context); 35fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 36fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 37fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang @Override 38fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang public Void loadInBackground() { 39fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang final SQLiteDatabase database = getWritableDatabase(); 40fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang try { 41fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang // First, delete all saved queries that are the same 42fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang database.delete(TABLE_SAVED_QUERIES, 434e7bd693b20b471f1d170909e9609fe5c97a72f0Fan Zhang null /* where */, 444e7bd693b20b471f1d170909e9609fe5c97a72f0Fan Zhang null /* whereArgs */); 45fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } catch (Exception e) { 46fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang Log.d(LOG_TAG, "Cannot update saved Search queries", e); 47fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 48fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang return null; 49fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 50fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 51fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang @Override 52fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang protected void onDiscardResult(Void result) { 53fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 54fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 55fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang 56fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang private SQLiteDatabase getWritableDatabase() { 57fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang try { 58fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang return IndexDatabaseHelper.getInstance(getContext()).getWritableDatabase(); 59fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } catch (SQLiteException e) { 60fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang Log.e(LOG_TAG, "Cannot open writable database", e); 61fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang return null; 62fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 63fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang } 64fe44549626d6a3c4ac3a41214771bf645bcada57Fan Zhang} 65