1e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov/* 2e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 3e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * 4e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * you may not use this file except in compliance with the License. 6e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * You may obtain a copy of the License at 7e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * 8e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 9e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * 10e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 11e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 12e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * See the License for the specific language governing permissions and 14e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov * limitations under the License 15e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov */ 1618ffaa2561cc7dd2e3ef81737e6537931c0a9a11Dmitri Plotnikovpackage com.android.contacts; 17e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 18e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikovimport android.content.Context; 19e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikovimport android.content.CursorLoader; 20be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuanimport android.net.Uri; 21e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikovimport android.provider.ContactsContract.Groups; 22e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 23e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov/** 24be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * Group meta-data loader. Loads all groups or just a single group from the 25be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * database (if given a {@link Uri}). 26e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov */ 27e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikovpublic final class GroupMetaDataLoader extends CursorLoader { 28e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 29e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov private final static String[] COLUMNS = new String[] { 30e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.ACCOUNT_NAME, 31e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.ACCOUNT_TYPE, 322b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro Groups.DATA_SET, 33e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups._ID, 34e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.TITLE, 35e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.AUTO_ADD, 36e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.FAVORITES, 37c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan Groups.GROUP_IS_READ_ONLY, 38267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson Groups.DELETED, 39e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov }; 40e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 41e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov public final static int ACCOUNT_NAME = 0; 42e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov public final static int ACCOUNT_TYPE = 1; 432b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int DATA_SET = 2; 442b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int GROUP_ID = 3; 452b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int TITLE = 4; 462b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int AUTO_ADD = 5; 472b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int FAVORITES = 6; 482b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int IS_READ_ONLY = 7; 492b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int DELETED = 8; 50e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 51be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan public GroupMetaDataLoader(Context context, Uri groupUri) { 52be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan super(context, ensureIsGroupUri(groupUri), COLUMNS, Groups.ACCOUNT_TYPE + " NOT NULL AND " 53234e78453e7b4a3179500fa68c105bee4ad19757Dmitri Plotnikov + Groups.ACCOUNT_NAME + " NOT NULL", null, null); 54e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov } 55be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan 56be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan /** 57be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * Ensures that this is a valid group URI. If invalid, then an exception is 58be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * thrown. Otherwise, the original URI is returned. 59be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan */ 60be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan private static Uri ensureIsGroupUri(final Uri groupUri) { 61be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan // TODO: Fix ContactsProvider2 getType method to resolve the group Uris 62be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan if (groupUri == null) { 63be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan throw new IllegalArgumentException("Uri must not be null"); 64be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 65be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan if (!groupUri.toString().startsWith(Groups.CONTENT_URI.toString())) { 66be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan throw new IllegalArgumentException("Invalid group Uri: " + groupUri); 67be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 68be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan return groupUri; 69be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 70e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov} 71