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
|
/***************************************************************************************************
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
**************************************************************************************************/
package at.bitfire.vcard4android.contactrow
import android.net.Uri
import android.provider.ContactsContract.CommonDataKinds.Organization
import at.bitfire.vcard4android.BatchOperation
import at.bitfire.vcard4android.Contact
import org.apache.commons.lang3.StringUtils
import java.util.*
class OrganizationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean)
: DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) {
override fun build(): List<BatchOperation.CpoBuilder> {
var company: String? = null
var department: String? = null
contact.organization?.let {
val org = it.values.iterator()
if (org.hasNext())
company = org.next()
val depts = LinkedList<String>()
while (org.hasNext())
depts += org.next()
department = StringUtils.trimToNull(depts.joinToString(" / "))
}
if (company == null && department == null && contact.jobTitle == null && contact.jobDescription == null)
return emptyList()
return listOf(newDataRow().apply {
withValue(Organization.COMPANY, company)
withValue(Organization.DEPARTMENT, department)
withValue(Organization.TITLE, contact.jobTitle)
withValue(Organization.JOB_DESCRIPTION, contact.jobDescription)
})
}
object Factory: DataRowBuilder.Factory<OrganizationBuilder> {
override fun mimeType() = Organization.CONTENT_ITEM_TYPE
override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) =
OrganizationBuilder(dataRowUri, rawContactId, contact, readOnly)
}
}
|