/* * Copyright (C) 2006 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 android.provider; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; /** * The SubscribedFeeds provider stores all information about subscribed feeds. * * @hide */ public class SubscribedFeeds { private SubscribedFeeds() {} /** * Columns from the Feed table that other tables join into themselves. */ public interface FeedColumns { /** * The feed url. * <P>Type: TEXT</P> */ public static final String FEED = "feed"; /** * The authority that cares about the feed. * <P>Type: TEXT</P> */ public static final String AUTHORITY = "authority"; /** * The gaia service this feed is for (used for authentication). * <P>Type: TEXT</P> */ public static final String SERVICE = "service"; } /** * Provides constants to access the Feeds table and some utility methods * to ease using the Feeds content provider. */ public static final class Feeds implements BaseColumns, SyncConstValue, FeedColumns { private Feeds() {} public static Cursor query(ContentResolver cr, String[] projection) { return cr.query(CONTENT_URI, projection, null, null, DEFAULT_SORT_ORDER); } public static Cursor query(ContentResolver cr, String[] projection, String where, String[] whereArgs, String orderBy) { return cr.query(CONTENT_URI, projection, where, whereArgs, (orderBy == null) ? DEFAULT_SORT_ORDER : orderBy); } /** * The content:// style URL for this table */ public static final Uri CONTENT_URI = Uri.parse("content://subscribedfeeds/feeds"); /** * The content:// style URL for this table */ public static final Uri DELETED_CONTENT_URI = Uri.parse("content://subscribedfeeds/deleted_feeds"); /** * The MIME type of {@link #CONTENT_URI} providing a directory of * subscribed feeds. */ public static final String CONTENT_TYPE = "vnd.android.cursor.dir/subscribedfeeds"; /** * The MIME type of a {@link #CONTENT_URI} subdirectory of a single * subscribed feed. */ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/subscribedfeed"; /** * The default sort order for this table */ public static final String DEFAULT_SORT_ORDER = "_SYNC_ACCOUNT ASC"; } /** * A convenience method to add a feed to the SubscribedFeeds * content provider. The user specifies the values of the FEED, * _SYNC_ACCOUNT, AUTHORITY. SERVICE, and ROUTING_INFO. * @param resolver used to access the underlying content provider * @param feed corresponds to the FEED column * @param account corresponds to the _SYNC_ACCOUNT column * @param authority corresponds to the AUTHORITY column * @param service corresponds to the SERVICE column * @return the Uri of the feed that was added */ public static Uri addFeed(ContentResolver resolver, String feed, String account, String authority, String service) { ContentValues values = new ContentValues(); values.put(SubscribedFeeds.Feeds.FEED, feed); values.put(SubscribedFeeds.Feeds._SYNC_ACCOUNT, account); values.put(SubscribedFeeds.Feeds.AUTHORITY, authority); values.put(SubscribedFeeds.Feeds.SERVICE, service); return resolver.insert(SubscribedFeeds.Feeds.CONTENT_URI, values); } public static int deleteFeed(ContentResolver resolver, String feed, String account, String authority) { StringBuilder where = new StringBuilder(); where.append(SubscribedFeeds.Feeds._SYNC_ACCOUNT + "=?"); where.append(" AND " + SubscribedFeeds.Feeds.FEED + "=?"); where.append(" AND " + SubscribedFeeds.Feeds.AUTHORITY + "=?"); return resolver.delete(SubscribedFeeds.Feeds.CONTENT_URI, where.toString(), new String[] {account, feed, authority}); } public static int deleteFeeds(ContentResolver resolver, String account, String authority) { StringBuilder where = new StringBuilder(); where.append(SubscribedFeeds.Feeds._SYNC_ACCOUNT + "=?"); where.append(" AND " + SubscribedFeeds.Feeds.AUTHORITY + "=?"); return resolver.delete(SubscribedFeeds.Feeds.CONTENT_URI, where.toString(), new String[] {account, authority}); } public static String gtalkServiceRoutingInfoFromAccountAndResource( String account, String res) { return Uri.parse("gtalk://" + account + "/" + res).toString(); } /** * Columns from the Accounts table. */ public interface AccountColumns { /** * The account. * <P>Type: TEXT</P> */ public static final String _SYNC_ACCOUNT = SyncConstValue._SYNC_ACCOUNT; } /** * Provides constants to access the Accounts table and some utility methods * to ease using it. */ public static final class Accounts implements BaseColumns, AccountColumns { private Accounts() {} public static Cursor query(ContentResolver cr, String[] projection) { return cr.query(CONTENT_URI, projection, null, null, DEFAULT_SORT_ORDER); } public static Cursor query(ContentResolver cr, String[] projection, String where, String orderBy) { return cr.query(CONTENT_URI, projection, where, null, (orderBy == null) ? DEFAULT_SORT_ORDER : orderBy); } /** * The content:// style URL for this table */ public static final Uri CONTENT_URI = Uri.parse("content://subscribedfeeds/accounts"); /** * The MIME type of {@link #CONTENT_URI} providing a directory of * accounts that have subscribed feeds. */ public static final String CONTENT_TYPE = "vnd.android.cursor.dir/subscribedfeedaccounts"; /** * The MIME type of a {@link #CONTENT_URI} subdirectory of a single * account in the subscribed feeds. */ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/subscribedfeedaccount"; /** * The default sort order for this table */ public static final String DEFAULT_SORT_ORDER = "_SYNC_ACCOUNT ASC"; } }