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