| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License |
| */ |
| |
| package com.android.providers.contacts.database; |
| |
| import android.content.ContentValues; |
| import android.database.sqlite.SQLiteDatabase; |
| import android.provider.ContactsContract; |
| |
| import com.android.providers.contacts.ContactsDatabaseHelper; |
| import com.android.providers.contacts.util.Clock; |
| |
| /** |
| * Methods for operating on the deleted_contacts table. |
| */ |
| public class DeletedContactsTableUtil { |
| |
| /** |
| * Create deleted_contacts tables and indexes. |
| * |
| * @param db The sqlite database instance. |
| */ |
| public static void create(SQLiteDatabase db) { |
| // Deleted contacts log |
| db.execSQL("CREATE TABLE " + ContactsDatabaseHelper.Tables.DELETED_CONTACTS + " (" + |
| ContactsContract.DeletedContacts.CONTACT_ID + " INTEGER PRIMARY KEY," + |
| ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + |
| " INTEGER NOT NULL default 0" |
| + ");"); |
| |
| db.execSQL(MoreDatabaseUtils.buildCreateIndexSql( |
| ContactsDatabaseHelper.Tables.DELETED_CONTACTS, |
| ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP)); |
| } |
| |
| /** |
| * Inserts a deleted contact log record. |
| * |
| * @param db The SQLiteDatabase instance. |
| * @param contactId The contact id to insert. |
| * @return The row id |
| */ |
| public static long insertDeletedContact(SQLiteDatabase db, long contactId) { |
| ContentValues values = new ContentValues(); |
| values.put(ContactsContract.DeletedContacts.CONTACT_ID, contactId); |
| values.put(ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP, |
| Clock.getInstance().currentTimeMillis()); |
| // a.k.a upsert |
| return db.insertWithOnConflict(ContactsDatabaseHelper.Tables.DELETED_CONTACTS, null, values, |
| SQLiteDatabase.CONFLICT_REPLACE); |
| } |
| |
| /** |
| * Deletes old log records. |
| * |
| * @param db The database instance to use. |
| */ |
| public static int deleteOldLogs(SQLiteDatabase db) { |
| |
| long time = Clock.getInstance().currentTimeMillis() - |
| ContactsContract.DeletedContacts.DAYS_KEPT_MILLISECONDS; |
| |
| String[] args = new String[]{time + ""}; |
| |
| return db.delete(ContactsDatabaseHelper.Tables.DELETED_CONTACTS, |
| ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + " < ?", args); |
| } |
| } |