Merge "Support non-standard ports in EAS" into jb-dev
diff --git a/exchange2/src/com/android/exchange/adapter/ContactsSyncAdapter.java b/exchange2/src/com/android/exchange/adapter/ContactsSyncAdapter.java
index 7b7be15..c0c3a48 100644
--- a/exchange2/src/com/android/exchange/adapter/ContactsSyncAdapter.java
+++ b/exchange2/src/com/android/exchange/adapter/ContactsSyncAdapter.java
@@ -58,13 +58,17 @@
import android.util.Base64;
import android.util.Log;
+import com.android.emailcommon.utility.Utility;
import com.android.exchange.CommandStatusException;
import com.android.exchange.Eas;
import com.android.exchange.EasSyncService;
+import com.android.exchange.utility.CalendarUtilities;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
/**
* Sync adapter for EAS Contacts
@@ -359,11 +363,13 @@
}
}
+ @Override
public void addValues(RowBuilder builder) {
builder.withValue(Email.DATA, email);
builder.withValue(Email.DISPLAY_NAME, displayName);
}
+ @Override
public boolean isSameAs(int type, String value) {
return email.equalsIgnoreCase(value);
}
@@ -376,10 +382,12 @@
im = _im;
}
+ @Override
public void addValues(RowBuilder builder) {
builder.withValue(Im.DATA, im);
}
+ @Override
public boolean isSameAs(int type, String value) {
return im.equalsIgnoreCase(value);
}
@@ -394,11 +402,13 @@
type = _type;
}
+ @Override
public void addValues(RowBuilder builder) {
builder.withValue(Im.DATA, phone);
builder.withValue(Phone.TYPE, type);
}
+ @Override
public boolean isSameAs(int _type, String value) {
return type == _type && phone.equalsIgnoreCase(value);
}
@@ -1258,7 +1268,14 @@
if (cv != null && cvCompareString(cv, Event.START_DATE, birthday)) {
return;
}
- builder.withValue(Event.START_DATE, birthday);
+ long millis = Utility.parseEmailDateTimeToMillis(birthday);
+ GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+ cal.setTimeInMillis(millis);
+ if (cal.get(GregorianCalendar.HOUR_OF_DAY) >= 12) {
+ cal.add(GregorianCalendar.DATE, 1);
+ }
+ String realBirthday = CalendarUtilities.calendarToBirthdayString(cal);
+ builder.withValue(Event.START_DATE, realBirthday);
builder.withValue(Event.TYPE, Event.TYPE_BIRTHDAY);
add(builder.build());
}
diff --git a/exchange2/src/com/android/exchange/utility/CalendarUtilities.java b/exchange2/src/com/android/exchange/utility/CalendarUtilities.java
index 00e3f1b..792d065 100644
--- a/exchange2/src/com/android/exchange/utility/CalendarUtilities.java
+++ b/exchange2/src/com/android/exchange/utility/CalendarUtilities.java
@@ -903,6 +903,22 @@
}
/**
+ * Generate a birthday string from a GregorianCalendar set appropriately; the format of this
+ * string is YYYY-MM-DD
+ * @param cal the calendar
+ * @return the birthday string
+ */
+ static public String calendarToBirthdayString(GregorianCalendar cal) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(cal.get(Calendar.YEAR));
+ sb.append('-');
+ sb.append(formatTwo(cal.get(Calendar.MONTH) + 1));
+ sb.append('-');
+ sb.append(formatTwo(cal.get(Calendar.DAY_OF_MONTH)));
+ return sb.toString();
+ }
+
+ /**
* Generate an EAS formatted local date/time string from a time and a time zone. If the final
* argument is false, only a date will be returned (e.g. 20100331)
* @param millis a time in milliseconds