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 239afaddec062bc1c9f3d7bb30992d70198fbe0840Wenyi Wangimport com.android.contacts.group.GroupUtil; 249afaddec062bc1c9f3d7bb30992d70198fbe0840Wenyi Wang 25e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov/** 26be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * Group meta-data loader. Loads all groups or just a single group from the 27be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * database (if given a {@link Uri}). 28e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov */ 29e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikovpublic final class GroupMetaDataLoader extends CursorLoader { 30e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 31428824eaca7ed60c14add0a1d45edfe4535059bbWalter Jang public final static String[] COLUMNS = new String[] { 32e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.ACCOUNT_NAME, 33e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.ACCOUNT_TYPE, 342b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro Groups.DATA_SET, 35e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups._ID, 36e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.TITLE, 37e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.AUTO_ADD, 38e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov Groups.FAVORITES, 39c6b8afe730255537978f2c938cca6986cae63c34Katherine Kuan Groups.GROUP_IS_READ_ONLY, 40267073407439d7df012a2e0df577e39a1f89c4a8Isaac Katzenelson Groups.DELETED, 41e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov }; 42e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 43e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov public final static int ACCOUNT_NAME = 0; 44e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov public final static int ACCOUNT_TYPE = 1; 452b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int DATA_SET = 2; 462b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int GROUP_ID = 3; 472b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int TITLE = 4; 482b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int AUTO_ADD = 5; 492b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int FAVORITES = 6; 502b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int IS_READ_ONLY = 7; 512b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public final static int DELETED = 8; 52e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov 53be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan public GroupMetaDataLoader(Context context, Uri groupUri) { 545c1bff2efa542ea112c3f2a1d1ed1e271c7691a7Gary Mai super(context, ensureIsGroupUri(groupUri), COLUMNS, GroupUtil.DEFAULT_SELECTION, null, 555c1bff2efa542ea112c3f2a1d1ed1e271c7691a7Gary Mai GroupUtil.getGroupsSortOrder()); 565c1bff2efa542ea112c3f2a1d1ed1e271c7691a7Gary Mai } 575c1bff2efa542ea112c3f2a1d1ed1e271c7691a7Gary Mai 585c1bff2efa542ea112c3f2a1d1ed1e271c7691a7Gary Mai public GroupMetaDataLoader(Context context, Uri groupUri, String selection) { 595c1bff2efa542ea112c3f2a1d1ed1e271c7691a7Gary Mai super(context, ensureIsGroupUri(groupUri), COLUMNS, selection, null, 60dd2d8e27d8548893122c469bd1b68d5117fc5318Walter Jang GroupUtil.getGroupsSortOrder()); 61e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov } 62be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan 63be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan /** 64be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * Ensures that this is a valid group URI. If invalid, then an exception is 65be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan * thrown. Otherwise, the original URI is returned. 66be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan */ 67be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan private static Uri ensureIsGroupUri(final Uri groupUri) { 68be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan // TODO: Fix ContactsProvider2 getType method to resolve the group Uris 69be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan if (groupUri == null) { 70be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan throw new IllegalArgumentException("Uri must not be null"); 71be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 727967545e62b473503473b2c9e127cef405f67201Wenyi Wang if (!GroupUtil.isGroupUri(groupUri)) { 73be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan throw new IllegalArgumentException("Invalid group Uri: " + groupUri); 74be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 75be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan return groupUri; 76be18de05d6f6a107c552e369bce58f51c946fde7Katherine Kuan } 77e843f916942fff482ec162eee2a23914e32182cfDmitri Plotnikov} 78