Updates for Calendar db v 305
See https://android-git.corp.google.com/g/#change,114332 for more
details.
Change-Id: Id22c802a4d276122f38b3fd7da803ee5054540fe
diff --git a/src/com/android/exchange/adapter/CalendarSyncAdapter.java b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
index 00dcb0b..983c801 100644
--- a/src/com/android/exchange/adapter/CalendarSyncAdapter.java
+++ b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
@@ -73,19 +73,26 @@
public class CalendarSyncAdapter extends AbstractSyncAdapter {
private static final String TAG = "EasCalendarSyncAdapter";
+
+ private static final String EVENT_SAVED_TIMEZONE_COLUMN = Events.SYNC_DATA1;
+ /**
+ * Used to keep track of exception vs parent event dirtiness.
+ */
+ private static final String EVENT_SYNC_MARK = Events.SYNC_DATA8;
+ private static final String EVENT_SYNC_VERSION = Events.SYNC_DATA4;
// Since exceptions will have the same _SYNC_ID as the original event we have to check that
// there's no original event when finding an item by _SYNC_ID
private static final String SERVER_ID_AND_CALENDAR_ID = Events._SYNC_ID + "=? AND " +
Events.ORIGINAL_SYNC_ID + " ISNULL AND " + Events.CALENDAR_ID + "=?";
private static final String EVENT_ID_AND_CALENDAR_ID = Events._ID + "=? AND " +
Events.ORIGINAL_SYNC_ID + " ISNULL AND " + Events.CALENDAR_ID + "=?";
- private static final String DIRTY_OR_MARKED_TOP_LEVEL_IN_CALENDAR =
- "(" + Events.DIRTY + "=1 OR " + Events._SYNC_MARK + "= 1) AND " +
+ private static final String DIRTY_OR_MARKED_TOP_LEVEL_IN_CALENDAR = "(" + Events.DIRTY
+ + "=1 OR " + EVENT_SYNC_MARK + "= 1) AND " +
Events.ORIGINAL_ID + " ISNULL AND " + Events.CALENDAR_ID + "=?";
private static final String DIRTY_EXCEPTION_IN_CALENDAR =
Events.DIRTY + "=1 AND " + Events.ORIGINAL_ID + " NOTNULL AND " +
Events.CALENDAR_ID + "=?";
- private static final String CLIENT_ID_SELECTION = Events._SYNC_DATA + "=?";
+ private static final String CLIENT_ID_SELECTION = Events.SYNC_DATA2 + "=?";
private static final String ORIGINAL_EVENT_AND_CALENDAR =
Events.ORIGINAL_SYNC_ID + "=? AND " + Events.CALENDAR_ID + "=?";
private static final String ATTENDEES_EXCEPT_ORGANIZER = Attendees.EVENT_ID + "=? AND " +
@@ -132,7 +139,6 @@
private static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC");
private final TimeZone mLocalTimeZone = TimeZone.getDefault();
- private static final String EVENT_SAVED_TIMEZONE_COLUMN = Events.SYNC_DATA1;
// Maximum number of allowed attendees; above this number, we mark the Event with the
// attendeesRedacted extended property and don't allow the event to be upsynced to the server
@@ -395,7 +401,7 @@
cv.put(Events.CALENDAR_ID, mCalendarId);
cv.put(Events._SYNC_ID, serverId);
cv.put(Events.HAS_ATTENDEE_DATA, 1);
- cv.put(Events._SYNC_DATA, "0");
+ cv.put(Events.SYNC_DATA2, "0");
int allDayEvent = 0;
String organizerName = null;
@@ -544,7 +550,7 @@
// The following are fields we should save (for changes), though they don't
// relate to data used by CalendarProvider at this point
case Tags.CALENDAR_UID:
- cv.put(Events._SYNC_DATA, getValue());
+ cv.put(Events.SYNC_DATA2, getValue());
break;
case Tags.CALENDAR_DTSTAMP:
dtStamp = getValue();
@@ -712,7 +718,7 @@
logEventColumns(cv, "DTSTART missing");
return false;
// If we're a top-level event, we must have _SYNC_DATA (uid)
- } else if (!isException && !cv.containsKey(Events._SYNC_DATA)) {
+ } else if (!isException && !cv.containsKey(Events.SYNC_DATA2)) {
logEventColumns(cv, "_SYNC_DATA missing");
return false;
// We must also have DTEND or DURATION if we're not an exception
@@ -1192,7 +1198,7 @@
if (!mUploadedIdList.isEmpty()) {
ContentValues cv = new ContentValues();
cv.put(Events.DIRTY, 0);
- cv.put(Events._SYNC_MARK, 0);
+ cv.put(EVENT_SYNC_MARK, "0");
for (long eventId : mUploadedIdList) {
mContentResolver.update(
asSyncAdapter(
@@ -1252,7 +1258,7 @@
try {
if (c.moveToFirst()) {
cv.put(Events._SYNC_ID, serverId);
- cv.put(Events._SYNC_DATA, clientId);
+ cv.put(Events.SYNC_DATA2, clientId);
long id = c.getLong(0);
// Write the serverId into the Event
mOps.add(ContentProviderOperation
@@ -1776,7 +1782,7 @@
ContentValues cv = new ContentValues();
// We use _sync_mark here to distinguish dirty parents from parents with dirty
// exceptions
- cv.put(Events._SYNC_MARK, 1);
+ cv.put(EVENT_SYNC_MARK, "1");
while (c.moveToNext()) {
// Mark the parents of dirty exceptions
long parentId = c.getLong(0);
@@ -1839,7 +1845,7 @@
}
// Find our uid in the entity; otherwise create one
- String clientId = entityValues.getAsString(Events._SYNC_DATA);
+ String clientId = entityValues.getAsString(Events.SYNC_DATA2);
if (clientId == null) {
clientId = UUID.randomUUID().toString();
}
@@ -1867,8 +1873,8 @@
userLog("Creating new event with clientId: ", clientId);
s.start(Tags.SYNC_ADD).data(Tags.SYNC_CLIENT_ID, clientId);
// And save it in the Event as the local id
- cidValues.put(Events._SYNC_DATA, clientId);
- cidValues.put(Events._SYNC_VERSION, "0");
+ cidValues.put(Events.SYNC_DATA2, clientId);
+ cidValues.put(EVENT_SYNC_VERSION, "0");
cr.update(
asSyncAdapter(
ContentUris.withAppendedId(Events.CONTENT_URI, eventId),
@@ -1888,7 +1894,7 @@
}
userLog("Upsync change to event with serverId: " + serverId);
// Get the current version
- String version = entityValues.getAsString(Events._SYNC_VERSION);
+ String version = entityValues.getAsString(EVENT_SYNC_VERSION);
// This should never be null, but catch this error anyway
// Version should be "0" when we create the event, so use that
if (version == null) {
@@ -1903,9 +1909,9 @@
version = "0";
}
}
- cidValues.put(Events._SYNC_VERSION, version);
+ cidValues.put(EVENT_SYNC_VERSION, version);
// Also save in entityValues so that we send it this time around
- entityValues.put(Events._SYNC_VERSION, version);
+ entityValues.put(EVENT_SYNC_VERSION, version);
cr.update(
asSyncAdapter(
ContentUris.withAppendedId(Events.CONTENT_URI, eventId),
@@ -1968,8 +1974,8 @@
mUploadedIdList.add(exEventId);
// Copy version so the ics attachment shows the proper sequence #
- exValues.put(Events._SYNC_VERSION,
- entityValues.getAsString(Events._SYNC_VERSION));
+ exValues.put(EVENT_SYNC_VERSION,
+ entityValues.getAsString(EVENT_SYNC_VERSION));
// Copy location so that it's included in the outgoing email
if (entityValues.containsKey(Events.EVENT_LOCATION)) {
exValues.put(Events.EVENT_LOCATION,
diff --git a/src/com/android/exchange/utility/CalendarUtilities.java b/src/com/android/exchange/utility/CalendarUtilities.java
index f16095f..952402b 100644
--- a/src/com/android/exchange/utility/CalendarUtilities.java
+++ b/src/com/android/exchange/utility/CalendarUtilities.java
@@ -63,6 +63,7 @@
import java.util.TimeZone;
public class CalendarUtilities {
+
// NOTE: Most definitions in this class are have package visibility for testing purposes
private static final String TAG = "CalendarUtility";
@@ -72,6 +73,7 @@
static final int HOURS = MINUTES*60;
static final long DAYS = HOURS*24;
+ private static final String SYNC_VERSION = Events.SYNC_DATA4;
// NOTE All Microsoft data structures are little endian
// The following constants relate to standard Microsoft data sizes
@@ -1229,7 +1231,7 @@
// Create a Calendar object
ContentValues cv = new ContentValues();
// TODO How will this change if the user changes his account display name?
- cv.put(Calendars.DISPLAY_NAME, account.mDisplayName);
+ cv.put(Calendars.CALENDAR_DISPLAY_NAME, account.mDisplayName);
cv.put(Calendars.ACCOUNT_NAME, account.mEmailAddress);
cv.put(Calendars.ACCOUNT_TYPE, Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
cv.put(Calendars.SYNC_EVENTS, 1);
@@ -1242,8 +1244,8 @@
// TODO Coordinate account colors w/ Calendar, if possible
int color = new AccountServiceProxy(service.mContext).getAccountColor(account.mId);
cv.put(Calendars.CALENDAR_COLOR, color);
- cv.put(Calendars.CALENDAR_TIMEZONE, Time.getCurrentTimezone());
- cv.put(Calendars.ACCESS_LEVEL, Calendars.OWNER_ACCESS);
+ cv.put(Calendars.CALENDAR_TIME_ZONE, Time.getCurrentTimezone());
+ cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
cv.put(Calendars.OWNER_ACCOUNT, account.mEmailAddress);
Uri uri = service.mContentResolver.insert(
@@ -1505,7 +1507,7 @@
ics.writeTag("BEGIN", "VEVENT");
if (uid == null) {
- uid = entityValues.getAsString(Events._SYNC_DATA);
+ uid = entityValues.getAsString(Events.SYNC_DATA2);
}
if (uid != null) {
ics.writeTag("UID", uid);
@@ -1559,7 +1561,7 @@
ics.writeTag("LOCATION", location);
}
- String sequence = entityValues.getAsString(Events._SYNC_VERSION);
+ String sequence = entityValues.getAsString(SYNC_VERSION);
if (sequence == null) {
sequence = "0";
}
diff --git a/tests/src/com/android/exchange/adapter/CalendarSyncAdapterTests.java b/tests/src/com/android/exchange/adapter/CalendarSyncAdapterTests.java
index 96ce7aa..21b63f2 100644
--- a/tests/src/com/android/exchange/adapter/CalendarSyncAdapterTests.java
+++ b/tests/src/com/android/exchange/adapter/CalendarSyncAdapterTests.java
@@ -211,7 +211,7 @@
cv.put(Events.DTSTART, validTime);
// Needs _SYNC_DATA and DTEND/DURATION
assertFalse(p.isValidEventValues(cv));
- cv.put(Events._SYNC_DATA, validData);
+ cv.put(Events.SYNC_DATA2, validData);
// Needs DTEND/DURATION since not an exception
assertFalse(p.isValidEventValues(cv));
cv.put(Events.DURATION, validDuration);
diff --git a/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java b/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java
index 9737f31..80689cb 100644
--- a/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java
+++ b/tests/src/com/android/exchange/utility/CalendarUtilitiesTests.java
@@ -240,7 +240,7 @@
entityValues.put(Events.EVENT_LOCATION, location);
entityValues.put(Events.TITLE, title);
entityValues.put(Events.ORGANIZER, organizer);
- entityValues.put(Events._SYNC_DATA, "31415926535");
+ entityValues.put(Events.SYNC_DATA2, "31415926535");
// Add the attendee
ContentValues attendeeValues = new ContentValues();