Skip to content

Commit

Permalink
Remove processed entries
Browse files Browse the repository at this point in the history
  • Loading branch information
39aldo39 committed Dec 23, 2021
1 parent c783362 commit f9a9c3d
Show file tree
Hide file tree
Showing 16 changed files with 7 additions and 134 deletions.
3 changes: 0 additions & 3 deletions app/src/main/java/org/decsync/cc/CollectionWorker.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.decsync.cc

import android.accounts.Account
import android.app.PendingIntent
import android.content.ContentProviderClient
import android.content.Context
Expand Down Expand Up @@ -83,7 +82,6 @@ abstract class CollectionWorker<Item>(val context: Context, params: WorkerParame

val decsync = getDecsync(info, context, nativeFile)
val extra = Extra(info, context, provider)
setNumProcessedEntries(extra, 0)
decsync.initStoredEntries()
decsync.executeStoredEntriesForPathPrefix(listOf("resources"), extra)
PrefUtils.putSyncKind(context, info, SYNC_KIND_STANDARD)
Expand Down Expand Up @@ -112,7 +110,6 @@ abstract class CollectionWorker<Item>(val context: Context, params: WorkerParame
}
writeItemDecsync(decsync, item)
writeItemAndroid(info, provider, item)
addToNumProcessedEntries(extra, 1)
}

PrefUtils.putSyncKind(context, info, SYNC_KIND_STANDARD)
Expand Down
79 changes: 0 additions & 79 deletions app/src/main/java/org/decsync/cc/DecsyncUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,13 @@

package org.decsync.cc

import android.accounts.AccountManager
import android.content.ContentProviderClient
import android.content.ContentValues
import android.content.Context
import android.provider.CalendarContract
import org.decsync.cc.calendars.CalendarsListeners
import org.decsync.cc.calendars.CalendarsUtils
import org.decsync.cc.contacts.ContactsListeners
import org.decsync.cc.contacts.syncAdapterUri
import org.decsync.cc.tasks.TasksListeners
import org.decsync.library.*

const val KEY_NUM_PROCESSED_ENTRIES = "num-processed-entries"

@ExperimentalStdlibApi
data class Extra(
val info: CollectionInfo,
Expand All @@ -56,76 +49,4 @@ fun getDecsync(info: CollectionInfo, context: Context, decsyncDir: NativeFile):
}
decsync.addListener(listOf("resources"), resourcesListener)
return decsync
}

@ExperimentalStdlibApi
fun addToNumProcessedEntries(extra: Extra, add: Int) {
val addFunction = when (extra.info) {
is AddressBookInfo -> ::addToNumProcessedEntriesContacts
is CalendarInfo -> ::addToNumProcessedEntriesCalendar
is TaskListInfo -> ::addToNumProcessedEntriesTasks
}
addFunction(extra, add)
}

@ExperimentalStdlibApi
private fun addToNumProcessedEntriesContacts(extra: Extra, add: Int) {
val accountManager = AccountManager.get(extra.context)
val account = extra.info.getAccount(extra.context)
val count = (accountManager.getUserData(account, KEY_NUM_PROCESSED_ENTRIES) ?: return).toInt()
accountManager.setUserData(account, KEY_NUM_PROCESSED_ENTRIES, (count + add).toString())
}

@ExperimentalStdlibApi
private fun addToNumProcessedEntriesCalendar(extra: Extra, add: Int) {
val account = extra.info.getAccount(extra.context)
val count = extra.provider.query(syncAdapterUri(account, CalendarContract.Calendars.CONTENT_URI),
arrayOf(CalendarsUtils.COLUMN_NUM_PROCESSED_ENTRIES), "${CalendarContract.Calendars.NAME}=?",
arrayOf(extra.info.id), null)!!.use { cursor ->
if (cursor.moveToFirst() && !cursor.isNull(0)) cursor.getInt(0) else null
} ?: return
val values = ContentValues()
values.put(CalendarsUtils.COLUMN_NUM_PROCESSED_ENTRIES, count + add)
extra.provider.update(syncAdapterUri(account, CalendarContract.Calendars.CONTENT_URI),
values, "${CalendarContract.Calendars.NAME}=?", arrayOf(extra.info.id))
}

@ExperimentalStdlibApi
private fun addToNumProcessedEntriesTasks(extra: Extra, add: Int) {
val info = extra.info as TaskListInfo
val taskList = info.getTaskList(extra.context) ?: return
taskList.numProcessedEntries += add
}

