summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/provider/CalendarContract.java150
1 files changed, 28 insertions, 122 deletions
diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java
index 4368e31e8736..3971045f3451 100644
--- a/core/java/android/provider/CalendarContract.java
+++ b/core/java/android/provider/CalendarContract.java
@@ -17,6 +17,8 @@
package android.provider;
+import com.android.internal.util.ArrayUtils;
+
import android.accounts.Account;
import android.app.AlarmManager;
import android.app.PendingIntent;
@@ -38,6 +40,8 @@ import android.text.format.DateUtils;
import android.text.format.Time;
import android.util.Log;
+import java.util.Arrays;
+
/**
* <p>
* The contract between the calendar provider and applications. Contains
@@ -94,19 +98,19 @@ public final class CalendarContract {
* Broadcast Action: This is the intent that gets fired when an alarm
* notification needs to be posted for a reminder.
*/
- public static final String EVENT_REMINDER_ACTION = "android.intent.action.EVENT_REMINDER";
+ public static final String ACTION_EVENT_REMINDER = "android.intent.action.EVENT_REMINDER";
/**
* Intent Extras key: The start time of an event or an instance of a
* recurring event. (milliseconds since epoch)
*/
- public static final String EVENT_BEGIN_TIME = "beginTime";
+ public static final String EXTRA_EVENT_BEGIN_TIME = "beginTime";
/**
* Intent Extras key: The end time of an event or an instance of a recurring
* event. (milliseconds since epoch)
*/
- public static final String EVENT_END_TIME = "endTime";
+ public static final String EXTRA_EVENT_END_TIME = "endTime";
/**
* This authority is used for writing to or querying from the calendar
@@ -279,7 +283,7 @@ public final class CalendarContract {
/**
* Columns specific to the Calendars Uri that other Uris can query.
*/
- protected interface CalendarsColumns {
+ protected interface CalendarColumns {
/**
* The color of the calendar
* <P>Type: INTEGER (color value)</P>
@@ -385,7 +389,7 @@ public final class CalendarContract {
* Class that represents a Calendar Entity. There is one entry per calendar.
* This is a helper class to make batch operations easier.
*/
- public static class CalendarsEntity implements BaseColumns, SyncColumns, CalendarsColumns {
+ public static class CalendarEntity implements BaseColumns, SyncColumns, CalendarColumns {
/**
* The default Uri used when creating a new calendar EntityIterator.
@@ -567,7 +571,7 @@ public final class CalendarContract {
* <li>{@link #CAL_SYNC10}</li>
* </ul>
*/
- public static class Calendars implements BaseColumns, SyncColumns, CalendarsColumns {
+ public static class Calendars implements BaseColumns, SyncColumns, CalendarColumns {
private static final String WHERE_DELETE_FOR_ACCOUNT = Calendars.ACCOUNT_NAME + "=?"
+ " AND "
+ Calendars.ACCOUNT_TYPE + "=?";
@@ -592,37 +596,6 @@ public final class CalendarContract {
}
/**
- * Convenience method perform a delete on the Calendar provider. This is
- * a blocking call and should not be used on the UI thread.
- *
- * @param cr the ContentResolver
- * @param selection A filter to apply to rows before deleting, formatted
- * as an SQL WHERE clause (excluding the WHERE itself).
- * @param selectionArgs Fill in the '?'s in the selection
- * @return the count of rows that were deleted
- */
- public static int delete(ContentResolver cr, String selection, String[] selectionArgs)
- {
- return cr.delete(CONTENT_URI, selection, selectionArgs);
- }
-
- /**
- * Convenience method to delete all calendars that match the account.
- * This is a blocking call and should not be used on the UI thread.
- *
- * @param cr the ContentResolver
- * @param account the account whose calendars and events should be
- * deleted
- * @return the count of calendar rows that were deleted
- */
- public static int deleteCalendarsForAccount(ContentResolver cr, Account account) {
- // delete all calendars that match this account
- return CalendarContract.Calendars.delete(cr,
- WHERE_DELETE_FOR_ACCOUNT,
- new String[] { account.name, account.type });
- }
-
- /**
* The content:// style URL for accessing Calendars
*/
@SuppressWarnings("hiding")
@@ -764,7 +737,7 @@ public final class CalendarContract {
/**
* the projection used by the attendees query
*/
- public static final String[] PROJECTION = new String[] {
+ private static final String[] PROJECTION = new String[] {
_ID, ATTENDEE_NAME, ATTENDEE_EMAIL, ATTENDEE_RELATIONSHIP, ATTENDEE_STATUS,};
private static final String ATTENDEES_WHERE = Attendees.EVENT_ID + "=?";
@@ -1444,7 +1417,7 @@ public final class CalendarContract {
* views into other tables and cannot be changed through the Events table.
*/
public static final class Events implements BaseColumns, SyncColumns, EventsColumns,
- CalendarsColumns {
+ CalendarColumns {
/**
* Queries all events with the given projection. This is a blocking call
@@ -1556,9 +1529,12 @@ public final class CalendarContract {
* days and minutes. The instances table is not writable and only provides a
* way to query event occurrences.
*/
- public static final class Instances implements BaseColumns, EventsColumns, CalendarsColumns {
+ public static final class Instances implements BaseColumns, EventsColumns, CalendarColumns {
- private static final String WHERE_CALENDARS_SELECTED = Calendars.VISIBLE + "=1";
+ private static final String WHERE_CALENDARS_SELECTED = Calendars.VISIBLE + "=?";
+ private static final String[] WHERE_CALENDARS_ARGS = {
+ "1"
+ };
/**
* Performs a query to return all visible instances in the given range.
@@ -1581,7 +1557,7 @@ public final class CalendarContract {
ContentUris.appendId(builder, begin);
ContentUris.appendId(builder, end);
return cr.query(builder.build(), projection, WHERE_CALENDARS_SELECTED,
- null, DEFAULT_SORT_ORDER);
+ WHERE_CALENDARS_ARGS, DEFAULT_SORT_ORDER);
}
/**
@@ -1610,79 +1586,8 @@ public final class CalendarContract {
ContentUris.appendId(builder, begin);
ContentUris.appendId(builder, end);
builder = builder.appendPath(searchQuery);
- return cr.query(builder.build(), projection, WHERE_CALENDARS_SELECTED, null,
- DEFAULT_SORT_ORDER);
- }
-
- /**
- * Performs a query to return all visible instances in the given range
- * that match the given selection. This is a blocking function and
- * should not be done on the UI thread. This will cause an expansion of
- * recurring events to fill this time range if they are not already
- * expanded and will slow down for larger time ranges with many
- * recurring events.
- *
- * @param cr The ContentResolver to use for the query
- * @param projection The columns to return
- * @param begin The start of the time range to query in UTC millis since
- * epoch
- * @param end The end of the time range to query in UTC millis since
- * epoch
- * @param selection Filter on the query as an SQL WHERE statement
- * @param selectionArgs Args to replace any '?'s in the selection
- * @param orderBy How to order the rows as an SQL ORDER BY statement
- * @return A Cursor of instances matching the selection
- */
- public static final Cursor query(ContentResolver cr, String[] projection, long begin,
- long end, String selection, String[] selectionArgs, String orderBy) {
- Uri.Builder builder = CONTENT_URI.buildUpon();
- ContentUris.appendId(builder, begin);
- ContentUris.appendId(builder, end);
- if (TextUtils.isEmpty(selection)) {
- selection = WHERE_CALENDARS_SELECTED;
- } else {
- selection = "(" + selection + ") AND " + WHERE_CALENDARS_SELECTED;
- }
- return cr.query(builder.build(), projection, selection, selectionArgs,
- orderBy == null ? DEFAULT_SORT_ORDER : orderBy);
- }
-
- /**
- * Performs a query to return all visible instances in the given range
- * that match the given selection. This is a blocking function and
- * should not be done on the UI thread. This will cause an expansion of
- * recurring events to fill this time range if they are not already
- * expanded and will slow down for larger time ranges with many
- * recurring events.
- *
- * @param cr The ContentResolver to use for the query
- * @param projection The columns to return
- * @param begin The start of the time range to query in UTC millis since
- * epoch
- * @param end The end of the time range to query in UTC millis since
- * epoch
- * @param searchQuery A string of space separated search terms. Segments
- * enclosed by double quotes will be treated as a single
- * term.
- * @param selection Filter on the query as an SQL WHERE statement
- * @param selectionArgs Args to replace any '?'s in the selection
- * @param orderBy How to order the rows as an SQL ORDER BY statement
- * @return A Cursor of instances matching the selection
- */
- public static final Cursor query(ContentResolver cr, String[] projection, long begin,
- long end, String searchQuery, String selection, String[] selectionArgs,
- String orderBy) {
- Uri.Builder builder = CONTENT_SEARCH_URI.buildUpon();
- ContentUris.appendId(builder, begin);
- ContentUris.appendId(builder, end);
- builder = builder.appendPath(searchQuery);
- if (TextUtils.isEmpty(selection)) {
- selection = WHERE_CALENDARS_SELECTED;
- } else {
- selection = "(" + selection + ") AND " + WHERE_CALENDARS_SELECTED;
- }
- return cr.query(builder.build(), projection, selection, selectionArgs,
- orderBy == null ? DEFAULT_SORT_ORDER : orderBy);
+ return cr.query(builder.build(), projection, WHERE_CALENDARS_SELECTED,
+ WHERE_CALENDARS_ARGS, DEFAULT_SORT_ORDER);
}
/**
@@ -1790,7 +1695,6 @@ public final class CalendarContract {
*/
public static final Uri URI =
Uri.parse("content://" + AUTHORITY + "/properties");
- public static final String[] POJECTION = { KEY, VALUE };
/**
* If updating a property, this must be provided as the selection. All
@@ -1910,7 +1814,9 @@ public final class CalendarContract {
/**
* The projection used by the EventDays query.
*/
- public static final String[] PROJECTION = { STARTDAY, ENDDAY };
+ private static final String[] PROJECTION = {
+ STARTDAY, ENDDAY
+ };
private static final String SELECTION = "selected=1";
/**
@@ -1994,7 +1900,7 @@ public final class CalendarContract {
/**
* The projection used by the reminders query.
*/
- public static final String[] PROJECTION = new String[] {
+ private static final String[] PROJECTION = new String[] {
_ID, MINUTES, METHOD,};
@SuppressWarnings("hiding")
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/reminders");
@@ -2089,7 +1995,7 @@ public final class CalendarContract {
/**
* Fields and helpers for accessing calendar alerts information. These
* fields are for tracking which alerts have been fired. Scheduled alarms
- * will generate an intent using {@link #EVENT_REMINDER_ACTION}. Apps that
+ * will generate an intent using {@link #ACTION_EVENT_REMINDER}. Apps that
* receive this action may update the {@link #STATE} for the reminder when
* they have finished handling it. Apps that have their notifications
* disabled should not modify the table to ensure that they do not conflict
@@ -2098,7 +2004,7 @@ public final class CalendarContract {
* state of a reminder.
*/
public static final class CalendarAlerts implements BaseColumns,
- CalendarAlertsColumns, EventsColumns, CalendarsColumns {
+ CalendarAlertsColumns, EventsColumns, CalendarColumns {
/**
* @hide
@@ -2271,7 +2177,7 @@ public final class CalendarContract {
* keep scheduled reminders up to date but apps may use this to
* implement snooze functionality without modifying the reminders table.
* Scheduled alarms will generate an intent using
- * {@link #EVENT_REMINDER_ACTION}.
+ * {@link #ACTION_EVENT_REMINDER}.
*
* @param context A context for referencing system resources
* @param manager The AlarmManager to use or null
@@ -2290,7 +2196,7 @@ public final class CalendarContract {
manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
}
- Intent intent = new Intent(EVENT_REMINDER_ACTION);
+ Intent intent = new Intent(ACTION_EVENT_REMINDER);
intent.setData(ContentUris.withAppendedId(CalendarContract.CONTENT_URI, alarmTime));
intent.putExtra(ALARM_TIME, alarmTime);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);