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();