blob: 1c6b7a2430390834281fc8b0390e35abbced3ef4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
package at.bitfire.vcard4android.contactrow
import android.content.ContentValues
import android.provider.ContactsContract.CommonDataKinds.Event
import at.bitfire.vcard4android.Constants
import at.bitfire.vcard4android.Contact
import at.bitfire.vcard4android.LabeledProperty
import at.bitfire.vcard4android.property.XAbDate
import ezvcard.property.Anniversary
import ezvcard.property.Birthday
import ezvcard.util.PartialDate
import org.apache.commons.lang3.StringUtils
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.*
import java.util.logging.Level
object EventHandler: DataRowHandler() {
override fun forMimeType() = Event.CONTENT_ITEM_TYPE
override fun handle(values: ContentValues, contact: Contact) {
super.handle(values, contact)
val dateStr = values.getAsString(Event.START_DATE) ?: return
var full: Date? = null
var partial: PartialDate? = null
val fullFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT)
try {
full = fullFormat.parse(dateStr)
} catch(e: ParseException) {
try {
partial = PartialDate.parse(dateStr)
} catch (e: IllegalArgumentException) {
Constants.log.log(Level.WARNING, "Couldn't parse birthday/anniversary date from database", e)
}
}
if (full != null || partial != null)
when (values.getAsInteger(Event.TYPE)) {
Event.TYPE_ANNIVERSARY ->
contact.anniversary = if (full != null) Anniversary(full) else Anniversary(partial)
Event.TYPE_BIRTHDAY ->
contact.birthDay = if (full != null) Birthday(full) else Birthday(partial)
/* Event.TYPE_OTHER,
Event.TYPE_CUSTOM */
else -> {
val abDate = if (full != null) XAbDate(full) else XAbDate(partial)
val label = StringUtils.trimToNull(values.getAsString(Event.LABEL))
contact.customDates += LabeledProperty(abDate, label)
}
}
}
}
|