Skip to content

Commit b58a0f6

Browse files
committed
Move constants to AndroidEvent2
1 parent 5679c67 commit b58a0f6

File tree

8 files changed

+39
-179
lines changed

8 files changed

+39
-179
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import at.bitfire.ical4android.impl.TestCalendar
1717
import at.bitfire.ical4android.util.MiscUtils.closeCompat
1818
import at.bitfire.synctools.icalendar.Css3Color
1919
import at.bitfire.synctools.storage.calendar.AndroidCalendar
20+
import at.bitfire.synctools.storage.calendar.AndroidEvent2
2021
import at.bitfire.synctools.test.InitCalendarProviderRule
2122
import net.fortuna.ical4j.model.DateTime
2223
import net.fortuna.ical4j.model.component.VAlarm
@@ -70,9 +71,9 @@ class AndroidEventTest {
7071
calendar, contentValuesOf(
7172
Events._ID to 123,
7273
Events._SYNC_ID to "some-ical.ics",
73-
AndroidEvent.COLUMN_ETAG to "some-etag",
74-
AndroidEvent.COLUMN_SCHEDULE_TAG to "some-schedule-tag",
75-
AndroidEvent.COLUMN_FLAGS to 45
74+
AndroidEvent2.COLUMN_ETAG to "some-etag",
75+
AndroidEvent2.COLUMN_SCHEDULE_TAG to "some-schedule-tag",
76+
AndroidEvent2.COLUMN_FLAGS to 45
7677
)
7778
)
7879
assertEquals(123L, e.id)

