Revert: Import: always import, don't try to find duplicates based on UID

This is somehow a revert of 536bef9815.

It was initially implemented as a workaround for #24, but having
improved all the clients to deal with weird UIDs and matured a lot since
then, I believe this is no longer an issue.

Would have to keep a close eye for regressions.
pull/96/head
Tom Hacohen 5 years ago
parent bbd40e0255
commit 1f9e7fa6a6

@ -31,6 +31,8 @@ import java.io.FileNotFoundException
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import com.etesync.syncadapter.resource.LocalEvent
class ImportFragment : DialogFragment() {
@ -247,9 +249,15 @@ class ImportFragment : DialogFragment() {
for (event in events) {
try {
val localEvent = LocalEvent(localCalendar, event, event.uid, null)
localEvent.addAsDirty()
result.added++
var localEvent = localCalendar.findByUid(event.uid!!)
if (localEvent != null) {
localEvent.updateAsDirty(event)
result.updated++
} else {
localEvent = LocalEvent(localCalendar, event, event.uid, null)
localEvent.addAsDirty()
result.added++
}
} catch (e: CalendarStorageException) {
e.printStackTrace()
}
@ -285,9 +293,15 @@ class ImportFragment : DialogFragment() {
for (task in tasks) {
try {
val localTask = LocalTask(localTaskList, task, task.uid, null)
localTask.addAsDirty()
result.added++
var localTask = localTaskList.findByUid(task.uid!!)
if (localTask != null) {
localTask.updateAsDirty(task)
result.updated++
} else {
localTask = LocalTask(localTaskList, task, task.uid, null)
localTask.addAsDirty()
result.added++
}
} catch (e: CalendarStorageException) {
e.printStackTrace()
}
@ -295,7 +309,7 @@ class ImportFragment : DialogFragment() {
entryProcessed()
}
} else if (info.type == CollectionInfo.Type.ADDRESS_BOOK) {
val oldUidToNewId = HashMap<String?, Long>()
val uidToLocalId = HashMap<String?, Long>()
val downloader = ContactsSyncManager.ResourceDownloader(context)
val contacts = Contact.fromReader(importReader, downloader)
@ -317,10 +331,18 @@ class ImportFragment : DialogFragment() {
for (contact in contacts.filter { contact -> !contact.group }) {
try {
val localContact = LocalContact(localAddressBook, contact, null, null)
localContact.createAsDirty()
// If uid is null, so be it. We won't be able to process the group later.
oldUidToNewId[contact.uid] = localContact.id!!
var localContact = localAddressBook.findByUid(contact.uid!!) as LocalContact?
if (localContact != null) {
localContact.updateAsDirty(contact)
result.updated++
} else {
localContact = LocalContact(localAddressBook, contact, contact.uid, null)
localContact.createAsDirty()
result.added++
}
uidToLocalId[contact.uid] = localContact.id!!
// Apply categories
val batch = BatchOperation(localAddressBook.provider!!)
@ -339,13 +361,21 @@ class ImportFragment : DialogFragment() {
for (contact in contacts.filter { contact -> contact.group }) {
try {
val localGroup = LocalGroup(localAddressBook, contact, null, null)
val memberIds = contact.members.mapNotNull { memberUid ->
oldUidToNewId[memberUid]
uidToLocalId[memberUid]
}
localGroup.createAsDirty(memberIds)
result.added++
val group = contact
var localGroup: LocalGroup? = localAddressBook.findByUid(group.uid!!) as LocalGroup?
if (localGroup != null) {
localGroup.updateAsDirty(group, memberIds)
result.updated++
} else {
localGroup = LocalGroup(localAddressBook, group, group.uid, null)
localGroup.createAsDirty(memberIds)
result.added++
}
} catch (e: ContactsStorageException) {
e.printStackTrace()
}

@ -22,6 +22,7 @@ import com.etesync.syncadapter.model.CollectionInfo
import com.etesync.syncadapter.resource.LocalCalendar
import com.etesync.syncadapter.resource.LocalEvent
class LocalCalendarImportFragment : ListFragment() {
private lateinit var account: Account
@ -209,9 +210,21 @@ class LocalCalendarImportFragment : ListFragment() {
for (currentLocalEvent in localEvents) {
val event = currentLocalEvent.event
try {
val localEvent = LocalEvent(localCalendar!!, event!!, null, null)
localEvent.addAsDirty()
result.added++
localCalendar!!
var localEvent = if (event == null || event.uid == null)
null
else
localCalendar.findByUid(event.uid!!)
if (localEvent != null) {
localEvent.updateAsDirty(event!!)
result.updated++
} else {
localEvent = LocalEvent(localCalendar, event!!, event.uid, null)
localEvent.addAsDirty()
result.added++
}
} catch (e: CalendarStorageException) {
e.printStackTrace()

@ -29,7 +29,7 @@ import com.etesync.syncadapter.resource.LocalAddressBook
import com.etesync.syncadapter.resource.LocalContact
import com.etesync.syncadapter.resource.LocalGroup
import java.util.*
import kotlin.collections.HashMap
class LocalContactImportFragment : Fragment() {
@ -147,10 +147,22 @@ class LocalContactImportFragment : Fragment() {
val contact = currentLocalContact.contact
try {
val localContact = LocalContact(addressBook, contact!!, null, null)
localContact.createAsDirty()
contact!!
var localContact: LocalContact? = if (contact.uid == null)
null
else
addressBook.findByUid(contact.uid!!) as LocalContact
if (localContact != null) {
localContact.updateAsDirty(contact)
result.updated++
} else {
localContact = LocalContact(addressBook, contact, contact.uid, null)
localContact.createAsDirty()
result.added++
}
oldIdToNewId[currentLocalContact.id!!] = localContact.id!!
result.added++
} catch (e: ContactsStorageException) {
e.printStackTrace()
result.e = e
@ -162,13 +174,24 @@ class LocalContactImportFragment : Fragment() {
val group = currentLocalGroup.contact
try {
val localGroup = LocalGroup(addressBook, group!!, null, null)
val members = currentLocalGroup.getMembers().map { it ->
val members = currentLocalGroup.getMembers().map {
oldIdToNewId[it]!!
}
localGroup.createAsDirty(members)
result.added++
group!!
var localGroup: LocalGroup? = if (group.uid == null)
null
else
addressBook.findByUid(group.uid!!) as LocalGroup
if (localGroup != null) {
localGroup.updateAsDirty(group, members)
result.updated++
} else {
localGroup = LocalGroup(addressBook, group, group.uid, null)
localGroup.createAsDirty(members)
result.added++
}
} catch (e: ContactsStorageException) {
e.printStackTrace()
result.e = e

Loading…
Cancel
Save