Index: src/main/java/at/bitfire/vcard4android/AndroidContact.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/main/java/at/bitfire/vcard4android/AndroidContact.java (revision 0cb821c7b4b5cb30995b1e75802f7aefd85ef5f3)
+++ src/main/java/at/bitfire/vcard4android/AndroidContact.java (revision 7ce4ce8ae74a0a482a9e81a5384dcb5a4136d1be)
@@ -46,6 +46,7 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
@@ -1231,6 +1232,17 @@
}
protected void insertEvent(BatchOperation batch, int type, DateOrTimeProperty dateOrTime) {
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
+ String startDate;
+ if (dateOrTime.getPartialDate() != null) {
+ startDate = dateOrTime.getPartialDate().toString();
+ } else if (dateOrTime.getDate() != null) {
+ startDate = formatter.format(dateOrTime.getDate());
+ } else {
+ Constants.log.warning("Ignoring contact event (birthday/anniversary) without date");
+ return;
+ }
+
final BatchOperation.Operation op;
final ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(dataSyncURI());
if (id == null)
@@ -1241,7 +1253,7 @@
}
builder .withValue(Event.MIMETYPE, Event.CONTENT_ITEM_TYPE)
.withValue(Event.TYPE, type)
- .withValue(Event.START_DATE, dateOrTime.getPartialDate().toString());
+ .withValue(Event.START_DATE, startDate);
batch.enqueue(op);
Constants.log.log(Level.FINER, "Built Event data row", builder.build());
}
Index: src/main/java/at/bitfire/vcard4android/Contact.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/main/java/at/bitfire/vcard4android/Contact.java (revision 7ce4ce8ae74a0a482a9e81a5384dcb5a4136d1be)
+++ src/main/java/at/bitfire/vcard4android/Contact.java (revision 4f3c2508b33309f95d1d0f01745f9741aa942c14)
@@ -17,6 +17,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
+import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -502,8 +503,22 @@
if (anniversary != null)
vCard.setAnniversary(anniversary);
// BDAY
- if (birthDay != null)
+ if (birthDay != null) {
+ if (vCardVersion == VCardVersion.V4_0) {
- vCard.setBirthday(birthDay);
+ vCard.setBirthday(birthDay);
+ } else {
+ if (birthDay.getPartialDate() == null) {
+ vCard.setBirthday(birthDay);
+ } else {
+ Calendar c = Calendar.getInstance();
+ c.clear();
+ c.set(Calendar.YEAR, birthDay.getPartialDate().getYear() == null ? 1900 : birthDay.getPartialDate().getYear());
+ c.set(Calendar.MONTH, birthDay.getPartialDate().getMonth() - 1);
+ c.set(Calendar.DAY_OF_MONTH, birthDay.getPartialDate().getDate());
+ vCard.setBirthday(new Birthday(c.getTime()));
+ }
+ }
+ }
// RELATED
for (Related related : relations)
Index: src/test/java/at/bitfire/vcard4android/ContactTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/test/java/at/bitfire/vcard4android/ContactTest.java (revision 4f3c2508b33309f95d1d0f01745f9741aa942c14)
+++ src/test/java/at/bitfire/vcard4android/ContactTest.java (revision 8567d01ce5b63939e5868bc19f0102f028afd8bc)
@@ -365,7 +365,8 @@
@Test
public void testVCard4FieldsAsVCard3() throws IOException {
Contact c = regenerate(parseContact("vcard4.vcf", null), VCardVersion.V3_0);
- assertNull(c.birthDay);
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
+ assertEquals("1900-04-16", dateFormat.format(c.birthDay.getDate()));
}
@Test