diff options
author | Sunik Kupfer <kupfer@bitfire.at> | 2022-10-19 15:27:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-19 15:27:45 +0300 |
commit | 7fbec18c28cf242225126f36aa858e007b28efac (patch) | |
tree | 0fa352325208899b9b8c81a5dbbeaa9950ca9041 | |
parent | 581eac4117634bf59eba14b69acb8bb1cce95d2a (diff) |
8 support IS_READ_ONLY for Data and Group rows (closes bitfireAT/vcard4android#8) (#9)
* IS_READ_ONLY support for Data rows
* GROUP_IS_READ_ONLY support for AndroidGroup
* introduce default parameter to leave tests unchanged
* add test to check whether the read-only flag is set for groups
* add test for DataRowBuilder setting IS_READ_ONLY
* remove default param and edit all the constructor calls in tests
* add KDoc params to DataRowBuilder class
32 files changed, 279 insertions, 188 deletions
diff --git a/src/androidTest/java/at/bitfire/vcard4android/AndroidGroupTest.kt b/src/androidTest/java/at/bitfire/vcard4android/AndroidGroupTest.kt index 03c5ac0..42c8828 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/AndroidGroupTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/AndroidGroupTest.kt @@ -71,4 +71,48 @@ class AndroidGroupTest { assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size) } + @Test + fun testAdd_readOnly() { + addressBook.readOnly = true + + val contact = Contact() + contact.displayName = "at.bitfire.vcard4android-AndroidGroupTest" + contact.note = "(test group)" + + // ensure we start without this group + assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size) + + // create group + val group = AndroidGroup(addressBook, contact, null, null) + group.add() + val groups = addressBook.queryGroups("${ContactsContract.Groups.GROUP_IS_READ_ONLY}=?", arrayOf("1")) + assertEquals(1, groups.size) + + // delete group + group.delete() + assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size) + } + + @Test + fun testAdd_notReadOnly() { + addressBook.readOnly = false + + val contact = Contact() + contact.displayName = "at.bitfire.vcard4android-AndroidGroupTest" + contact.note = "(test group)" + + // ensure we start without this group + assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size) + + // create group + val group = AndroidGroup(addressBook, contact, null, null) + group.add() + val groups = addressBook.queryGroups("${ContactsContract.Groups.GROUP_IS_READ_ONLY}=?", arrayOf("0")) + assertEquals(1, groups.size) + + // delete group + group.delete() + assertEquals(0, addressBook.queryGroups("${ContactsContract.Groups.TITLE}=?", arrayOf(contact.displayName!!)).size) + } + } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/DataRowBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/DataRowBuilderTest.kt new file mode 100644 index 0000000..2fef9d9 --- /dev/null +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/DataRowBuilderTest.kt @@ -0,0 +1,37 @@ +/*************************************************************************************************** + * Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details. + **************************************************************************************************/ + +package at.bitfire.vcard4android.contactrow + +import android.net.Uri +import at.bitfire.vcard4android.BatchOperation +import at.bitfire.vcard4android.Contact +import org.junit.Assert.* +import org.junit.Test +import java.util.* + +class DataRowBuilderTest { + + @Test + fun newDataRow_readOnly() { + val list = TestDataRowBuilder(Uri.EMPTY, 0, Contact(), true).build() + assertEquals(1, list[0].values["is_read_only"]) + } + + @Test + fun newDataRow_notReadOnly() { + val list = TestDataRowBuilder(Uri.EMPTY, 0, Contact(), false).build() + assertEquals(null, list[0].values["is_read_only"]) // ensure value was not set + } + + class TestDataRowBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder("", dataRowUri, rawContactId, contact, readOnly) { + override fun build(): List<BatchOperation.CpoBuilder> { + return LinkedList<BatchOperation.CpoBuilder>().apply { + add(newDataRow()) + } + } + } + +}
\ No newline at end of file diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/EmailBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/EmailBuilderTest.kt index afd6cc2..6768dc8 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/EmailBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/EmailBuilderTest.kt @@ -18,7 +18,7 @@ class EmailBuilderTest { @Test fun testEmpty() { - EmailBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + EmailBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -28,7 +28,7 @@ class EmailBuilderTest { fun testAddress_Address() { EmailBuilder(Uri.EMPTY, null, Contact().apply { emails += LabeledProperty(Email("test@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals("test@example.com", result[0].values[CommonDataKinds.Email.ADDRESS]) } @@ -38,7 +38,7 @@ class EmailBuilderTest { fun testAddress_Blank() { EmailBuilder(Uri.EMPTY, null, Contact().apply { emails += LabeledProperty(Email("")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -48,7 +48,7 @@ class EmailBuilderTest { fun testLabel() { EmailBuilder(Uri.EMPTY, null, Contact().apply { emails += LabeledProperty(Email("test@example.com"), "Label") - }).build().also { result -> + }, false).build().also { result -> assertEquals("Label", result[0].values[CommonDataKinds.Email.LABEL]) } } @@ -58,7 +58,7 @@ class EmailBuilderTest { fun testMimeType() { EmailBuilder(Uri.EMPTY, null, Contact().apply { emails += LabeledProperty(Email("test@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Email.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Email.MIMETYPE]) } } @@ -68,7 +68,7 @@ class EmailBuilderTest { fun testPref_None() { EmailBuilder(Uri.EMPTY, null, Contact().apply { emails += LabeledProperty(Email("test@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result[0].values[CommonDataKinds.Email.IS_PRIMARY]) } } @@ -79,7 +79,7 @@ class EmailBuilderTest { emails += LabeledProperty(Email("test@example.com").apply { pref = 1 }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result[0].values[CommonDataKinds.Email.IS_PRIMARY]) } } @@ -91,7 +91,7 @@ class EmailBuilderTest { emails += LabeledProperty(Email("test@example.com").apply { types.add(EmailType.HOME) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Email.TYPE_HOME, result[0].values[CommonDataKinds.Email.TYPE]) } } @@ -102,7 +102,7 @@ class EmailBuilderTest { emails += LabeledProperty(Email("test@example.com").apply { types.add(CustomType.Email.MOBILE) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Email.TYPE_MOBILE, result[0].values[CommonDataKinds.Email.TYPE]) } } @@ -113,7 +113,7 @@ class EmailBuilderTest { emails += LabeledProperty(Email("test@example.com").apply { types.add(EmailType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Email.TYPE_WORK, result[0].values[CommonDataKinds.Email.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/EventBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/EventBuilderTest.kt index 9e3f2a3..bc5ca2d 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/EventBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/EventBuilderTest.kt @@ -20,7 +20,7 @@ class EventBuilderTest { @Test fun testEmpty() { - EventBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + EventBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -32,7 +32,7 @@ class EventBuilderTest { anniversary = Anniversary(Calendar.getInstance().apply { set(1984, /* zero-based */ 7, 20) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals("1984-08-20", result[0].values[CommonDataKinds.Event.START_DATE]) assertEquals(CommonDataKinds.Event.TYPE_ANNIVERSARY, result[0].values[CommonDataKinds.Event.TYPE]) @@ -60,7 +60,7 @@ class EventBuilderTest { anniversary = Anniversary(Calendar.getInstance().apply { set(1984, /* zero-based */ 7, 20) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals("1984-08-20", result[0].values[CommonDataKinds.Event.START_DATE]) } @@ -74,7 +74,7 @@ class EventBuilderTest { .date(20) .month(8) .build()), "Custom Event") - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Event.TYPE_CUSTOM, result[0].values[CommonDataKinds.Event.TYPE]) assertEquals("Custom Event", result[0].values[CommonDataKinds.Event.LABEL]) } @@ -88,7 +88,7 @@ class EventBuilderTest { set(1984, /* zero-based */ 7, 20) }) } - EventBuilder(Uri.EMPTY, null, c).build().also { result -> + EventBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(CommonDataKinds.Event.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Event.MIMETYPE]) } } @@ -100,7 +100,7 @@ class EventBuilderTest { anniversary = Anniversary(Calendar.getInstance().apply { set(1984, /* zero-based */ 7, 20) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Event.TYPE_ANNIVERSARY, result[0].values[CommonDataKinds.Event.TYPE]) } } @@ -111,7 +111,7 @@ class EventBuilderTest { birthDay = Birthday(Calendar.getInstance().apply { set(1984, /* zero-based */ 7, 20) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Event.TYPE_BIRTHDAY, result[0].values[CommonDataKinds.Event.TYPE]) } } @@ -123,7 +123,7 @@ class EventBuilderTest { .date(20) .month(8) .build())) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Event.TYPE_OTHER, result[0].values[CommonDataKinds.Event.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/ImBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/ImBuilderTest.kt index 164d3bd..e9fdfeb 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/ImBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/ImBuilderTest.kt @@ -17,7 +17,7 @@ class ImBuilderTest { @Test fun testEmpty() { - ImBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + ImBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -27,7 +27,7 @@ class ImBuilderTest { fun testHandle_Empty() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp("")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -36,7 +36,7 @@ class ImBuilderTest { fun testHandle_WithoutProtocol() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp("test@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -45,7 +45,7 @@ class ImBuilderTest { fun testHandle_WithProtocol() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.xmpp("jabber@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals(CommonDataKinds.Im.PROTOCOL_CUSTOM, result[0].values[CommonDataKinds.Im.PROTOCOL]) assertEquals("xmpp", result[0].values[CommonDataKinds.Im.CUSTOM_PROTOCOL]) @@ -58,7 +58,7 @@ class ImBuilderTest { fun testIgnoreSip() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp("sip:voip@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -68,7 +68,7 @@ class ImBuilderTest { fun testLabel() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.xmpp("jabber@example.com"), "Label") - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Im.TYPE_CUSTOM, result[0].values[CommonDataKinds.Im.TYPE]) assertEquals("Label", result[0].values[CommonDataKinds.Im.LABEL]) } @@ -79,7 +79,7 @@ class ImBuilderTest { fun testMimeType() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.xmpp("jabber@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Im.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Im.MIMETYPE]) } } @@ -89,7 +89,7 @@ class ImBuilderTest { fun testProtocol_Sip() { ImBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.sip("voip@example.com")) - }).build().also { result -> + }, false).build().also { result -> // handled by SipAddressHandler assertEquals(0, result.size) } @@ -102,7 +102,7 @@ class ImBuilderTest { impps += LabeledProperty(Impp.xmpp("jabber@example.com").apply { types.add(ImppType.HOME) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Im.TYPE_HOME, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -114,7 +114,7 @@ class ImBuilderTest { impps += LabeledProperty(Impp.xmpp("jabber@example.com").apply { types.add(ImppType.MOBILE) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Im.TYPE_OTHER, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -125,7 +125,7 @@ class ImBuilderTest { impps += LabeledProperty(Impp.xmpp("jabber@example.com").apply { types.add(ImppType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Im.TYPE_WORK, result[0].values[CommonDataKinds.Im.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/NicknameBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/NicknameBuilderTest.kt index ad5484f..5fd643d 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/NicknameBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/NicknameBuilderTest.kt @@ -17,7 +17,7 @@ class NicknameBuilderTest { @Test fun testEmpty() { - NicknameBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -31,7 +31,7 @@ class NicknameBuilderTest { type = CustomType.Nickname.SHORT_NAME // will be ignored because there's a label }, "Label 1") } - NicknameBuilder(Uri.EMPTY, null, c).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(1, result.size) assertEquals("Nick 1", result[0].values[CommonDataKinds.Nickname.NAME]) assertEquals(CommonDataKinds.Nickname.TYPE_CUSTOM, result[0].values[CommonDataKinds.Nickname.TYPE]) @@ -47,7 +47,7 @@ class NicknameBuilderTest { values.add("Name 1") }) } - NicknameBuilder(Uri.EMPTY, null, c).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(CommonDataKinds.Nickname.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Nickname.MIMETYPE]) } } @@ -61,7 +61,7 @@ class NicknameBuilderTest { type = CustomType.Nickname.INITIALS }) } - NicknameBuilder(Uri.EMPTY, null, c).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(1, result.size) assertEquals("N1", result[0].values[CommonDataKinds.Nickname.NAME]) assertEquals(CommonDataKinds.Nickname.TYPE_INITIALS, result[0].values[CommonDataKinds.Nickname.TYPE]) @@ -76,7 +76,7 @@ class NicknameBuilderTest { type = CustomType.Nickname.MAIDEN_NAME }) } - NicknameBuilder(Uri.EMPTY, null, c).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(1, result.size) assertEquals("Mai Den", result[0].values[CommonDataKinds.Nickname.NAME]) assertEquals(CommonDataKinds.Nickname.TYPE_MAIDEN_NAME, result[0].values[CommonDataKinds.Nickname.TYPE]) @@ -91,7 +91,7 @@ class NicknameBuilderTest { type = CustomType.Nickname.SHORT_NAME }) } - NicknameBuilder(Uri.EMPTY, null, c).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(1, result.size) assertEquals("Short Name", result[0].values[CommonDataKinds.Nickname.NAME]) assertEquals(CommonDataKinds.Nickname.TYPE_SHORT_NAME, result[0].values[CommonDataKinds.Nickname.TYPE]) @@ -107,7 +107,7 @@ class NicknameBuilderTest { values.add("Nick 2") }) } - NicknameBuilder(Uri.EMPTY, null, c).build().also { result -> + NicknameBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(2, result.size) assertEquals("Nick 1", result[0].values[CommonDataKinds.Nickname.NAME]) assertEquals("Nick 2", result[1].values[CommonDataKinds.Nickname.NAME]) diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/NoteBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/NoteBuilderTest.kt index 751f1f7..46e02da 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/NoteBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/NoteBuilderTest.kt @@ -14,7 +14,7 @@ class NoteBuilderTest { @Test fun testNote_Empty() { - NoteBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + NoteBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -23,7 +23,7 @@ class NoteBuilderTest { fun testNote_Blank() { NoteBuilder(Uri.EMPTY, null, Contact().apply { note = "" - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -32,7 +32,7 @@ class NoteBuilderTest { fun testNote_Value() { NoteBuilder(Uri.EMPTY, null, Contact().apply { note = "Some Note" - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals(CommonDataKinds.Note.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Note.MIMETYPE]) assertEquals("Some Note", result[0].values[CommonDataKinds.Note.NOTE]) diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/OrganizationBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/OrganizationBuilderTest.kt index a6c9ad2..3bf433f 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/OrganizationBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/OrganizationBuilderTest.kt @@ -16,7 +16,7 @@ class OrganizationBuilderTest { @Test fun testEmpty() { - OrganizationBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + OrganizationBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -25,7 +25,7 @@ class OrganizationBuilderTest { fun testEmpty_OrganizationEmpty() { OrganizationBuilder(Uri.EMPTY, null, Contact().apply { organization = Organization() - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -35,7 +35,7 @@ class OrganizationBuilderTest { fun testJobDescription() { OrganizationBuilder(Uri.EMPTY, null, Contact().apply { jobDescription = "Job Description" - }).build().also { result -> + }, false).build().also { result -> assertEquals("Job Description", result[0].values[CommonDataKinds.Organization.JOB_DESCRIPTION]) } } @@ -45,7 +45,7 @@ class OrganizationBuilderTest { fun testMimeType() { OrganizationBuilder(Uri.EMPTY, null, Contact().apply { jobDescription = "Job Description" - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Organization.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Organization.MIMETYPE]) } } @@ -57,7 +57,7 @@ class OrganizationBuilderTest { organization = Organization().apply { values.add("Organization") } - }).build().also { result -> + }, false).build().also { result -> assertEquals("Organization", result[0].values[CommonDataKinds.Organization.COMPANY]) assertNull(result[0].values[CommonDataKinds.Organization.DEPARTMENT]) } @@ -70,7 +70,7 @@ class OrganizationBuilderTest { values.add("Organization") values.add("Department") } - }).build().also { result -> + }, false).build().also { result -> assertEquals("Organization", result[0].values[CommonDataKinds.Organization.COMPANY]) assertEquals("Department", result[0].values[CommonDataKinds.Organization.DEPARTMENT]) } @@ -84,7 +84,7 @@ class OrganizationBuilderTest { values.add("Department") values.add("Division") } - }).build().also { result -> + }, false).build().also { result -> assertEquals("Organization", result[0].values[CommonDataKinds.Organization.COMPANY]) assertEquals("Department / Division", result[0].values[CommonDataKinds.Organization.DEPARTMENT]) } @@ -95,7 +95,7 @@ class OrganizationBuilderTest { fun testTitle() { OrganizationBuilder(Uri.EMPTY, null, Contact().apply { jobTitle = "Job Title" - }).build().also { result -> + }, false).build().also { result -> assertEquals("Job Title", result[0].values[CommonDataKinds.Organization.TITLE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhoneBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhoneBuilderTest.kt index 6844bf6..07a6dc6 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhoneBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhoneBuilderTest.kt @@ -18,7 +18,7 @@ class PhoneBuilderTest { @Test fun testEmpty() { - PhoneBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + PhoneBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -28,7 +28,7 @@ class PhoneBuilderTest { fun testNumber_Blank() { PhoneBuilder(Uri.EMPTY, null, Contact().apply { phoneNumbers += LabeledProperty(Telephone("")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -37,7 +37,7 @@ class PhoneBuilderTest { fun testNumber_Value() { PhoneBuilder(Uri.EMPTY, null, Contact().apply { phoneNumbers += LabeledProperty(Telephone("+1 555 12345")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals("+1 555 12345", result[0].values[CommonDataKinds.Phone.NUMBER]) } @@ -48,7 +48,7 @@ class PhoneBuilderTest { fun testLabel() { PhoneBuilder(Uri.EMPTY, null, Contact().apply { phoneNumbers += LabeledProperty(Telephone("+1 555 12345"), "Label") - }).build().also { result -> + }, false).build().also { result -> assertEquals("Label", result[0].values[CommonDataKinds.Phone.LABEL]) } } @@ -58,7 +58,7 @@ class PhoneBuilderTest { fun testMimeType() { PhoneBuilder(Uri.EMPTY, null, Contact().apply { phoneNumbers += LabeledProperty(Telephone("+1 555 12345")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Phone.MIMETYPE]) } } @@ -68,7 +68,7 @@ class PhoneBuilderTest { fun testPref_None() { PhoneBuilder(Uri.EMPTY, null, Contact().apply { phoneNumbers += LabeledProperty(Telephone("+1 555 12345")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result[0].values[CommonDataKinds.Phone.IS_PRIMARY]) } } @@ -79,7 +79,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { pref = 1 }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result[0].values[CommonDataKinds.Phone.IS_PRIMARY]) } } @@ -91,7 +91,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(CustomType.Phone.ASSISTANT) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_ASSISTANT, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -102,7 +102,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(CustomType.Phone.CALLBACK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_CALLBACK, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -113,7 +113,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.CELL) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_MOBILE, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -125,7 +125,7 @@ class PhoneBuilderTest { types.add(TelephoneType.CELL) types.add(TelephoneType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_WORK_MOBILE, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -136,7 +136,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(CustomType.Phone.COMPANY_MAIN) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_COMPANY_MAIN, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -147,7 +147,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.FAX) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_OTHER_FAX, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -159,7 +159,7 @@ class PhoneBuilderTest { types.add(TelephoneType.FAX) types.add(TelephoneType.HOME) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_FAX_HOME, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -171,7 +171,7 @@ class PhoneBuilderTest { types.add(TelephoneType.FAX) types.add(TelephoneType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_FAX_WORK, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -182,7 +182,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.HOME) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_HOME, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -193,7 +193,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.ISDN) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_ISDN, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -204,7 +204,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(CustomType.Phone.MMS) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_MMS, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -216,7 +216,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.VIDEO) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_OTHER, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -227,7 +227,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.PAGER) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_PAGER, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -239,7 +239,7 @@ class PhoneBuilderTest { types.add(TelephoneType.PAGER) types.add(TelephoneType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_WORK_PAGER, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -250,7 +250,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(CustomType.Phone.RADIO) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_RADIO, result[0].values[CommonDataKinds.Phone.TYPE]) } } @@ -261,7 +261,7 @@ class PhoneBuilderTest { phoneNumbers += LabeledProperty(Telephone("+1 555 12345").apply { types.add(TelephoneType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Phone.TYPE_WORK, result[0].values[CommonDataKinds.Phone.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhotoBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhotoBuilderTest.kt index ff382eb..bc8d607 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhotoBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/PhotoBuilderTest.kt @@ -18,7 +18,6 @@ import at.bitfire.vcard4android.AndroidContact import at.bitfire.vcard4android.Contact import at.bitfire.vcard4android.impl.TestAddressBook import org.apache.commons.io.IOUtils -import org.junit.Assert import org.junit.Assert.* import org.junit.BeforeClass import org.junit.ClassRule @@ -42,7 +41,7 @@ class PhotoBuilderTest { @JvmStatic fun connect() { provider = testContext.contentResolver.acquireContentProviderClient(ContactsContract.AUTHORITY)!! - Assert.assertNotNull(provider) + assertNotNull(provider) addressBook = TestAddressBook(testAccount, provider) } @@ -58,7 +57,7 @@ class PhotoBuilderTest { @Test fun testBuild_NoPhoto() { - PhotoBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + PhotoBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -68,7 +67,7 @@ class PhotoBuilderTest { val blob = ByteArray(1024) { Random.nextInt().toByte() } PhotoBuilder(Uri.EMPTY, null, Contact().apply { photo = blob - }).build().also { result -> + }, false).build().also { result -> // no row because photos have to be inserted with a separate call to insertPhoto() assertEquals(0, result.size) } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/RelationBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/RelationBuilderTest.kt index 91b43cf..a1f0fe0 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/RelationBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/RelationBuilderTest.kt @@ -17,7 +17,7 @@ class RelationBuilderTest { @Test fun testEmpty() { - RelationBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + RelationBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -30,7 +30,7 @@ class RelationBuilderTest { types += RelatedType.FRIEND } } - RelationBuilder(Uri.EMPTY, null, c).build().also { result -> + RelationBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(Relation.CONTENT_ITEM_TYPE, result[0].values[Relation.MIMETYPE]) } } @@ -43,7 +43,7 @@ class RelationBuilderTest { text = "Somebody" types += RelatedType.FRIEND } - }).build().also { result -> + }, false).build().also { result -> assertEquals("Somebody", result[0].values[Relation.NAME]) } } @@ -55,7 +55,7 @@ class RelationBuilderTest { text = "Text" types += RelatedType.FRIEND } - }).build().also { result -> + }, false).build().also { result -> assertEquals("Text", result[0].values[Relation.NAME]) } } @@ -66,7 +66,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.FRIEND } - }).build().also { result -> + }, false).build().also { result -> assertEquals("somebody", result[0].values[Relation.NAME]) } } @@ -78,7 +78,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.ASSISTANT } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_ASSISTANT, result[0].values[Relation.TYPE]) } } @@ -89,7 +89,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.BROTHER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_BROTHER, result[0].values[Relation.TYPE]) } } @@ -101,7 +101,7 @@ class RelationBuilderTest { types += RelatedType.SIBLING types += CustomType.Related.BROTHER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_BROTHER, result[0].values[Relation.TYPE]) } } @@ -112,7 +112,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.CHILD } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_CHILD, result[0].values[Relation.TYPE]) } } @@ -123,7 +123,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.DOMESTIC_PARTNER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_DOMESTIC_PARTNER, result[0].values[Relation.TYPE]) } } @@ -134,7 +134,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.FATHER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_FATHER, result[0].values[Relation.TYPE]) } } @@ -146,7 +146,7 @@ class RelationBuilderTest { types += RelatedType.PARENT types += CustomType.Related.FATHER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_FATHER, result[0].values[Relation.TYPE]) } } @@ -157,7 +157,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.FRIEND } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_FRIEND, result[0].values[Relation.TYPE]) } } @@ -168,7 +168,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.KIN } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_RELATIVE, result[0].values[Relation.TYPE]) } } @@ -179,7 +179,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.MANAGER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_MANAGER, result[0].values[Relation.TYPE]) } } @@ -190,7 +190,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.MOTHER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_MOTHER, result[0].values[Relation.TYPE]) } } @@ -202,7 +202,7 @@ class RelationBuilderTest { types += RelatedType.PARENT types += CustomType.Related.MOTHER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_MOTHER, result[0].values[Relation.TYPE]) } } @@ -214,7 +214,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.SWEETHEART } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_CUSTOM, result[0].values[Relation.TYPE]) assertEquals("Sweetheart", result[0].values[Relation.LABEL]) } @@ -226,7 +226,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.PARENT } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_PARENT, result[0].values[Relation.TYPE]) } } @@ -237,7 +237,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.PARTNER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_PARTNER, result[0].values[Relation.TYPE]) } } @@ -248,7 +248,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.REFERRED_BY } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_REFERRED_BY, result[0].values[Relation.TYPE]) } } @@ -259,7 +259,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += CustomType.Related.SISTER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_SISTER, result[0].values[Relation.TYPE]) } } @@ -271,7 +271,7 @@ class RelationBuilderTest { types += RelatedType.SIBLING types += CustomType.Related.SISTER } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_SISTER, result[0].values[Relation.TYPE]) } } @@ -282,7 +282,7 @@ class RelationBuilderTest { relations += Related("somebody").apply { types += RelatedType.SPOUSE } - }).build().also { result -> + }, false).build().also { result -> assertEquals(Relation.TYPE_SPOUSE, result[0].values[Relation.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/SipAddressBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/SipAddressBuilderTest.kt index 09c4d4b..7aacc41 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/SipAddressBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/SipAddressBuilderTest.kt @@ -17,7 +17,7 @@ class SipAddressBuilderTest { @Test fun testEmpty() { - SipAddressBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + SipAddressBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -27,7 +27,7 @@ class SipAddressBuilderTest { fun testHandle_Empty() { SipAddressBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp("")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -36,7 +36,7 @@ class SipAddressBuilderTest { fun testHandle_NotSip() { SipAddressBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.xmpp("test@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -45,7 +45,7 @@ class SipAddressBuilderTest { fun testHandle_Sip() { SipAddressBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.sip("voip@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals("voip@example.com", result[0].values[SipAddress.SIP_ADDRESS]) } @@ -56,7 +56,7 @@ class SipAddressBuilderTest { fun testLabel() { SipAddressBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.sip("voip@example.com"), "Label") - }).build().also { result -> + }, false).build().also { result -> assertEquals(SipAddress.TYPE_CUSTOM, result[0].values[SipAddress.TYPE]) assertEquals("Label", result[0].values[SipAddress.LABEL]) } @@ -67,7 +67,7 @@ class SipAddressBuilderTest { fun testMimeType() { SipAddressBuilder(Uri.EMPTY, null, Contact().apply { impps += LabeledProperty(Impp.sip("voip@example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(SipAddress.CONTENT_ITEM_TYPE, result[0].values[SipAddress.MIMETYPE]) } } @@ -79,7 +79,7 @@ class SipAddressBuilderTest { impps += LabeledProperty(Impp.sip("voip@example.com").apply { types.add(ImppType.HOME) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(SipAddress.TYPE_HOME, result[0].values[SipAddress.TYPE]) } } @@ -91,7 +91,7 @@ class SipAddressBuilderTest { impps += LabeledProperty(Impp.sip("voip@example.com").apply { types.add(ImppType.MOBILE) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(SipAddress.TYPE_OTHER, result[0].values[SipAddress.TYPE]) } } @@ -102,7 +102,7 @@ class SipAddressBuilderTest { impps += LabeledProperty(Impp.sip("voip@example.com").apply { types.add(ImppType.WORK) }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(SipAddress.TYPE_WORK, result[0].values[SipAddress.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilderTest.kt index 98ab4b4..4b34629 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilderTest.kt @@ -14,7 +14,7 @@ class StructuredNameBuilderTest { @Test fun testEmpty() { - StructuredNameBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + StructuredNameBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -31,7 +31,7 @@ class StructuredNameBuilderTest { phoneticGivenName = "Phonetic Given" phoneticMiddleName = "Phonetic Middle" phoneticFamilyName = "Phonetic Family" - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals(StructuredName.CONTENT_ITEM_TYPE, result[0].values[StructuredName.MIMETYPE]) diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilderTest.kt index b434c26..9a7217b 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilderTest.kt @@ -17,7 +17,7 @@ class StructuredPostalBuilderTest { @Test fun testEmpty() { - StructuredPostalBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + StructuredPostalBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -30,7 +30,7 @@ class StructuredPostalBuilderTest { streetAddress = "Street" }, "Label") } - StructuredPostalBuilder(Uri.EMPTY, null, c).build().also { result -> + StructuredPostalBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(StructuredPostal.TYPE_CUSTOM, result[0].values[StructuredPostal.TYPE]) assertEquals("Label", result[0].values[StructuredPostal.LABEL]) } @@ -50,7 +50,7 @@ class StructuredPostalBuilderTest { postalCode = "ZIP" country = "Country" }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(1, result.size) assertEquals(StructuredPostal.CONTENT_ITEM_TYPE, result[0].values[StructuredPostal.MIMETYPE]) @@ -80,7 +80,7 @@ class StructuredPostalBuilderTest { types += AddressType.HOME }) } - StructuredPostalBuilder(Uri.EMPTY, null, c).build().also { result -> + StructuredPostalBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(StructuredPostal.TYPE_HOME, result[0].values[StructuredPostal.TYPE]) } } @@ -92,7 +92,7 @@ class StructuredPostalBuilderTest { streetAddress = "Street" }) } - StructuredPostalBuilder(Uri.EMPTY, null, c).build().also { result -> + StructuredPostalBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(StructuredPostal.TYPE_OTHER, result[0].values[StructuredPostal.TYPE]) } } @@ -105,7 +105,7 @@ class StructuredPostalBuilderTest { types += AddressType.WORK }) } - StructuredPostalBuilder(Uri.EMPTY, null, c).build().also { result -> + StructuredPostalBuilder(Uri.EMPTY, null, c, false).build().also { result -> assertEquals(StructuredPostal.TYPE_WORK, result[0].values[StructuredPostal.TYPE]) } } diff --git a/src/androidTest/java/at/bitfire/vcard4android/contactrow/WebsiteBuilderTest.kt b/src/androidTest/java/at/bitfire/vcard4android/contactrow/WebsiteBuilderTest.kt index 6d7be42..484057e 100644 --- a/src/androidTest/java/at/bitfire/vcard4android/contactrow/WebsiteBuilderTest.kt +++ b/src/androidTest/java/at/bitfire/vcard4android/contactrow/WebsiteBuilderTest.kt @@ -17,7 +17,7 @@ class WebsiteBuilderTest { @Test fun testEmpty() { - WebsiteBuilder(Uri.EMPTY, null, Contact()).build().also { result -> + WebsiteBuilder(Uri.EMPTY, null, Contact(), false).build().also { result -> assertEquals(0, result.size) } } @@ -27,7 +27,7 @@ class WebsiteBuilderTest { fun testUrl_Empty() { WebsiteBuilder(Uri.EMPTY, null, Contact().apply { urls += LabeledProperty(Url("")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(0, result.size) } } @@ -36,7 +36,7 @@ class WebsiteBuilderTest { fun testUrl_Value() { WebsiteBuilder(Uri.EMPTY, null, Contact().apply { urls += LabeledProperty(Url("https://example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals("https://example.com", result[0].values[CommonDataKinds.Website.URL]) } } @@ -46,7 +46,7 @@ class WebsiteBuilderTest { fun testLabel() { WebsiteBuilder(Uri.EMPTY, null, Contact().apply { urls += LabeledProperty(Url("https://example.com"), "Label") - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Im.TYPE_CUSTOM, result[0].values[CommonDataKinds.Website.TYPE]) assertEquals("Label", result[0].values[CommonDataKinds.Website.LABEL]) } @@ -57,7 +57,7 @@ class WebsiteBuilderTest { fun testMimeType() { WebsiteBuilder(Uri.EMPTY, null, Contact().apply { urls += LabeledProperty(Url("https://example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.CONTENT_ITEM_TYPE, result[0].values[CommonDataKinds.Website.MIMETYPE]) } } @@ -69,7 +69,7 @@ class WebsiteBuilderTest { urls += LabeledProperty(Url("https://example.com").apply { type = CustomType.Url.TYPE_BLOG }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_BLOG, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -80,7 +80,7 @@ class WebsiteBuilderTest { urls += LabeledProperty(Url("ftps://example.com").apply { type = CustomType.Url.TYPE_FTP }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_FTP, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -91,7 +91,7 @@ class WebsiteBuilderTest { urls += LabeledProperty(Url("https://example.com").apply { type = CustomType.HOME }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_HOME, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -102,7 +102,7 @@ class WebsiteBuilderTest { urls += LabeledProperty(Url("https://example.com").apply { type = CustomType.Url.TYPE_HOMEPAGE }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_HOMEPAGE, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -111,7 +111,7 @@ class WebsiteBuilderTest { fun testType_None() { WebsiteBuilder(Uri.EMPTY, null, Contact().apply { urls += LabeledProperty(Url("ftps://example.com")) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_OTHER, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -122,7 +122,7 @@ class WebsiteBuilderTest { urls += LabeledProperty(Url("https://example.com").apply { type = CustomType.Url.TYPE_PROFILE }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_PROFILE, result[0].values[CommonDataKinds.Im.TYPE]) } } @@ -133,7 +133,7 @@ class WebsiteBuilderTest { urls += LabeledProperty(Url("https://example.com").apply { type = CustomType.WORK }) - }).build().also { result -> + }, false).build().also { result -> assertEquals(CommonDataKinds.Website.TYPE_WORK, result[0].values[CommonDataKinds.Im.TYPE]) } } diff --git a/src/main/java/at/bitfire/vcard4android/AndroidContact.kt b/src/main/java/at/bitfire/vcard4android/AndroidContact.kt index 31556e5..d3d7350 100644 --- a/src/main/java/at/bitfire/vcard4android/AndroidContact.kt +++ b/src/main/java/at/bitfire/vcard4android/AndroidContact.kt @@ -201,7 +201,7 @@ open class AndroidContact( */ protected fun insertDataRows(batch: BatchOperation) { val contact = getContact() - processor.insertDataRows(dataSyncURI(), id, contact, batch) + processor.insertDataRows(dataSyncURI(), id, contact, batch, addressBook.readOnly) } diff --git a/src/main/java/at/bitfire/vcard4android/AndroidGroup.kt b/src/main/java/at/bitfire/vcard4android/AndroidGroup.kt index e863df6..16b3428 100644 --- a/src/main/java/at/bitfire/vcard4android/AndroidGroup.kt +++ b/src/main/java/at/bitfire/vcard4android/AndroidGroup.kt @@ -128,7 +128,8 @@ open class AndroidGroup( values.put(Groups.ACCOUNT_TYPE, addressBook.account.type) values.put(Groups.ACCOUNT_NAME, addressBook.account.name) values.put(Groups.SHOULD_SYNC, 1) - // read-only: values.put(Groups.GROUP_VISIBLE, 1); + if (addressBook.readOnly) + values.put(Groups.GROUP_IS_READ_ONLY, 1) val uri = addressBook.provider!!.insert(addressBook.syncAdapterURI(Groups.CONTENT_URI), values) ?: throw ContactsStorageException("Empty result from content provider when adding group") id = ContentUris.parseId(uri) diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/ContactProcessor.kt b/src/main/java/at/bitfire/vcard4android/contactrow/ContactProcessor.kt index c0e0bc0..0871ac6 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/ContactProcessor.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/ContactProcessor.kt @@ -90,9 +90,9 @@ class ContactProcessor( } - fun insertDataRows(dataRowUri: Uri, rawContactId: Long?, contact: Contact, batch: BatchOperation) { + fun insertDataRows(dataRowUri: Uri, rawContactId: Long?, contact: Contact, batch: BatchOperation, readOnly: Boolean) { for (factory in dataRowBuilderFactories) { - val builder = factory.newInstance(dataRowUri, rawContactId, contact) + val builder = factory.newInstance(dataRowUri, rawContactId, contact, readOnly) batch.enqueueAll(builder.build()) } } diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/DataRowBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/DataRowBuilder.kt index 32b2f06..8b94611 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/DataRowBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/DataRowBuilder.kt @@ -6,19 +6,28 @@ package at.bitfire.vcard4android.contactrow import android.net.Uri import android.provider.ContactsContract -import at.bitfire.vcard4android.AndroidAddressBook import at.bitfire.vcard4android.BatchOperation import at.bitfire.vcard4android.Contact /** * Builder for a data row to insert into the Android contact provider. * + * @param mimeType the type of data in this row, see [ContactsContract.CommonDataKinds] * @param dataRowUri data row URI, including callerIsSyncAdapter=… if required * @param rawContactId not *null*: raw contact ID to assign this data row to; * *null*: data row will be assigned to back reference with index 0 * (= result ID of the first operation in batch, which must be the insert operation to insert the raw contact) + * @param contact which contact this data row belongs to + * @param readOnly whether the data row is read-only (write protected). When the address book is + * read-only, all contacts inside are too, and so the contact's data rows should be as well. */ -abstract class DataRowBuilder(val mimeType: String, val dataRowUri: Uri, val rawContactId: Long?, val contact: Contact) { +abstract class DataRowBuilder( + val mimeType: String, + val dataRowUri: Uri, + val rawContactId: Long?, + val contact: Contact, + val readOnly: Boolean +) { abstract fun build(): List<BatchOperation.CpoBuilder> @@ -28,6 +37,9 @@ abstract class DataRowBuilder(val mimeType: String, val dataRowUri: Uri, val raw .newInsert(dataRowUri) .withValue(ContactsContract.RawContacts.Data.MIMETYPE, mimeType) + if (readOnly) + insert.withValue(ContactsContract.Data.IS_READ_ONLY, 1) + if (rawContactId != null) insert.withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId) else @@ -38,10 +50,8 @@ abstract class DataRowBuilder(val mimeType: String, val dataRowUri: Uri, val raw interface Factory<T: DataRowBuilder> { - fun mimeType(): String - fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact): T - + fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean): T } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/EmailBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/EmailBuilder.kt index e2f7538..ae35b80 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/EmailBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/EmailBuilder.kt @@ -15,8 +15,8 @@ import ezvcard.parameter.EmailType import java.util.* import java.util.logging.Level -class EmailBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class EmailBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -68,8 +68,8 @@ class EmailBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<EmailBuilder> { override fun mimeType() = Email.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - EmailBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + EmailBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/EventBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/EventBuilder.kt index 19b9b9f..0f27a23 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/EventBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/EventBuilder.kt @@ -14,8 +14,8 @@ import java.text.SimpleDateFormat import java.util.* import java.util.logging.Level -class EventBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class EventBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -65,8 +65,8 @@ class EventBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<EventBuilder> { override fun mimeType() = Event.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - EventBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + EventBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/ImBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/ImBuilder.kt index bcbe247..e942e5f 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/ImBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/ImBuilder.kt @@ -12,8 +12,8 @@ import at.bitfire.vcard4android.Contact import ezvcard.parameter.ImppType import java.util.* -class ImBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class ImBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -58,8 +58,8 @@ class ImBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<ImBuilder> { override fun mimeType() = Im.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - ImBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + ImBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/NicknameBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/NicknameBuilder.kt index fddad37..53a1448 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/NicknameBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/NicknameBuilder.kt @@ -11,8 +11,8 @@ import at.bitfire.vcard4android.Contact import at.bitfire.vcard4android.property.CustomType import java.util.* -class NicknameBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class NicknameBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val labeledNick = contact.nickName ?: return emptyList() @@ -52,8 +52,8 @@ class NicknameBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<NicknameBuilder> { override fun mimeType() = CommonDataKinds.Nickname.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - NicknameBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + NicknameBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/NoteBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/NoteBuilder.kt index e80f0fe..1fa33bd 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/NoteBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/NoteBuilder.kt @@ -9,8 +9,8 @@ import android.provider.ContactsContract.CommonDataKinds.Note import at.bitfire.vcard4android.BatchOperation import at.bitfire.vcard4android.Contact -class NoteBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class NoteBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val note = contact.note @@ -25,8 +25,8 @@ class NoteBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<NoteBuilder> { override fun mimeType() = Note.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - NoteBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + NoteBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/OrganizationBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/OrganizationBuilder.kt index c63ef2a..aa0507a 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/OrganizationBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/OrganizationBuilder.kt @@ -11,8 +11,8 @@ import at.bitfire.vcard4android.Contact import org.apache.commons.lang3.StringUtils import java.util.* -class OrganizationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +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 @@ -42,8 +42,8 @@ class OrganizationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact object Factory: DataRowBuilder.Factory<OrganizationBuilder> { override fun mimeType() = Organization.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - OrganizationBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + OrganizationBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/PhoneBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/PhoneBuilder.kt index bf35868..d026f85 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/PhoneBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/PhoneBuilder.kt @@ -14,8 +14,8 @@ import ezvcard.parameter.TelephoneType import java.util.* import java.util.logging.Level -class PhoneBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class PhoneBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -100,8 +100,8 @@ class PhoneBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<PhoneBuilder> { override fun mimeType() = Phone.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - PhoneBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + PhoneBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/PhotoBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/PhotoBuilder.kt index c3a7716..eda341b 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/PhotoBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/PhotoBuilder.kt @@ -20,8 +20,8 @@ import at.bitfire.vcard4android.Utils.asSyncAdapter import org.apache.commons.io.FileUtils import java.util.logging.Level -class PhotoBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class PhotoBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { companion object { @@ -106,8 +106,8 @@ class PhotoBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<PhotoBuilder> { override fun mimeType() = Photo.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - PhotoBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + PhotoBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/RelationBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/RelationBuilder.kt index 87d9dbd..d746fcd 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/RelationBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/RelationBuilder.kt @@ -14,8 +14,8 @@ import org.apache.commons.lang3.StringUtils import org.apache.commons.text.WordUtils import java.util.* -class RelationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class RelationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -68,8 +68,8 @@ class RelationBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<RelationBuilder> { override fun mimeType() = Relation.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - RelationBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + RelationBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/SipAddressBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/SipAddressBuilder.kt index cecfd56..0e095cc 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/SipAddressBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/SipAddressBuilder.kt @@ -11,8 +11,8 @@ import at.bitfire.vcard4android.Contact import ezvcard.parameter.ImppType import java.util.* -class SipAddressBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class SipAddressBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -51,8 +51,8 @@ class SipAddressBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<SipAddressBuilder> { override fun mimeType() = SipAddress.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - SipAddressBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + SipAddressBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilder.kt index 7d1571e..35b556b 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/StructuredNameBuilder.kt @@ -9,8 +9,8 @@ import android.provider.ContactsContract.CommonDataKinds.StructuredName import at.bitfire.vcard4android.BatchOperation import at.bitfire.vcard4android.Contact -class StructuredNameBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class StructuredNameBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { if (contact.displayName == null && @@ -36,8 +36,8 @@ class StructuredNameBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Conta object Factory: DataRowBuilder.Factory<StructuredNameBuilder> { override fun mimeType() = StructuredName.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - StructuredNameBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + StructuredNameBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilder.kt index c593bce..698f8e0 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/StructuredPostalBuilder.kt @@ -15,8 +15,8 @@ import java.util.* /** * Data row builder for structured addresses. */ -class StructuredPostalBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class StructuredPostalBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -92,8 +92,8 @@ class StructuredPostalBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Con object Factory: DataRowBuilder.Factory<StructuredPostalBuilder> { override fun mimeType() = StructuredPostal.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - StructuredPostalBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + StructuredPostalBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file diff --git a/src/main/java/at/bitfire/vcard4android/contactrow/WebsiteBuilder.kt b/src/main/java/at/bitfire/vcard4android/contactrow/WebsiteBuilder.kt index 1beb5fc..740891f 100644 --- a/src/main/java/at/bitfire/vcard4android/contactrow/WebsiteBuilder.kt +++ b/src/main/java/at/bitfire/vcard4android/contactrow/WebsiteBuilder.kt @@ -11,8 +11,8 @@ import at.bitfire.vcard4android.Contact import at.bitfire.vcard4android.property.CustomType import java.util.* -class WebsiteBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) - : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact) { +class WebsiteBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) + : DataRowBuilder(Factory.mimeType(), dataRowUri, rawContactId, contact, readOnly) { override fun build(): List<BatchOperation.CpoBuilder> { val result = LinkedList<BatchOperation.CpoBuilder>() @@ -48,8 +48,8 @@ class WebsiteBuilder(dataRowUri: Uri, rawContactId: Long?, contact: Contact) object Factory: DataRowBuilder.Factory<WebsiteBuilder> { override fun mimeType() = Website.CONTENT_ITEM_TYPE - override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact) = - WebsiteBuilder(dataRowUri, rawContactId, contact) + override fun newInstance(dataRowUri: Uri, rawContactId: Long?, contact: Contact, readOnly: Boolean) = + WebsiteBuilder(dataRowUri, rawContactId, contact, readOnly) } }
\ No newline at end of file |