Welcome to mirror list, hosted at ThFree Co, Russian Federation.

OrganizationBuilder.kt « contactrow « vcard4android « bitfire « at « java « main « src - github.com/bitfireAT/vcard4android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: aa0507a93e6777df89ab6bd4bc4496e660ba8efe (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
/***************************************************************************************************
 * 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)
    }

}