move event searching into Room

This commit is contained in:
tibbi
2018-11-14 22:52:30 +01:00
parent 361e1204bb
commit 15600571a1
4 changed files with 26 additions and 27 deletions

View File

@@ -738,9 +738,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
mLatestSearchQuery = text mLatestSearchQuery = text
search_placeholder_2.beGoneIf(text.length >= 2) search_placeholder_2.beGoneIf(text.length >= 2)
if (text.length >= 2) { if (text.length >= 2) {
dbHelper.getEventsWithSearchQuery(text) { searchedText, events -> EventsHelper(applicationContext).getEventsWithSearchQuery(text, this) { searchedText, events ->
if (searchedText == mLatestSearchQuery) { if (searchedText == mLatestSearchQuery) {
runOnUiThread {
search_results_list.beVisibleIf(events.isNotEmpty()) search_results_list.beVisibleIf(events.isNotEmpty())
search_placeholder.beVisibleIf(events.isEmpty()) search_placeholder.beVisibleIf(events.isEmpty())
val listItems = getEventListItems(events) val listItems = getEventListItems(events)
@@ -756,7 +755,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
search_results_list.adapter = eventsAdapter search_results_list.adapter = eventsAdapter
} }
} }
}
} else { } else {
search_placeholder.beVisible() search_placeholder.beVisible()
search_results_list.beGone() search_results_list.beGone()

View File

@@ -98,20 +98,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
} }
} }
fun getEventsWithSearchQuery(text: String, callback: (searchedText: String, events: List<Event>) -> Unit) {
Thread {
val searchQuery = "%$text%"
val selection = "$COL_TITLE LIKE ? OR $COL_LOCATION LIKE ? OR $COL_DESCRIPTION LIKE ?"
val selectionArgs = arrayOf(searchQuery, searchQuery, searchQuery)
val cursor = getEventsCursor(selection, selectionArgs)
val events = fillEvents(cursor)
val displayEventTypes = context.config.displayEventTypes
val filteredEvents = events.filter { displayEventTypes.contains(it.eventType.toString()) }
callback(text, filteredEvents)
}.start()
}
fun getEvents(fromTS: Int, toTS: Int, eventId: Long = -1L, applyTypeFilter: Boolean = true, callback: (events: ArrayList<Event>) -> Unit) { fun getEvents(fromTS: Int, toTS: Int, eventId: Long = -1L, applyTypeFilter: Boolean = true, callback: (events: ArrayList<Event>) -> Unit) {
Thread { Thread {
getEventsInBackground(fromTS, toTS, eventId, applyTypeFilter, callback) getEventsInBackground(fromTS, toTS, eventId, applyTypeFilter, callback)

View File

@@ -191,4 +191,16 @@ class EventsHelper(val context: Context) {
callback(eventIds.isNotEmpty()) callback(eventIds.isNotEmpty())
}.start() }.start()
} }
fun getEventsWithSearchQuery(text: String, activity: Activity, callback: (searchedText: String, events: List<Event>) -> Unit) {
Thread {
val searchQuery = "%$text%"
val events = context.eventsDB.getEventsForSearch(searchQuery)
val displayEventTypes = context.config.displayEventTypes
val filteredEvents = events.filter { displayEventTypes.contains(it.eventType.toString()) }
activity.runOnUiThread {
callback(text, filteredEvents)
}
}.start()
}
} }

View File

@@ -50,6 +50,9 @@ interface EventsDao {
@Query("SELECT id FROM events WHERE source = :source AND import_id != \"\"") @Query("SELECT id FROM events WHERE source = :source AND import_id != \"\"")
fun getCalDAVCalendarEvents(source: String): List<Long> fun getCalDAVCalendarEvents(source: String): List<Long>
@Query("SELECT * FROM events WHERE title LIKE :searchQuery OR location LIKE :searchQuery OR description LIKE :searchQuery")
fun getEventsForSearch(searchQuery: String): List<Event>
@Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId") @Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId")
fun resetEventsWithType(eventTypeId: Long) fun resetEventsWithType(eventTypeId: Long)