Only send one reminder time to Exchange server

* Upsync fails if we try to send more than one reminder time
* CalendarProvider allows an unlimited number of reminders
* If there are reminders, send the largest number (i.e. the earliest
  reminder)

Bug: 2513106
Change-Id: I90a2fb145446e403edeabc654f725cc88ef1656e
diff --git a/src/com/android/exchange/adapter/CalendarSyncAdapter.java b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
index f540006..49f9ca5 100644
--- a/src/com/android/exchange/adapter/CalendarSyncAdapter.java
+++ b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
@@ -1207,6 +1207,8 @@
 
             // Handle associated data EXCEPT for attendees, which have to be grouped
             ArrayList<NamedContentValues> subValues = entity.getSubValues();
+            // The earliest of the reminders for this Event; we can only send one reminder...
+            int earliestReminder = -1;
             for (NamedContentValues ncv: subValues) {
                 Uri ncvUri = ncv.uri;
                 ContentValues ncvValues = ncv.values;
@@ -1228,11 +1230,25 @@
                         }
                     }
                 } else if (ncvUri.equals(Reminders.CONTENT_URI)) {
-                    s.writeStringValue(ncvValues, Reminders.MINUTES,
-                            Tags.CALENDAR_REMINDER_MINS_BEFORE);
+                    Integer mins = ncvValues.getAsInteger(Reminders.MINUTES);
+                    if (mins != null) {
+                        // -1 means "default", which for Exchange, is 30
+                        if (mins < 0) {
+                            mins = 30;
+                        }
+                        // Save this away if it's the earliest reminder (greatest minutes)
+                        if (mins > earliestReminder) {
+                            earliestReminder = mins;
+                        }
+                    }
                 }
             }
 
+            // If we have a reminder, send it to the server
+            if (earliestReminder >= 0) {
+                s.data(Tags.CALENDAR_REMINDER_MINS_BEFORE, Integer.toString(earliestReminder));
+            }
+
             // We've got to send a UID, unless this is an exception.  If the event is new, we've
             // generated one; if not, we should have gotten one from extended properties.
             if (clientId != null) {