Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class AndroidCalendarTest {
assertNotNull(uri)

// query calendar
val calendar = AndroidCalendar.findByID(testAccount, provider, TestCalendar.Factory, ContentUris.parseId(uri))
val calendar = AndroidCalendar.findByID(testAccount, provider, ContentUris.parseId(uri))
assertNotNull(calendar)

// delete calendar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class AndroidEventTest {
private val tzDefault = DateUtils.ical4jTimeZone(tzIdDefault)

private lateinit var calendarUri: Uri
private lateinit var calendar: TestCalendar
private lateinit var calendar: AndroidCalendar

@Before
fun prepare() {
Expand Down Expand Up @@ -1439,7 +1439,7 @@ class AndroidEventTest {

private fun populateAndroidEvent(
automaticDates: Boolean,
destinationCalendar: TestCalendar = calendar,
destinationCalendar: AndroidCalendar = calendar,
asSyncAdapter: Boolean = false,
insertCallback: (id: Long) -> Unit = {},
extendedProperties: Map<String, String> = emptyMap(),
Expand Down Expand Up @@ -1481,7 +1481,7 @@ class AndroidEventTest {

private fun populateEvent(
automaticDates: Boolean,
destinationCalendar: TestCalendar = calendar,
destinationCalendar: AndroidCalendar = calendar,
asSyncAdapter: Boolean = false,
insertCallback: (id: Long) -> Unit = {},
extendedProperties: Map<String, String> = emptyMap(),
Expand Down Expand Up @@ -1943,7 +1943,7 @@ class AndroidEventTest {
}


private fun populateReminder(destinationCalendar: TestCalendar = calendar, builder: ContentValues.() -> Unit): VAlarm? {
private fun populateReminder(destinationCalendar: AndroidCalendar = calendar, builder: ContentValues.() -> Unit): VAlarm? {
populateEvent(true, destinationCalendar = destinationCalendar, insertCallback = { id ->
val reminderValues = ContentValues()
reminderValues.put(Reminders.EVENT_ID, id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,21 @@ import android.content.ContentUris
import android.content.ContentValues
import android.provider.CalendarContract
import at.bitfire.ical4android.AndroidCalendar
import at.bitfire.ical4android.AndroidCalendarFactory

class TestCalendar(
account: Account,
providerClient: ContentProviderClient,
id: Long
) : AndroidCalendar(account, providerClient, id) {
object TestCalendar {

companion object {
fun findOrCreate(account: Account, provider: ContentProviderClient): TestCalendar {
val calendars = AndroidCalendar.find(account, provider, Factory, null, null)
return if (calendars.isEmpty()) {
val values = ContentValues(3)
values.put(CalendarContract.Calendars.NAME, "TestCalendar")
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, "ical4android Test Calendar")
values.put(CalendarContract.Calendars.ALLOWED_REMINDERS, CalendarContract.Reminders.METHOD_DEFAULT)
val uri = AndroidCalendar.create(account, provider, values)
fun findOrCreate(account: Account, provider: ContentProviderClient): AndroidCalendar {
val calendars = AndroidCalendar.find(account, provider, null, null)
return if (calendars.isEmpty()) {
val values = ContentValues(3)
values.put(CalendarContract.Calendars.NAME, "TestCalendar")
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, "ical4android Test Calendar")
values.put(CalendarContract.Calendars.ALLOWED_REMINDERS, CalendarContract.Reminders.METHOD_DEFAULT)
val uri = AndroidCalendar.create(account, provider, values)

TestCalendar(account, provider, ContentUris.parseId(uri))
} else
calendars.first()
}
AndroidCalendar(account, provider, ContentUris.parseId(uri))
} else
calendars.first()
}


object Factory: AndroidCalendarFactory<TestCalendar> {
override fun newInstance(account: Account, provider: ContentProviderClient, id: Long) =
TestCalendar(account, provider, id)
}

}
}
25 changes: 8 additions & 17 deletions lib/src/main/kotlin/at/bitfire/ical4android/AndroidCalendar.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import java.util.logging.Logger
* Communicates with the Android Contacts Provider which uses an SQLite
* database to store the events.
*/
open class AndroidCalendar(
class AndroidCalendar(
val account: Account,
val provider: ContentProviderClient,

Expand Down Expand Up @@ -215,19 +215,18 @@ open class AndroidCalendar(
provider.delete(Colors.CONTENT_URI.asSyncAdapter(account), null, null)
}

fun <T : AndroidCalendar> findByID(
fun findByID(
account: Account,
provider: ContentProviderClient,
factory: AndroidCalendarFactory<T>,
id: Long
): T {
): AndroidCalendar {
val iterCalendars = CalendarEntity.newEntityIterator(
provider.query(ContentUris.withAppendedId(CalendarEntity.CONTENT_URI, id).asSyncAdapter(account), null, null, null, null)
)
try {
if (iterCalendars.hasNext()) {
val values = iterCalendars.next().entityValues
val calendar = factory.newInstance(account, provider, id)
val calendar = AndroidCalendar(account, provider, id)
calendar.populate(values)
return calendar
}
Expand All @@ -237,21 +236,20 @@ open class AndroidCalendar(
throw FileNotFoundException()
}

fun <T : AndroidCalendar> find(
fun find(
account: Account,
provider: ContentProviderClient,
factory: AndroidCalendarFactory<T>,
where: String?,
whereArgs: Array<String>?
): List<T> {
): List<AndroidCalendar> {
val iterCalendars = CalendarEntity.newEntityIterator(
provider.query(CalendarEntity.CONTENT_URI.asSyncAdapter(account), null, where, whereArgs, null)
)
try {
val calendars = LinkedList<T>()
val calendars = LinkedList<AndroidCalendar>()
while (iterCalendars.hasNext()) {
val values = iterCalendars.next().entityValues
val calendar = factory.newInstance(account, provider, values.getAsLong(Calendars._ID))
val calendar = AndroidCalendar(account, provider, values.getAsLong(Calendars._ID))
calendar.populate(values)
calendars += calendar
}
Expand All @@ -263,11 +261,4 @@ open class AndroidCalendar(

}


// default factory (will be removed as soon as AndroidCalendar is not open anymore)
object Factory : AndroidCalendarFactory<AndroidCalendar> {
override fun newInstance(account: Account, provider: ContentProviderClient, id: Long) =
AndroidCalendar(account, provider, id)
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ class AndroidEvent(

// calculate some scheduling properties
val groupScheduled = e.subValues.any { it.uri == Attendees.CONTENT_URI }
val isOrganizer = (e.entityValues.getAsInteger(Events.IS_ORGANIZER) ?: 0) != 0

populateEvent(e.entityValues.removeBlankStrings(), groupScheduled)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ class InitCalendarProviderRule private constructor() : ExternalResource() {
AndroidCalendar.Companion.findByID(
account,
provider,
AndroidCalendar.Factory,
ContentUris.parseId(uri)
)
} catch (e: Exception) {
Expand Down