mirror of
https://github.com/etesync/android
synced 2025-05-29 20:28:48 +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.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
|
import com.etesync.syncadapter.resource.LocalEvent
|
||||||
|
|
||||||
|
|
||||||
class ImportFragment : DialogFragment() {
|
class ImportFragment : DialogFragment() {
|
||||||
|
|
||||||
@ -247,9 +249,15 @@ class ImportFragment : DialogFragment() {
|
|||||||
|
|
||||||
for (event in events) {
|
for (event in events) {
|
||||||
try {
|
try {
|
||||||
val localEvent = LocalEvent(localCalendar, event, event.uid, null)
|
var localEvent = localCalendar.findByUid(event.uid!!)
|
||||||
localEvent.addAsDirty()
|
if (localEvent != null) {
|
||||||
result.added++
|
localEvent.updateAsDirty(event)
|
||||||
|
result.updated++
|
||||||
|
} else {
|
||||||
|
localEvent = LocalEvent(localCalendar, event, event.uid, null)
|
||||||
|
localEvent.addAsDirty()
|
||||||
|
result.added++
|
||||||
|
}
|
||||||
} catch (e: CalendarStorageException) {
|
} catch (e: CalendarStorageException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
@ -285,9 +293,15 @@ class ImportFragment : DialogFragment() {
|
|||||||
|
|
||||||
for (task in tasks) {
|
for (task in tasks) {
|
||||||
try {
|
try {
|
||||||
val localTask = LocalTask(localTaskList, task, task.uid, null)
|
var localTask = localTaskList.findByUid(task.uid!!)
|
||||||
localTask.addAsDirty()
|
if (localTask != null) {
|
||||||
result.added++
|
localTask.updateAsDirty(task)
|
||||||
|
result.updated++
|
||||||
|
} else {
|
||||||
|
localTask = LocalTask(localTaskList, task, task.uid, null)
|
||||||
|
localTask.addAsDirty()
|
||||||
|
result.added++
|
||||||
|
}
|
||||||
} catch (e: CalendarStorageException) {
|
} catch (e: CalendarStorageException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
@ -295,7 +309,7 @@ class ImportFragment : DialogFragment() {
|
|||||||
entryProcessed()
|
entryProcessed()
|
||||||
}
|
}
|
||||||
} else if (info.type == CollectionInfo.Type.ADDRESS_BOOK) {
|
} else if (info.type == CollectionInfo.Type.ADDRESS_BOOK) {
|
||||||
val oldUidToNewId = HashMap<String?, Long>()
|
val uidToLocalId = HashMap<String?, Long>()
|
||||||
val downloader = ContactsSyncManager.ResourceDownloader(context)
|
val downloader = ContactsSyncManager.ResourceDownloader(context)
|
||||||
val contacts = Contact.fromReader(importReader, downloader)
|
val contacts = Contact.fromReader(importReader, downloader)
|
||||||
|
|
||||||
@ -317,10 +331,18 @@ class ImportFragment : DialogFragment() {
|
|||||||
|
|
||||||
for (contact in contacts.filter { contact -> !contact.group }) {
|
for (contact in contacts.filter { contact -> !contact.group }) {
|
||||||
try {
|
try {
|
||||||
val localContact = LocalContact(localAddressBook, contact, null, null)
|
var localContact = localAddressBook.findByUid(contact.uid!!) as LocalContact?
|
||||||
localContact.createAsDirty()
|
|
||||||
// If uid is null, so be it. We won't be able to process the group later.
|
if (localContact != null) {
|
||||||
oldUidToNewId[contact.uid] = localContact.id!!
|
localContact.updateAsDirty(contact)
|
||||||
|
result.updated++
|
||||||
|
} else {
|
||||||
|
localContact = LocalContact(localAddressBook, contact, contact.uid, null)
|
||||||
|
localContact.createAsDirty()
|
||||||
|
result.added++
|
||||||
|
}
|
||||||
|
|
||||||
|
uidToLocalId[contact.uid] = localContact.id!!
|
||||||
|
|
||||||
// Apply categories
|
// Apply categories
|
||||||
val batch = BatchOperation(localAddressBook.provider!!)
|
val batch = BatchOperation(localAddressBook.provider!!)
|
||||||
@ -339,13 +361,21 @@ class ImportFragment : DialogFragment() {
|
|||||||
|
|
||||||
for (contact in contacts.filter { contact -> contact.group }) {
|
for (contact in contacts.filter { contact -> contact.group }) {
|
||||||
try {
|
try {
|
||||||
val localGroup = LocalGroup(localAddressBook, contact, null, null)
|
|
||||||
val memberIds = contact.members.mapNotNull { memberUid ->
|
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) {
|
} catch (e: ContactsStorageException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import com.etesync.syncadapter.model.CollectionInfo
|
|||||||
import com.etesync.syncadapter.resource.LocalCalendar
|
import com.etesync.syncadapter.resource.LocalCalendar
|
||||||
import com.etesync.syncadapter.resource.LocalEvent
|
import com.etesync.syncadapter.resource.LocalEvent
|
||||||
|
|
||||||
|
|
||||||
class LocalCalendarImportFragment : ListFragment() {
|
class LocalCalendarImportFragment : ListFragment() {
|
||||||
|
|
||||||
private lateinit var account: Account
|
private lateinit var account: Account
|
||||||
@ -209,9 +210,21 @@ class LocalCalendarImportFragment : ListFragment() {
|
|||||||
for (currentLocalEvent in localEvents) {
|
for (currentLocalEvent in localEvents) {
|
||||||
val event = currentLocalEvent.event
|
val event = currentLocalEvent.event
|
||||||
try {
|
try {
|
||||||
val localEvent = LocalEvent(localCalendar!!, event!!, null, null)
|
localCalendar!!
|
||||||
localEvent.addAsDirty()
|
|
||||||
result.added++
|
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) {
|
} catch (e: CalendarStorageException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ import com.etesync.syncadapter.resource.LocalAddressBook
|
|||||||
import com.etesync.syncadapter.resource.LocalContact
|
import com.etesync.syncadapter.resource.LocalContact
|
||||||
import com.etesync.syncadapter.resource.LocalGroup
|
import com.etesync.syncadapter.resource.LocalGroup
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.HashMap
|
|
||||||
|
|
||||||
class LocalContactImportFragment : Fragment() {
|
class LocalContactImportFragment : Fragment() {
|
||||||
|
|
||||||
@ -147,10 +147,22 @@ class LocalContactImportFragment : Fragment() {
|
|||||||
val contact = currentLocalContact.contact
|
val contact = currentLocalContact.contact
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val localContact = LocalContact(addressBook, contact!!, null, null)
|
contact!!
|
||||||
localContact.createAsDirty()
|
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!!
|
oldIdToNewId[currentLocalContact.id!!] = localContact.id!!
|
||||||
result.added++
|
|
||||||
} catch (e: ContactsStorageException) {
|
} catch (e: ContactsStorageException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
result.e = e
|
result.e = e
|
||||||
@ -162,13 +174,24 @@ class LocalContactImportFragment : Fragment() {
|
|||||||
val group = currentLocalGroup.contact
|
val group = currentLocalGroup.contact
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val localGroup = LocalGroup(addressBook, group!!, null, null)
|
val members = currentLocalGroup.getMembers().map {
|
||||||
val members = currentLocalGroup.getMembers().map { it ->
|
|
||||||
oldIdToNewId[it]!!
|
oldIdToNewId[it]!!
|
||||||
}
|
}
|
||||||
|
group!!
|
||||||
|
|
||||||
localGroup.createAsDirty(members)
|
var localGroup: LocalGroup? = if (group.uid == null)
|
||||||
result.added++
|
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) {
|
} catch (e: ContactsStorageException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
result.e = e
|
result.e = e
|
||||||
|
Loading…
Reference in New Issue
Block a user