@ExperimentalStdlibApi
fun setNumProcessedEntries(extra: Extra, count: Int) {
val setFunction = when (extra.info) {
is AddressBookInfo -> ::setNumProcessedEntriesContacts
is CalendarInfo -> ::setNumProcessedEntriesCalendar
is TaskListInfo -> ::setNumProcessedEntriesTasks
}
setFunction(extra, count)
}

@ExperimentalStdlibApi
private fun setNumProcessedEntriesContacts(extra: Extra, count: Int) {
val accountManager = AccountManager.get(extra.context)
val account = extra.info.getAccount(extra.context)
accountManager.setUserData(account, KEY_NUM_PROCESSED_ENTRIES, count.toString())
}

@ExperimentalStdlibApi
private fun setNumProcessedEntriesCalendar(extra: Extra, count: Int) {
val account = extra.info.getAccount(extra.context)
val values = ContentValues()
values.put(CalendarsUtils.COLUMN_NUM_PROCESSED_ENTRIES, count)
extra.provider.update(syncAdapterUri(account, CalendarContract.Calendars.CONTENT_URI),
values, "${CalendarContract.Calendars.NAME}=?", arrayOf(extra.info.id))
}

@ExperimentalStdlibApi
private fun setNumProcessedEntriesTasks(extra: Extra, count: Int) {
val info = extra.info as TaskListInfo
val taskList = info.getTaskList(extra.context) ?: return
taskList.numProcessedEntries = count
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import at.bitfire.ical4android.*
import kotlinx.serialization.json.*
import org.decsync.cc.Extra
import org.decsync.cc.Utils
import org.decsync.cc.addToNumProcessedEntries
import org.decsync.cc.contacts.syncAdapterUri
import org.decsync.library.Decsync
import java.io.StringReader
Expand Down Expand Up @@ -108,7 +107,6 @@ object CalendarsListeners {
val values = ContentValues()
values.put(Events._ID, id)
LocalEvent(calendar, values).delete()
addToNumProcessedEntries(extra, -1)
}
}
else -> {
Expand All @@ -130,7 +128,6 @@ object CalendarsListeners {
if (id == null) {
Log.d(TAG, "Add event $uid")
LocalEvent(calendar, event).add()
addToNumProcessedEntries(extra, 1)
} else {
Log.d(TAG, "Update event $uid")
val values = ContentValues()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import at.bitfire.ical4android.AndroidEvent
@ExperimentalStdlibApi
object CalendarsUtils {
const val COLUMN_OLD_COLOR = CalendarContract.Calendars.CAL_SYNC1
const val COLUMN_NUM_PROCESSED_ENTRIES = CalendarContract.Calendars.CAL_SYNC2

fun addColor(values: ContentValues, color: Int) {
values.put(CalendarContract.Calendars.CALENDAR_COLOR, color)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,25 +99,20 @@ class CalendarsWorker(context: Context, params: WorkerParameters) : CollectionWo
val values = ContentValues()
values.put(Events._ID, id)
LocalEvent(calendar, values).writeDeleteAction(decsync)
addToNumProcessedEntries(extra, -1)
}
}

// Detect dirty events
provider.query(syncAdapterUri(account, Events.CONTENT_URI),
arrayOf(Events._ID, Events.ORIGINAL_ID, Events._SYNC_ID),
arrayOf(Events._ID, Events.ORIGINAL_ID),
"${Events.CALENDAR_ID}=? AND ${Events.DIRTY}=1",
arrayOf(calendarId.toString()), null)!!.use { cursor ->
while (cursor.moveToNext()) {
val id = cursor.getString(1) ?: cursor.getString(0)
val newEvent = cursor.isNull(1) && cursor.isNull(2)

val values = ContentValues()
values.put(Events._ID, id)
LocalEvent(calendar, values).writeUpdateAction(decsync)
if (newEvent) {
addToNumProcessedEntries(extra, 1)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ object ContactsListeners {
val values = ContentValues()
values.put(RawContacts._ID, id)
LocalContact(addressBook, values).delete()
addToNumProcessedEntries(extra, -1)
}
}
else -> {
Expand All @@ -122,7 +121,6 @@ object ContactsListeners {
if (id == null) {
Log.d(TAG, "Add contact $uid")
LocalContact(addressBook, contact, uid, bookId).add()
addToNumProcessedEntries(extra, 1)
} else {
Log.d(TAG, "Update contact $uid")
val values = ContentValues()
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/org/decsync/cc/contacts/ContactsUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ import android.os.Build
import android.os.Bundle
import android.provider.ContactsContract
import org.decsync.cc.AddressBookInfo
import org.decsync.cc.CollectionInfo
import org.decsync.cc.Extra
import org.decsync.cc.KEY_NUM_PROCESSED_ENTRIES

@ExperimentalStdlibApi
object ContactsUtils {
Expand All @@ -25,7 +23,6 @@ object ContactsUtils {
accountManager.setUserData(newAccount, AddressBookInfo.KEY_DECSYNC_DIR_ID, newInfo.decsyncDir.id.toString()) // Separate, since the account may exist
accountManager.setUserData(newAccount, AddressBookInfo.KEY_COLLECTION_ID, newInfo.id)
accountManager.setUserData(newAccount, AddressBookInfo.KEY_NAME, newInfo.name)
accountManager.setUserData(newAccount, KEY_NUM_PROCESSED_ENTRIES, null)
ContentResolver.setSyncAutomatically(newAccount, ContactsContract.AUTHORITY, true)
ContentResolver.addPeriodicSync(newAccount, ContactsContract.AUTHORITY, Bundle(), 60 * 60)

Expand Down
4 changes: 0 additions & 4 deletions app/src/main/java/org/decsync/cc/contacts/ContactsWorker.kt
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ class ContactsWorker(context: Context, params: WorkerParameters) : CollectionWor
values.put(RawContacts._ID, id)
values.put(LocalContact.COLUMN_LOCAL_UID, uid)
LocalContact(addressBook, values).writeDeleteAction(decsync)
addToNumProcessedEntries(extra, -1)
}
}

Expand All @@ -102,9 +101,6 @@ class ContactsWorker(context: Context, params: WorkerParameters) : CollectionWor
values.put(LocalContact.COLUMN_LOCAL_UID, uid)
values.put(LocalContact.COLUMN_LOCAL_BOOKID, info.id)
LocalContact(addressBook, values).writeUpdateAction(decsync)
if (newContact) {
addToNumProcessedEntries(extra, 1)
}
}
}

Expand Down
15 changes: 0 additions & 15 deletions app/src/main/java/org/decsync/cc/tasks/LocalTaskList.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,6 @@ class LocalTaskList private constructor(
return null
}

var numProcessedEntries: Int
get() {
provider.client.query(taskListSyncUri(), arrayOf(TasksUtils.COLUMN_NUM_PROCESSED_ENTRIES),
null, null, null)?.use { cursor ->
if (cursor.moveToNext())
return cursor.getInt(0)
}
return 0
}
set(value) {
val values = ContentValues()
values.put(TasksUtils.COLUMN_NUM_PROCESSED_ENTRIES, value)
provider.client.update(taskListSyncUri(), values, null, null)
}

companion object {
fun create(account: Account, provider: TaskProvider, info: TaskListInfo): Uri {
val color = info.color ?: Color.BLACK
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/org/decsync/cc/tasks/TasksListeners.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import kotlinx.serialization.json.contentOrNull
import kotlinx.serialization.json.jsonPrimitive
import org.decsync.cc.Extra
import org.decsync.cc.TaskListInfo
import org.decsync.cc.addToNumProcessedEntries
import org.decsync.library.Decsync
import org.dmfs.tasks.contract.TaskContract
import java.io.StringReader
Expand Down Expand Up @@ -85,7 +84,6 @@ object TasksListeners {
} else {
Log.d(TAG, "Delete task $uid")
storedTask.delete()
addToNumProcessedEntries(extra, -1)
}
}
else -> {
Expand All @@ -107,7 +105,6 @@ object TasksListeners {
if (storedTask == null) {
Log.d(TAG, "Add task $uid")
LocalTask(taskList, task).add()
addToNumProcessedEntries(extra, 1)
} else {
Log.d(TAG, "Update task $uid")
storedTask.update(task)
Expand Down
1 change: 0 additions & 1 deletion app/src/main/java/org/decsync/cc/tasks/TasksUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@ import org.dmfs.tasks.contract.TaskContract

object TasksUtils {
const val COLUMN_OLD_COLOR = TaskContract.TaskLists.SYNC1
const val COLUMN_NUM_PROCESSED_ENTRIES = TaskContract.TaskLists.SYNC2
const val COLUMN_IS_NEW_TASK = TaskContract.Tasks.SYNC1
}
3 changes: 0 additions & 3 deletions app/src/main/java/org/decsync/cc/tasks/TasksWorker.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.decsync.cc.tasks

import android.Manifest
import android.accounts.Account
import android.accounts.AccountManager
import android.content.*
import android.content.pm.PackageManager
Expand Down Expand Up @@ -69,7 +68,6 @@ class TasksWorker(context: Context, params: WorkerParameters) : CollectionWorker
val deletedTasks = taskList.queryTasks(TaskContract.Tasks._DELETED, null)
for (task in deletedTasks) {
task.writeDeleteAction(decsync)
addToNumProcessedEntries(extra, -1)
}

// Detect dirty tasks
Expand All @@ -79,7 +77,6 @@ class TasksWorker(context: Context, params: WorkerParameters) : CollectionWorker
val isNewTask = task.isNewTask
if (isNewTask) {
task.isNewTask = false
addToNumProcessedEntries(extra, 1)
}
}

Expand Down
11 changes: 3 additions & 8 deletions app/src/main/java/org/decsync/cc/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1061,7 +1061,6 @@ class MainActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelected
}
R.id.entries_count -> {
var androidEntries = 0
var processedEntries = 0

val permissions = mutableListOf<String>()
for (permission in info.getPermissions(this)) {
Expand All @@ -1074,8 +1073,6 @@ class MainActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelected
try {
when (info) {
is AddressBookInfo -> {
processedEntries = AccountManager.get(this).getUserData(info.getAccount(this), KEY_NUM_PROCESSED_ENTRIES)?.toInt()
?: 0
provider.query(syncAdapterUri(info.getAccount(this), RawContacts.CONTENT_URI),
emptyArray(), "${RawContacts.DELETED}=0",
null, null)!!.use { cursor ->
Expand All @@ -1084,10 +1081,9 @@ class MainActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelected
}
is CalendarInfo -> {
val calendarId = provider.query(syncAdapterUri(info.getAccount(this), Calendars.CONTENT_URI),
arrayOf(Calendars._ID, CalendarsUtils.COLUMN_NUM_PROCESSED_ENTRIES), "${Calendars.NAME}=?",
arrayOf(Calendars._ID), "${Calendars.NAME}=?",
arrayOf(info.id), null)!!.use { calCursor ->
if (calCursor.moveToFirst()) {
processedEntries = if (calCursor.isNull(1)) 0 else calCursor.getInt(1)
calCursor.getLong(0)
} else {
null
Expand All @@ -1101,7 +1097,6 @@ class MainActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelected
}
is TaskListInfo -> {
val taskList = info.getTaskList(this)
processedEntries = taskList?.numProcessedEntries ?: 0
androidEntries = taskList?.queryTasks("${TaskContract.Tasks._DELETED}=0", null)?.size
?: 0
}
Expand All @@ -1118,7 +1113,7 @@ class MainActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelected

val dialog = AlertDialog.Builder(this)
.setTitle(R.string.entries_count_title)
.setMessage(getString(R.string.entries_count_message, androidEntries, processedEntries, ""))
.setMessage(getString(R.string.entries_count_message, androidEntries, ""))
.setNeutralButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss()
}
Expand All @@ -1143,7 +1138,7 @@ class MainActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelected
} else {
"-"
}
dialog.setMessage(getString(R.string.entries_count_message, androidEntries, processedEntries, decsyncCount))
dialog.setMessage(getString(R.string.entries_count_message, androidEntries, decsyncCount))
}
dialog.setOnDismissListener {
countJob.cancel()
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<string name="delete_collection_title">¿Estás seguro que quieres borrar la colección \'%s\'?</string>
<string name="entries_count">Entradas contadas</string>
<string name="entries_count_title">Entradas contadas</string>
<string name="entries_count_message">Entradas Android: %d\nEntradas procesadas: %d\nEntradas DecSync: %s</string>
<string name="entries_count_message">Entradas Android: %d\nEntradas DecSync: %s</string>
<string name="account_settings">Ajustes</string>

<!-- Notifications -->
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
<string name="choose_task_app_title">安装了多款任务应用程序。 选择一款来使用。</string>
<string name="entries_count">条目数</string>
<string name="entries_count_title">条目数</string>
<string name="entries_count_message">安卓条目: %d\n已处理条目: %d\nDecSync 条目: %s</string>
<string name="entries_count_message">安卓条目: %d\nDecSync 条目: %s</string>
<string name="manage_decsync_data">管理 DecSync 数据</string>
<string name="account_settings">设置</string>
<string name="account_collection_name_default">个人</string>
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
<string name="choose_task_app_title">Multiple task apps installed. Choose one to use.</string>
<string name="entries_count">Entries count</string>
<string name="entries_count_title">Entries count</string>
<string name="entries_count_message">Android entries: %d\nProcessed entries: %d\nDecSync entries: %s</string>
<string name="entries_count_message">Android entries: %d\nDecSync entries: %s</string>
<string name="manage_decsync_data">Manage DecSync data</string>
<string name="account_settings">Settings</string>
<string name="account_collection_name_default">Personal</string>
Expand Down

0 comments on commit f9a9c3d

Please sign in to comment.