Commit d0adb639 authored by Ricki Hirner's avatar Ricki Hirner

Move syncAdapterUri to TaskProvider

parent cf68aac5
......@@ -51,11 +51,7 @@ public class AndroidTaskTest extends InstrumentationTestCase {
// helpers
private Uri syncAdapterURI(Uri uri) {
return uri.buildUpon()
.appendQueryParameter(TaskContract.ACCOUNT_TYPE, testAccount.type)
.appendQueryParameter(TaskContract.ACCOUNT_NAME, testAccount.name)
.appendQueryParameter(TaskContract.CALLER_IS_SYNCADAPTER, "true")
.build();
return TaskProvider.syncAdapterUri(uri, testAccount);
}
......
......@@ -159,7 +159,7 @@ abstract class AndroidTask(
@Throws(CalendarStorageException::class)
fun add(): Uri? {
val batch = BatchOperation(taskList.provider.client)
val builder = ContentProviderOperation.newInsert(taskList.syncAdapterURI(taskList.provider.tasksUri()))
val builder = ContentProviderOperation.newInsert(taskList.tasksSyncUri())
buildTask(builder, false)
batch.enqueue(BatchOperation.Operation(builder))
batch.commit()
......@@ -171,7 +171,7 @@ abstract class AndroidTask(
@Throws(CalendarStorageException::class)
fun update(task: Task) {
this.task = task;
this.task = task
val batch = BatchOperation(taskList.provider.client)
val builder = ContentProviderOperation.newUpdate(taskSyncURI())
......@@ -282,7 +282,7 @@ abstract class AndroidTask(
protected fun taskSyncURI(): Uri {
val id = requireNotNull(id)
return taskList.syncAdapterURI(ContentUris.withAppendedId(taskList.provider.tasksUri(), id))
return ContentUris.withAppendedId(taskList.tasksSyncUri(), id)
}
......
......@@ -70,7 +70,7 @@ abstract class AndroidTaskList<out T: AndroidTask>(
Constants.log.info("Creating local task list: " + info.toString())
try {
return provider.client.insert(syncAdapterURI(provider.taskListsUri(), account), info)
return provider.client.insert(TaskProvider.syncAdapterUri(provider.taskListsUri(), account), info)
} catch(e: Exception) {
throw CalendarStorageException("Couldn't create local task list", e)
}
......@@ -80,7 +80,7 @@ abstract class AndroidTaskList<out T: AndroidTask>(
@Throws(FileNotFoundException::class, CalendarStorageException::class)
fun<T: AndroidTaskList<AndroidTask>> findByID(account: Account, provider: TaskProvider, factory: AndroidTaskListFactory<T>, id: Long): T {
try {
provider.client.query(syncAdapterURI(ContentUris.withAppendedId(provider.taskListsUri(), id), account), null, null, null, null)?.use { cursor ->
provider.client.query(TaskProvider.syncAdapterUri(ContentUris.withAppendedId(provider.taskListsUri(), id), account), null, null, null, null)?.use { cursor ->
if (cursor.moveToNext()) {
val taskList = factory.newInstance(account, provider, id)
val values = ContentValues(cursor.columnCount)
......@@ -100,7 +100,7 @@ abstract class AndroidTaskList<out T: AndroidTask>(
fun<T: AndroidTaskList<AndroidTask>> find(account: Account, provider: TaskProvider, factory: AndroidTaskListFactory<T>, where: String?, whereArgs: Array<String>?): List<T> {
val taskLists = LinkedList<T>()
try {
provider.client.query(syncAdapterURI(provider.taskListsUri(), account), null, where, whereArgs, null)?.use { cursor ->
provider.client.query(TaskProvider.syncAdapterUri(provider.taskListsUri(), account), null, where, whereArgs, null)?.use { cursor ->
while (cursor.moveToNext()) {
val values = ContentValues(cursor.columnCount)
DatabaseUtils.cursorRowToContentValues(cursor, values)
......@@ -115,13 +115,6 @@ abstract class AndroidTaskList<out T: AndroidTask>(
return taskLists
}
@JvmStatic
fun syncAdapterURI(uri: Uri, account: Account) = uri.buildUpon()
.appendQueryParameter(TaskContract.ACCOUNT_NAME, account.name)
.appendQueryParameter(TaskContract.ACCOUNT_TYPE, account.type)
.appendQueryParameter(TaskContract.CALLER_IS_SYNCADAPTER, "true")
.build()!!
}
protected fun populate(values: ContentValues) {
......@@ -159,7 +152,7 @@ abstract class AndroidTaskList<out T: AndroidTask>(
val tasks = LinkedList<T>()
try {
provider.client.query(
syncAdapterURI(provider.tasksUri()),
tasksSyncUri(),
taskBaseInfoColumns(),
where, whereArgs, null)?.use { cursor ->
while (cursor.moveToNext()) {
......@@ -174,14 +167,10 @@ abstract class AndroidTaskList<out T: AndroidTask>(
return tasks
}
fun syncAdapterURI(uri: Uri) = uri.buildUpon()
.appendQueryParameter(TaskContract.ACCOUNT_NAME, account.name)
.appendQueryParameter(TaskContract.ACCOUNT_TYPE, account.type)
.appendQueryParameter(TaskContract.CALLER_IS_SYNCADAPTER, "true")
.build()!!
fun taskListSyncUri() =
syncAdapterURI(ContentUris.withAppendedId(provider.taskListsUri(), id))
TaskProvider.syncAdapterUri(ContentUris.withAppendedId(provider.taskListsUri(), id), account)
fun tasksSyncUri() =
TaskProvider.syncAdapterUri(provider.tasksUri(), account)
}
......@@ -8,10 +8,12 @@
package at.bitfire.ical4android
import android.accounts.Account
import android.annotation.SuppressLint
import android.content.ContentProviderClient
import android.content.Context
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import org.dmfs.tasks.contract.TaskContract
import java.io.Closeable
......@@ -40,9 +42,10 @@ class TaskProvider private constructor(
/**
* Acquires a content provider for a given task provider. The content provider will
* be released when the TaskProvider is closed.
* @param resolver will be used to acquire the content provider client
* @param context will be used to acquire the content provider client
* @param name task provider to acquire content provider for
* @return content provider for the given task provider (may be {@code null})
* @throws [ProviderTooOldException] if the tasks provider is installed, but doesn't meet the minimum version requirement
*/
@SuppressLint("Recycle")
@JvmStatic
......@@ -74,7 +77,7 @@ class TaskProvider private constructor(
/**
* Checks the version code of an installed tasks provider.
* @throws PackageManager.NameNotFoundException if the tasks provider is not installed
* @throws IllegalArgumentException if the tasks provider is installed, but doesn't meet the minimum version requirement
* @throws [ProviderTooOldException] if the tasks provider is installed, but doesn't meet the minimum version requirement
* */
private fun checkVersion(context: Context, name: ProviderName) {
// check whether package is available with required minimum version
......@@ -86,6 +89,13 @@ class TaskProvider private constructor(
}
}
@JvmStatic
fun syncAdapterUri(uri: Uri, account: Account) = uri.buildUpon()
.appendQueryParameter(TaskContract.ACCOUNT_NAME, account.name)
.appendQueryParameter(TaskContract.ACCOUNT_TYPE, account.type)
.appendQueryParameter(TaskContract.CALLER_IS_SYNCADAPTER, "true")
.build()!!
}
......@@ -93,6 +103,7 @@ class TaskProvider private constructor(
fun tasksUri() = TaskContract.Tasks.getContentUri(name.authority)!!
//fun alarmsUri() = TaskContract.Alarms.getContentUri(name.authority)!!
override fun close() {
if (Build.VERSION.SDK_INT >= 24)
client.close()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment