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