mirror of
https://github.com/etesync/android
synced 2025-05-29 12:18:54 +00:00
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.
This commit is contained in:
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]!!
|
||||
}
|
||||
group!!
|
||||
|
||||
localGroup.createAsDirty(members)
|
||||
result.added++
|
||||
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…
Reference in New Issue
Block a user