Skip to content

Commit 1a613d5

Browse files
authored
Don't allow subclassing of AndroidCalendar anymore; remove AndroidCalendarFactory (#23)
1 parent dd6e3a2 commit 1a613d5

File tree

7 files changed

+26
-66
lines changed

7 files changed

+26
-66
lines changed

lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidCalendarTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class AndroidCalendarTest {
7979
assertNotNull(uri)
8080

8181
// query calendar
82-
val calendar = AndroidCalendar.findByID(testAccount, provider, TestCalendar.Factory, ContentUris.parseId(uri))
82+
val calendar = AndroidCalendar.findByID(testAccount, provider, ContentUris.parseId(uri))
8383
assertNotNull(calendar)
8484

8585
// delete calendar

lib/src/androidTest/kotlin/at/bitfire/ical4android/AndroidEventTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class AndroidEventTest {
101101
private val tzDefault = DateUtils.ical4jTimeZone(tzIdDefault)
102102

103103
private lateinit var calendarUri: Uri
104-
private lateinit var calendar: TestCalendar
104+
private lateinit var calendar: AndroidCalendar
105105

106106
@Before
107107
fun prepare() {
@@ -1439,7 +1439,7 @@ class AndroidEventTest {
14391439

14401440
private fun populateAndroidEvent(
14411441
automaticDates: Boolean,
1442-
destinationCalendar: TestCalendar = calendar,
1442+
destinationCalendar: AndroidCalendar = calendar,
14431443
asSyncAdapter: Boolean = false,
14441444
insertCallback: (id: Long) -> Unit = {},
14451445
extendedProperties: Map<String, String> = emptyMap(),
@@ -1481,7 +1481,7 @@ class AndroidEventTest {
14811481

14821482
private fun populateEvent(
14831483
automaticDates: Boolean,
1484-
destinationCalendar: TestCalendar = calendar,
1484+
destinationCalendar: AndroidCalendar = calendar,
14851485
asSyncAdapter: Boolean = false,
14861486
insertCallback: (id: Long) -> Unit = {},
14871487
extendedProperties: Map<String, String> = emptyMap(),
@@ -1943,7 +1943,7 @@ class AndroidEventTest {
19431943
}
19441944

19451945

1946-
private fun populateReminder(destinationCalendar: TestCalendar = calendar, builder: ContentValues.() -> Unit): VAlarm? {
1946+
private fun populateReminder(destinationCalendar: AndroidCalendar = calendar, builder: ContentValues.() -> Unit): VAlarm? {
19471947
populateEvent(true, destinationCalendar = destinationCalendar, insertCallback = { id ->
19481948
val reminderValues = ContentValues()
19491949
reminderValues.put(Reminders.EVENT_ID, id)

lib/src/androidTest/kotlin/at/bitfire/ical4android/impl/TestCalendar.kt

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,21 @@ import android.content.ContentUris
1212
import android.content.ContentValues
1313
import android.provider.CalendarContract
1414
import at.bitfire.ical4android.AndroidCalendar
15-
import at.bitfire.ical4android.AndroidCalendarFactory
1615

17-
class TestCalendar(
18-
account: Account,
19-
providerClient: ContentProviderClient,
20-
id: Long
21-
) : AndroidCalendar(account, providerClient, id) {
16+
object TestCalendar {
2217

23-
companion object {
24-
fun findOrCreate(account: Account, provider: ContentProviderClient): TestCalendar {
25-
val calendars = AndroidCalendar.find(account, provider, Factory, null, null)
26-
return if (calendars.isEmpty()) {
27-
val values = ContentValues(3)
28-
values.put(CalendarContract.Calendars.NAME, "TestCalendar")
29-
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, "ical4android Test Calendar")
30-
values.put(CalendarContract.Calendars.ALLOWED_REMINDERS, CalendarContract.Reminders.METHOD_DEFAULT)
31-
val uri = AndroidCalendar.create(account, provider, values)
18+
fun findOrCreate(account: Account, provider: ContentProviderClient): AndroidCalendar {
19+
val calendars = AndroidCalendar.find(account, provider, null, null)
20+
return if (calendars.isEmpty()) {
21+
val values = ContentValues(3)
22+
values.put(CalendarContract.Calendars.NAME, "TestCalendar")
23+
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, "ical4android Test Calendar")
24+
values.put(CalendarContract.Calendars.ALLOWED_REMINDERS, CalendarContract.Reminders.METHOD_DEFAULT)
25+
val uri = AndroidCalendar.create(account, provider, values)
3226

33-
TestCalendar(account, provider, ContentUris.parseId(uri))
34-
} else
35-
calendars.first()
36-
}
27+
AndroidCalendar(account, provider, ContentUris.parseId(uri))
28+
} else
29+
calendars.first()
3730
}
3831

39-
40-
object Factory: AndroidCalendarFactory<TestCalendar> {
41-
override fun newInstance(account: Account, provider: ContentProviderClient, id: Long) =
42-
TestCalendar(account, provider, id)
43-
}
44-
45-
}
32+
}

lib/src/main/kotlin/at/bitfire/ical4android/AndroidCalendar.kt

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import java.util.logging.Logger
3131
* Communicates with the Android Contacts Provider which uses an SQLite
3232
* database to store the events.
3333
*/
34-
open class AndroidCalendar(
34+
class AndroidCalendar(
3535
val account: Account,
3636
val provider: ContentProviderClient,
3737

@@ -215,19 +215,18 @@ open class AndroidCalendar(
215215
provider.delete(Colors.CONTENT_URI.asSyncAdapter(account), null, null)
216216
}
217217

218-
fun <T : AndroidCalendar> findByID(
218+
fun findByID(
219219
account: Account,
220220
provider: ContentProviderClient,
221-
factory: AndroidCalendarFactory<T>,
222221
id: Long
223-
): T {
222+
): AndroidCalendar {
224223
val iterCalendars = CalendarEntity.newEntityIterator(
225224
provider.query(ContentUris.withAppendedId(CalendarEntity.CONTENT_URI, id).asSyncAdapter(account), null, null, null, null)
226225
)
227226
try {
228227
if (iterCalendars.hasNext()) {
229228
val values = iterCalendars.next().entityValues
230-
val calendar = factory.newInstance(account, provider, id)
229+
val calendar = AndroidCalendar(account, provider, id)
231230
calendar.populate(values)
232231
return calendar
233232
}
@@ -237,21 +236,20 @@ open class AndroidCalendar(
237236
throw FileNotFoundException()
238237
}
239238

240-
fun <T : AndroidCalendar> find(
239+
fun find(
241240
account: Account,
242241
provider: ContentProviderClient,
243-
factory: AndroidCalendarFactory<T>,
244242
where: String?,
245243
whereArgs: Array<String>?
246-
): List<T> {
244+
): List<AndroidCalendar> {
247245
val iterCalendars = CalendarEntity.newEntityIterator(
248246
provider.query(CalendarEntity.CONTENT_URI.asSyncAdapter(account), null, where, whereArgs, null)
249247
)
250248
try {
251-
val calendars = LinkedList<T>()
249+
val calendars = LinkedList<AndroidCalendar>()
252250
while (iterCalendars.hasNext()) {
253251
val values = iterCalendars.next().entityValues
254-
val calendar = factory.newInstance(account, provider, values.getAsLong(Calendars._ID))
252+
val calendar = AndroidCalendar(account, provider, values.getAsLong(Calendars._ID))
255253
calendar.populate(values)
256254
calendars += calendar
257255
}
@@ -263,11 +261,4 @@ open class AndroidCalendar(
263261

264262
}
265263

266-
267-
// default factory (will be removed as soon as AndroidCalendar is not open anymore)
268-
object Factory : AndroidCalendarFactory<AndroidCalendar> {
269-
override fun newInstance(account: Account, provider: ContentProviderClient, id: Long) =
270-
AndroidCalendar(account, provider, id)
271-
}
272-
273264
}

lib/src/main/kotlin/at/bitfire/ical4android/AndroidCalendarFactory.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.

lib/src/main/kotlin/at/bitfire/ical4android/AndroidEvent.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ class AndroidEvent(
173173

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

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

lib/src/main/kotlin/at/bitfire/synctools/test/InitCalendarProviderRule.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ class InitCalendarProviderRule private constructor() : ExternalResource() {
110110
AndroidCalendar.Companion.findByID(
111111
account,
112112
provider,
113-
AndroidCalendar.Factory,
114113
ContentUris.parseId(uri)
115114
)
116115
} catch (e: Exception) {

0 commit comments

Comments
 (0)