From 467585e22948559126c8b049d64bc921515b7a5a Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 14 Nov 2018 20:13:51 +0100 Subject: [PATCH] allow fetching specific events with Room --- .../calendar/pro/activities/EventActivity.kt | 2 +- .../pro/activities/SnoozeReminderActivity.kt | 4 ++-- .../calendar/pro/helpers/DBHelper.kt | 20 ++++--------------- .../calendar/pro/interfaces/EventsDao.kt | 3 +++ .../pro/receivers/NotificationReceiver.kt | 7 ++----- .../calendar/pro/services/SnoozeService.kt | 4 ++-- 6 files changed, 14 insertions(+), 26 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt index da94ab4d0..f9e878b6e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt @@ -67,7 +67,7 @@ class EventActivity : SimpleActivity() { val eventId = intent.getLongExtra(EVENT_ID, 0L) Thread { - val event = dbHelper.getEventWithId(eventId) + val event = eventsDB.getEventWithId(eventId) if (eventId != 0L && event == null) { finish() return@Thread diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SnoozeReminderActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SnoozeReminderActivity.kt index 958eeb4a4..0c31bd23c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SnoozeReminderActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/SnoozeReminderActivity.kt @@ -3,7 +3,7 @@ package com.simplemobiletools.calendar.pro.activities import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.simplemobiletools.calendar.pro.extensions.config -import com.simplemobiletools.calendar.pro.extensions.dbHelper +import com.simplemobiletools.calendar.pro.extensions.eventsDB import com.simplemobiletools.calendar.pro.extensions.rescheduleReminder import com.simplemobiletools.calendar.pro.helpers.EVENT_ID import com.simplemobiletools.commons.extensions.showPickSecondsDialogHelper @@ -14,7 +14,7 @@ class SnoozeReminderActivity : AppCompatActivity() { showPickSecondsDialogHelper(config.snoozeTime, true, cancelCallback = { dialogCancelled() }) { val eventId = intent.getLongExtra(EVENT_ID, 0L) - val event = dbHelper.getEventWithId(eventId) + val event = eventsDB.getEventWithId(eventId) config.snoozeTime = it / 60 rescheduleReminder(event, it / 60) finishActivity() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/DBHelper.kt index 3c26efe34..33b635b91 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/DBHelper.kt @@ -60,7 +60,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {} private fun fillExceptionValues(parentEventId: Long, occurrenceTS: Int, addToCalDAV: Boolean, childImportId: String?, callback: (eventRepetitionException: EventRepetitionException) -> Unit) { - val childEvent = getEventWithId(parentEventId) ?: return + val childEvent = context.eventsDB.getEventWithId(parentEventId) ?: return childEvent.apply { id = 0 @@ -79,7 +79,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont Thread { if (addToCalDAV && context.config.caldavSync) { - val parentEvent = getEventWithId(parentEventId) + val parentEvent = context.eventsDB.getEventWithId(parentEventId) if (parentEvent != null) { val newId = CalDAVHandler(context).insertEventRepeatException(parentEvent, occurrenceTS) val newImportId = "${parentEvent.source}-$newId" @@ -152,7 +152,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont fillExceptionValues(parentEventId, occurrenceTS, addToCalDAV, childImportId) { context.eventRepetitionExceptionsDB.insert(it) - val parentEvent = getEventWithId(parentEventId) + val parentEvent = context.eventsDB.getEventWithId(parentEventId) if (parentEvent != null) { context.scheduleNextEventReminder(parentEvent, this) } @@ -164,7 +164,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont context.eventRepetitionsDB.updateEventRepetitionLimit(limitTS - time.hourOfDay, eventId) if (context.config.caldavSync) { - val event = getEventWithId(eventId) + val event = context.eventsDB.getEventWithId(eventId) if (event?.getCalDAVCalendarId() != 0) { CalDAVHandler(context).updateCalDAVEvent(event!!) } @@ -199,18 +199,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont mDb.update(MAIN_TABLE_NAME, values, selection, selectionArgs) } - fun getEventWithId(id: Long): Event? { - val selection = "$MAIN_TABLE_NAME.$COL_ID = ?" - val selectionArgs = arrayOf(id.toString()) - val cursor = getEventsCursor(selection, selectionArgs) - val events = fillEvents(cursor) - return if (events.isNotEmpty()) { - events.first() - } else { - null - } - } - fun getEventIdWithImportId(id: String): Long { val selection = "$MAIN_TABLE_NAME.$COL_IMPORT_ID = ?" val selectionArgs = arrayOf(id) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt index fac8b7343..3bf224a23 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/interfaces/EventsDao.kt @@ -10,6 +10,9 @@ import com.simplemobiletools.calendar.pro.models.Event @Dao interface EventsDao { + @Query("SELECT * FROM events WHERE id = :id") + fun getEventWithId(id: Long): Event? + @Query("SELECT * FROM events WHERE id IN (:ids)") fun getEventsWithIds(ids: List): List diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt index 39e0f542c..05bb594dc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/receivers/NotificationReceiver.kt @@ -4,10 +4,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.PowerManager -import com.simplemobiletools.calendar.pro.extensions.dbHelper -import com.simplemobiletools.calendar.pro.extensions.notifyEvent -import com.simplemobiletools.calendar.pro.extensions.scheduleNextEventReminder -import com.simplemobiletools.calendar.pro.extensions.updateListWidget +import com.simplemobiletools.calendar.pro.extensions.* import com.simplemobiletools.calendar.pro.helpers.EVENT_ID import com.simplemobiletools.calendar.pro.helpers.EventsHelper import com.simplemobiletools.calendar.pro.helpers.Formatter @@ -30,7 +27,7 @@ class NotificationReceiver : BroadcastReceiver() { } context.updateListWidget() - val event = context.dbHelper.getEventWithId(id) + val event = context.eventsDB.getEventWithId(id) if (event == null || event.getReminders().isEmpty()) { return } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/SnoozeService.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/SnoozeService.kt index 93179e776..52890ebb3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/SnoozeService.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/SnoozeService.kt @@ -3,14 +3,14 @@ package com.simplemobiletools.calendar.pro.services import android.app.IntentService import android.content.Intent import com.simplemobiletools.calendar.pro.extensions.config -import com.simplemobiletools.calendar.pro.extensions.dbHelper +import com.simplemobiletools.calendar.pro.extensions.eventsDB import com.simplemobiletools.calendar.pro.extensions.rescheduleReminder import com.simplemobiletools.calendar.pro.helpers.EVENT_ID class SnoozeService : IntentService("Snooze") { override fun onHandleIntent(intent: Intent) { val eventId = intent.getLongExtra(EVENT_ID, 0L) - val event = dbHelper.getEventWithId(eventId) + val event = eventsDB.getEventWithId(eventId) rescheduleReminder(event, config.snoozeTime) } }