1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License
15  */
16 
17 package android.provider.cts.contacts;
18 
19 import static android.provider.ContactsContract.CommonDataKinds;
20 
21 import android.content.ContentResolver;
22 import android.content.ContentUris;
23 import android.content.ContentValues;
24 import android.database.Cursor;
25 import android.net.Uri;
26 import android.provider.ContactsContract;
27 
28 /**
29  * Convenience methods for operating on the Data table.
30  */
31 public class DataUtil {
32 
33     private static final Uri URI = ContactsContract.Data.CONTENT_URI;
34 
queryById(ContentResolver resolver, long dataId, String[] projection, String selection, String[] selectionArgs)35     public static String[] queryById(ContentResolver resolver, long dataId, String[] projection,
36             String selection, String[] selectionArgs) {
37         Uri uri = ContentUris.withAppendedId(URI, dataId);
38         Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, null);
39         return CommonDatabaseUtils.singleRecordToArray(cursor);
40     }
41 
queryById(ContentResolver resolver, long dataId, String[] projection)42     public static String[] queryById(ContentResolver resolver, long dataId, String[] projection) {
43         return queryById(resolver, dataId, projection, null, null);
44     }
45 
insertName(ContentResolver resolver, long rawContactId, String name)46     public static void insertName(ContentResolver resolver, long rawContactId, String name) {
47         ContentValues values = new ContentValues();
48         values.put(ContactsContract.Data.MIMETYPE,
49                 CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
50         values.put(CommonDataKinds.StructuredName.DISPLAY_NAME, name);
51         insertData(resolver, rawContactId, values);
52     }
53 
insertPhoneNumber(ContentResolver resolver, long rawContactId, String number)54     public static long insertPhoneNumber(ContentResolver resolver, long rawContactId,
55             String number) {
56         ContentValues values = new ContentValues();
57         values.put(ContactsContract.Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
58         values.put(CommonDataKinds.Phone.NUMBER, number);
59         return DataUtil.insertData(resolver, rawContactId, values);
60     }
61 
insertEmail(ContentResolver resolver, long rawContactId, String email)62     public static long insertEmail(ContentResolver resolver, long rawContactId, String email) {
63         ContentValues values = new ContentValues();
64         values.put(ContactsContract.Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE);
65         values.put(CommonDataKinds.Email.ADDRESS, email);
66         return DataUtil.insertData(resolver, rawContactId, values);
67     }
68 
insertAutoGeneratedName(ContentResolver resolver, long rawContactId)69     public static void insertAutoGeneratedName(ContentResolver resolver, long rawContactId) {
70         insertName(resolver, rawContactId, "test raw contact " + rawContactId);
71     }
72 
insertData(ContentResolver resolver, long rawContactId, ContentValues values)73     public static long insertData(ContentResolver resolver, long rawContactId,
74             ContentValues values) {
75         // copy
76         ContentValues newValues = new ContentValues(values);
77         newValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
78 
79         Uri uri = resolver.insert(URI, newValues);
80         return ContentUris.parseId(uri);
81     }
82 
delete(ContentResolver resolver, long dataId)83     public static void delete(ContentResolver resolver, long dataId) {
84         Uri uri = ContentUris.withAppendedId(URI, dataId);
85         resolver.delete(uri, null, null);
86     }
87 
update(ContentResolver resolver, long dataId, ContentValues values)88     public static void update(ContentResolver resolver, long dataId, ContentValues values) {
89         Uri uri = ContentUris.withAppendedId(URI, dataId);
90         resolver.update(uri, values, null, null);
91     }
92 }
93