1929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee/*
2929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * Copyright (C) 2011 The Android Open Source Project
3929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee
4929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee *
5929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * Licensed under the Apache License, Version 2.0 (the "License");
6929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * you may not use this file except in compliance with the License.
7929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * You may obtain a copy of the License at
8929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee *
9929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee *      http://www.apache.org/licenses/LICENSE-2.0
10929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee *
11929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * Unless required by applicable law or agreed to in writing, software
12929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * distributed under the License is distributed on an "AS IS" BASIS,
13929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * See the License for the specific language governing permissions and
15929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * limitations under the License
16929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee */
17929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee
18929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjeepackage com.android.providers.contacts;
19929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee
20929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjeeimport android.content.ContentValues;
21929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjeeimport android.database.DatabaseUtils;
22929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjeeimport android.database.sqlite.SQLiteDatabase;
23929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee
24929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee/**
25929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * An interface which wraps key database modify operations (insert, update, delete) to perform
26929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * additional tasks before or after the database modification operation. A typical use case is to
27929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee * generate notification when a database is modified.
28929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee */
29929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjeepublic interface DatabaseModifier {
30929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    /**
31929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * Use this method to insert a value which you would otherwise do using the
32929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * {@link SQLiteDatabase#insert(String, String, ContentValues)} method.
33929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     */
34929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    public abstract long insert(String table, String nullColumnHack, ContentValues values);
35929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    /**
36929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * Use this method to insert a value which you would otherwise do using the
37929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * {@link DatabaseUtils.InsertHelper#insert(ContentValues)} method.
38929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     */
39929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    public abstract long insert(ContentValues values);
40929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    /**
41929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * Use this method to update a table which you would otherwise do using the
42929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * {@link SQLiteDatabase#update(String, ContentValues, String, String[])} method.
43929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     */
44929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    public abstract int update(String table, ContentValues values,
45929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee            String whereClause, String[] whereArgs);
46929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    /**
47929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * Use this method to delete entries from a table which you would otherwise do using the
48929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     * {@link SQLiteDatabase#delete(String, String, String[])} method.
49929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee     */
50929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee    public abstract int delete(String table, String whereClause, String[] whereArgs);
51929a04e2830e30718930d96335dfb0a729b6ab91Debashish Chatterjee}
52