lib/src/androidTest/kotlin/at/bitfire/synctools/mapping/calendar/LegacyAndroidEventProcessorTest.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import at.bitfire.ical4android.util.MiscUtils.closeCompat
3131
import at.bitfire.synctools.icalendar.Css3Color
3232
import at.bitfire.synctools.storage.calendar.AndroidCalendar
3333
import at.bitfire.synctools.storage.calendar.AndroidCalendarProvider
34+
import at.bitfire.synctools.storage.calendar.AndroidEvent2
3435
import at.bitfire.synctools.test.InitCalendarProviderRule
3536
import net.fortuna.ical4j.model.Date
3637
import net.fortuna.ical4j.model.DateTime
@@ -161,7 +162,7 @@ class LegacyAndroidEventProcessorTest {
161162
populateEvent(
162163
true,
163164
extendedProperties = mapOf(
164-
AndroidEvent.EXTNAME_ICAL_UID to "event1@example.com"
165+
AndroidEvent2.EXTNAME_ICAL_UID to "event1@example.com"
165166
)
166167
).let { result ->
167168
assertEquals("event1@example.com", result.uid)
@@ -182,7 +183,7 @@ class LegacyAndroidEventProcessorTest {
182183
populateEvent(
183184
true,
184185
extendedProperties = mapOf(
185-
AndroidEvent.EXTNAME_ICAL_UID to "event1@example.com"
186+
AndroidEvent2.EXTNAME_ICAL_UID to "event1@example.com"
186187
)
187188
) {
188189
put(Events.UID_2445, "event2@example.com")
@@ -195,7 +196,7 @@ class LegacyAndroidEventProcessorTest {
195196
@Test
196197
fun testPopulateEvent_Sequence_Int() {
197198
populateEvent(true, asSyncAdapter = true) {
198-
put(AndroidEvent.COLUMN_SEQUENCE, 5)
199+
put(AndroidEvent2.COLUMN_SEQUENCE, 5)
199200
}.let { result ->
200201
assertEquals(5, result.sequence)
201202
}
@@ -204,7 +205,7 @@ class LegacyAndroidEventProcessorTest {
204205
@Test
205206
fun testPopulateEvent_Sequence_Null() {
206207
populateEvent(true, asSyncAdapter = true) {
207-
putNull(AndroidEvent.COLUMN_SEQUENCE)
208+
putNull(AndroidEvent2.COLUMN_SEQUENCE)
208209
}.let { result ->
209210
assertNull(result.sequence)
210211
}
@@ -409,7 +410,7 @@ class LegacyAndroidEventProcessorTest {
409410
@Test
410411
fun testPopulateEvent_Url() {
411412
populateEvent(true,
412-
extendedProperties = mapOf(AndroidEvent.EXTNAME_URL to "https://example.com")
413+
extendedProperties = mapOf(AndroidEvent2.EXTNAME_URL to "https://example.com")
413414
).let { result ->
414415
assertEquals(URI("https://example.com"), result.url)
415416
}

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

Lines changed: 9 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
package at.bitfire.ical4android
88

9-
import android.content.ContentResolver
109
import android.content.ContentUris
1110
import android.content.ContentValues
1211
import android.net.Uri
@@ -15,12 +14,12 @@ import android.provider.CalendarContract.Attendees
1514
import android.provider.CalendarContract.Events
1615
import android.provider.CalendarContract.ExtendedProperties
1716
import android.provider.CalendarContract.Reminders
18-
import at.bitfire.ical4android.AndroidEvent.Companion.CATEGORIES_SEPARATOR
1917
import at.bitfire.ical4android.util.MiscUtils.asSyncAdapter
2018
import at.bitfire.synctools.mapping.calendar.LegacyAndroidEventBuilder
2119
import at.bitfire.synctools.storage.BatchOperation.CpoBuilder
2220
import at.bitfire.synctools.storage.LocalStorageException
2321
import at.bitfire.synctools.storage.calendar.AndroidCalendar
22+
import at.bitfire.synctools.storage.calendar.AndroidEvent2
2423
import at.bitfire.synctools.storage.calendar.CalendarBatchOperation
2524

2625
/**
@@ -44,19 +43,20 @@ class AndroidEvent(
4443
val id: Long = values.getAsLong(Events._ID)
4544

4645
var syncId: String? = values.getAsString(Events._SYNC_ID)
47-
var eTag: String? = values.getAsString(COLUMN_ETAG)
48-
var scheduleTag: String? = values.getAsString(COLUMN_SCHEDULE_TAG)
49-
var flags: Int = values.getAsInteger(COLUMN_FLAGS) ?: 0
46+
var eTag: String? = values.getAsString(AndroidEvent2.COLUMN_ETAG)
47+
var scheduleTag: String? = values.getAsString(AndroidEvent2.COLUMN_SCHEDULE_TAG)
48+
var flags: Int = values.getAsInteger(AndroidEvent2.COLUMN_FLAGS) ?: 0
5049

5150
/**
5251
* Updates an already existing event in the calendar storage with the values
5352
* from the instance.
5453
*
54+
* **Does not update the [event] of this object (only calendar storage)!**
55+
*
5556
* @throws LocalStorageException when the calendar provider doesn't return a result row
5657
* @throws RemoteException on calendar provider errors
5758
*/
5859
fun update(event: Event): Uri {
59-
//this.event = event
6060
val existingId = requireNotNull(id)
6161

6262
// There are cases where the event cannot be updated, but must be completely re-created.
@@ -91,9 +91,9 @@ class AndroidEvent(
9191
"${ExtendedProperties.EVENT_ID}=? AND ${ExtendedProperties.NAME} IN (?,?,?,?)",
9292
arrayOf(
9393
existingId.toString(),
94-
EXTNAME_CATEGORIES,
95-
EXTNAME_ICAL_UID, // UID is stored in UID_2445, don't leave iCalUid rows in events that we have written
96-
EXTNAME_URL,
94+
AndroidEvent2.EXTNAME_CATEGORIES,
95+
AndroidEvent2.EXTNAME_ICAL_UID, // UID is stored in UID_2445, don't leave iCalUid rows in events that we have written
96+
AndroidEvent2.EXTNAME_URL,
9797
UnknownProperty.CONTENT_ITEM_TYPE
9898
)
9999
)
@@ -143,57 +143,4 @@ class AndroidEvent(
143143

144144
override fun toString(): String = "AndroidEvent(calendar=$calendar, id=$id)"
145145

146-
147-
companion object {
148-
149-
const val MUTATORS_SEPARATOR = ','
150-
151-
/**
152-
* Custom sync column to store the last known ETag of an event.
153-
*/
154-
const val COLUMN_ETAG = Events.SYNC_DATA1
155-
156-
/**
157-
* Custom sync column to store sync flags of an event.
158-
*/
159-
const val COLUMN_FLAGS = Events.SYNC_DATA2
160-
161-
/**
162-
* Custom sync column to store the SEQUENCE of an event.
163-
*/
164-
const val COLUMN_SEQUENCE = Events.SYNC_DATA3
165-
166-
/**
167-
* Custom sync column to store the Schedule-Tag of an event.
168-
*/
169-
const val COLUMN_SCHEDULE_TAG = Events.SYNC_DATA4
170-
171-
/**
172-
* VEVENT CATEGORIES are stored as an extended property with this [ExtendedProperties.NAME].
173-
*
174-
* The [ExtendedProperties.VALUE] format is the same as used by the AOSP Exchange ActiveSync adapter:
175-
* the category values are stored as list, separated by [CATEGORIES_SEPARATOR]. (If a category
176-
* value contains [CATEGORIES_SEPARATOR], [CATEGORIES_SEPARATOR] will be dropped.)
177-
*
178-
* Example: `Cat1\Cat2`
179-
*/
180-
const val EXTNAME_CATEGORIES = "categories"
181-
const val CATEGORIES_SEPARATOR = '\\'
182-
183-
/**
184-
* Google Calendar uses an extended property called `iCalUid` for storing the event's UID, instead of the
185-
* standard [Events.UID_2445].
186-
*
187-
* @see <a href="https://github.com/bitfireAT/ical4android/issues/125">GitHub Issue</a>
188-
*/
189-
const val EXTNAME_ICAL_UID = "iCalUid"
190-
191-
/**
192-
* VEVENT URL is stored as an extended property with this [ExtendedProperties.NAME].
193-
* The URL is directly put into [ExtendedProperties.VALUE].
194-
*/
195-
const val EXTNAME_URL = ContentResolver.CURSOR_ITEM_BASE_TYPE + "/vnd.ical4android.url"
196-
197-
}
198-
199146
}

lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/LegacyAndroidEventBuilder.kt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,6 @@ import android.provider.CalendarContract.Colors
1111
import android.provider.CalendarContract.Events
1212
import android.provider.CalendarContract.ExtendedProperties
1313
import android.provider.CalendarContract.Reminders
14-
import at.bitfire.ical4android.AndroidEvent.Companion.CATEGORIES_SEPARATOR
15-
import at.bitfire.ical4android.AndroidEvent.Companion.COLUMN_ETAG
16-
import at.bitfire.ical4android.AndroidEvent.Companion.COLUMN_FLAGS
17-
import at.bitfire.ical4android.AndroidEvent.Companion.COLUMN_SCHEDULE_TAG
18-
import at.bitfire.ical4android.AndroidEvent.Companion.COLUMN_SEQUENCE
19-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_CATEGORIES
20-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_URL
2114
import at.bitfire.ical4android.Event
2215
import at.bitfire.ical4android.ICalendar
2316
import at.bitfire.ical4android.UnknownProperty
@@ -34,6 +27,7 @@ import at.bitfire.ical4android.util.TimeApiExtensions.toZonedDateTime
3427
import at.bitfire.synctools.exception.InvalidLocalResourceException
3528
import at.bitfire.synctools.storage.BatchOperation.CpoBuilder
3629
import at.bitfire.synctools.storage.calendar.AndroidCalendar
30+
import at.bitfire.synctools.storage.calendar.AndroidEvent2
3731
import at.bitfire.synctools.storage.calendar.CalendarBatchOperation
3832
import net.fortuna.ical4j.model.Date
3933
import net.fortuna.ical4j.model.DateList
@@ -115,7 +109,7 @@ class LegacyAndroidEventBuilder(
115109
retainClassification()
116110
// URL
117111
event.url?.let { url ->
118-
insertExtendedProperty(batch, idxEvent, EXTNAME_URL, url.toString())
112+
insertExtendedProperty(batch, idxEvent, AndroidEvent2.EXTNAME_URL, url.toString())
119113
}
120114
// unknown properties
121115
event.unknownProperties.forEach {
@@ -220,18 +214,18 @@ class LegacyAndroidEventBuilder(
220214
builder .withValue(Events.CALENDAR_ID, calendar.id)
221215
.withValue(Events.DIRTY, 0) // newly created event rows shall not be marked as dirty
222216
.withValue(Events.DELETED, 0) // or deleted
223-
.withValue(COLUMN_FLAGS, flags)
217+
.withValue(AndroidEvent2.COLUMN_FLAGS, flags)
224218

225219
if (recurrence == null)
226220
builder.withValue(Events._SYNC_ID, syncId)
227-
.withValue(COLUMN_ETAG, eTag)
228-
.withValue(COLUMN_SCHEDULE_TAG, scheduleTag)
221+
.withValue(AndroidEvent2.COLUMN_ETAG, eTag)
222+
.withValue(AndroidEvent2.COLUMN_SCHEDULE_TAG, scheduleTag)
229223
else
230224
builder.withValue(Events.ORIGINAL_SYNC_ID, syncId)
231225

232226
// UID, sequence
233227
builder .withValue(Events.UID_2445, event.uid)
234-
.withValue(COLUMN_SEQUENCE, event.sequence)
228+
.withValue(AndroidEvent2.COLUMN_SEQUENCE, event.sequence)
235229

236230
// time fields
237231
builder .withValue(Events.DTSTART, dtStart.date.time)
@@ -501,11 +495,11 @@ class LegacyAndroidEventBuilder(
501495

502496
private fun insertCategories(batch: CalendarBatchOperation, idxEvent: Int?) {
503497
val rawCategories = event.categories // concatenate, separate by backslash
504-
.joinToString(CATEGORIES_SEPARATOR.toString()) { category ->
498+
.joinToString(AndroidEvent2.CATEGORIES_SEPARATOR.toString()) { category ->
505499
// drop occurrences of CATEGORIES_SEPARATOR in category names
506-
category.filter { it != CATEGORIES_SEPARATOR }
500+
category.filter { it != AndroidEvent2.CATEGORIES_SEPARATOR }
507501
}
508-
insertExtendedProperty(batch, idxEvent, EXTNAME_CATEGORIES, rawCategories)
502+
insertExtendedProperty(batch, idxEvent, AndroidEvent2.EXTNAME_CATEGORIES, rawCategories)
509503
}
510504

511505
private fun insertUnknownProperty(batch: CalendarBatchOperation, idxEvent: Int?, property: Property) {

lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/LegacyAndroidEventProcessor.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ import android.provider.CalendarContract.Events
1313
import android.provider.CalendarContract.ExtendedProperties
1414
import android.provider.CalendarContract.Reminders
1515
import android.util.Patterns
16-
import at.bitfire.ical4android.AndroidEvent.Companion.CATEGORIES_SEPARATOR
17-
import at.bitfire.ical4android.AndroidEvent.Companion.COLUMN_SEQUENCE
18-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_CATEGORIES
19-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_ICAL_UID
20-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_URL
21-
import at.bitfire.ical4android.AndroidEvent.Companion.MUTATORS_SEPARATOR
2216
import at.bitfire.ical4android.Event
2317
import at.bitfire.ical4android.LegacyAndroidCalendar
2418
import at.bitfire.ical4android.UnknownProperty
@@ -118,7 +112,7 @@ class LegacyAndroidEventProcessor(
118112
logger.log(Level.FINE, "Read event entity from calender provider", row)
119113

120114
row.getAsString(Events.MUTATORS)?.let { strPackages ->
121-
val packages = strPackages.split(MUTATORS_SEPARATOR).toSet()
115+
val packages = strPackages.split(AndroidEvent2.MUTATORS_SEPARATOR).toSet()
122116
to.userAgents.addAll(packages)
123117
}
124118

@@ -236,7 +230,7 @@ class LegacyAndroidEventProcessor(
236230
}
237231

238232
to.uid = row.getAsString(Events.UID_2445)
239-
to.sequence = row.getAsInteger(COLUMN_SEQUENCE)
233+
to.sequence = row.getAsInteger(AndroidEvent2.COLUMN_SEQUENCE)
240234
to.isOrganizer = row.getAsBoolean(Events.IS_ORGANIZER)
241235

242236
to.summary = row.getAsString(Events.TITLE)
@@ -386,17 +380,17 @@ class LegacyAndroidEventProcessor(
386380

387381
try {
388382
when (name) {
389-
EXTNAME_CATEGORIES ->
390-
to.categories += rawValue.split(CATEGORIES_SEPARATOR)
383+
AndroidEvent2.EXTNAME_CATEGORIES ->
384+
to.categories += rawValue.split(AndroidEvent2.CATEGORIES_SEPARATOR)
391385

392-
EXTNAME_URL ->
386+
AndroidEvent2.EXTNAME_URL ->
393387
try {
394388
to.url = URI(rawValue)
395389
} catch(_: URISyntaxException) {
396390
logger.warning("Won't process invalid local URL: $rawValue")
397391
}
398392

399-
EXTNAME_ICAL_UID ->
393+
AndroidEvent2.EXTNAME_ICAL_UID ->
400394
// only consider iCalUid when there's no uid
401395
if (to.uid == null)
402396
to.uid = rawValue

lib/src/main/kotlin/at/bitfire/synctools/storage/calendar/AndroidCalendar.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ import android.provider.CalendarContract.Events
1717
import android.provider.CalendarContract.EventsEntity
1818
import android.provider.CalendarContract.ExtendedProperties
1919
import android.provider.CalendarContract.Reminders
20-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_CATEGORIES
21-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_ICAL_UID
22-
import at.bitfire.ical4android.AndroidEvent.Companion.EXTNAME_URL
20+
21+
2322
import at.bitfire.ical4android.UnknownProperty
2423
import at.bitfire.ical4android.util.MiscUtils.asSyncAdapter
2524
import at.bitfire.synctools.storage.BatchOperation.CpoBuilder
2625
import at.bitfire.synctools.storage.LocalStorageException
26+
import at.bitfire.synctools.storage.calendar.AndroidEvent2.Companion.EXTNAME_CATEGORIES
27+
import at.bitfire.synctools.storage.calendar.AndroidEvent2.Companion.EXTNAME_ICAL_UID
28+
import at.bitfire.synctools.storage.calendar.AndroidEvent2.Companion.EXTNAME_URL
2729
import at.bitfire.synctools.storage.toContentValues
2830
import java.util.LinkedList
2931
import at.bitfire.ical4android.AndroidEvent as LegacyAndroidEvent

lib/src/main/kotlin/at/bitfire/synctools/storage/calendar/AndroidEventStore.kt

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

0 commit comments

Comments
 (0)