blob: 4d430d5fd91a0e36e944d242155852d17c58b947 [file] [log] [blame]
/*
* 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";
}
}