moving a few more functions into Room

This commit is contained in:
tibbi 2018-11-14 22:17:29 +01:00
parent 86a4b3fdb1
commit 771f66ac8e
12 changed files with 36 additions and 41 deletions

View File

@ -47,7 +47,7 @@ class EventActivity : SimpleActivity() {
private var mRepeatInterval = 0 private var mRepeatInterval = 0
private var mRepeatLimit = 0 private var mRepeatLimit = 0
private var mRepeatRule = 0 private var mRepeatRule = 0
private var mEventTypeId = DBHelper.REGULAR_EVENT_TYPE_ID private var mEventTypeId = REGULAR_EVENT_TYPE_ID
private var mDialogTheme = 0 private var mDialogTheme = 0
private var mEventOccurrenceTS = 0 private var mEventOccurrenceTS = 0
private var mEventCalendarId = STORED_LOCALLY_ONLY private var mEventCalendarId = STORED_LOCALLY_ONLY
@ -82,7 +82,7 @@ class EventActivity : SimpleActivity() {
private fun gotEvent(savedInstanceState: Bundle?, localEventType: EventType?, event: Event?) { private fun gotEvent(savedInstanceState: Bundle?, localEventType: EventType?, event: Event?) {
if (localEventType == null || localEventType.caldavCalendarId != 0) { if (localEventType == null || localEventType.caldavCalendarId != 0) {
config.lastUsedLocalEventTypeId = DBHelper.REGULAR_EVENT_TYPE_ID config.lastUsedLocalEventTypeId = REGULAR_EVENT_TYPE_ID
} }
mEventTypeId = config.lastUsedLocalEventTypeId mEventTypeId = config.lastUsedLocalEventTypeId
@ -681,7 +681,7 @@ class EventActivity : SimpleActivity() {
Thread { Thread {
when (it) { when (it) {
DELETE_SELECTED_OCCURRENCE -> dbHelper.addEventRepeatException(mEvent.id!!, mEventOccurrenceTS, true) DELETE_SELECTED_OCCURRENCE -> dbHelper.addEventRepeatException(mEvent.id!!, mEventOccurrenceTS, true)
DELETE_FUTURE_OCCURRENCES -> dbHelper.addEventRepeatLimit(mEvent.id!!, mEventOccurrenceTS) DELETE_FUTURE_OCCURRENCES -> EventsHelper(applicationContext).addEventRepeatLimit(mEvent.id!!, mEventOccurrenceTS)
DELETE_ALL_OCCURRENCES -> EventsHelper(applicationContext).deleteEvent(mEvent.id!!, true) DELETE_ALL_OCCURRENCES -> EventsHelper(applicationContext).deleteEvent(mEvent.id!!, true)
} }
runOnUiThread { runOnUiThread {

View File

@ -7,7 +7,7 @@ import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.activities.SimpleActivity import com.simplemobiletools.calendar.pro.activities.SimpleActivity
import com.simplemobiletools.calendar.pro.extensions.config import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.extensions.dbHelper import com.simplemobiletools.calendar.pro.extensions.dbHelper
import com.simplemobiletools.calendar.pro.helpers.DBHelper import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID
import com.simplemobiletools.calendar.pro.interfaces.DeleteEventTypesListener import com.simplemobiletools.calendar.pro.interfaces.DeleteEventTypesListener
import com.simplemobiletools.calendar.pro.models.EventType import com.simplemobiletools.calendar.pro.models.EventType
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
@ -100,7 +100,7 @@ class ManageEventTypesAdapter(activity: SimpleActivity, val eventTypes: ArrayLis
for (key in selectedKeys) { for (key in selectedKeys) {
val type = getItemWithKey(key) ?: continue val type = getItemWithKey(key) ?: continue
if (type.id == DBHelper.REGULAR_EVENT_TYPE_ID) { if (type.id == REGULAR_EVENT_TYPE_ID) {
activity.toast(R.string.cannot_delete_default_type) activity.toast(R.string.cannot_delete_default_type)
eventTypesToDelete.remove(type) eventTypesToDelete.remove(type)
toggleItemSelection(false, getItemKeyPosition(type.id!!.toInt())) toggleItemSelection(false, getItemKeyPosition(type.id!!.toInt()))

View File

@ -7,7 +7,7 @@ import androidx.room.RoomDatabase
import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteDatabase
import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.extensions.config import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.helpers.DBHelper import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID
import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionExceptionsDao import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionExceptionsDao
import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionsDao import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionsDao
import com.simplemobiletools.calendar.pro.interfaces.EventTypesDao import com.simplemobiletools.calendar.pro.interfaces.EventTypesDao
@ -58,9 +58,9 @@ abstract class EventsDatabase : RoomDatabase() {
private fun insertRegularEventType(context: Context) { private fun insertRegularEventType(context: Context) {
Executors.newSingleThreadScheduledExecutor().execute { Executors.newSingleThreadScheduledExecutor().execute {
val regularEvent = context.resources.getString(R.string.regular_event) val regularEvent = context.resources.getString(R.string.regular_event)
val eventType = EventType(DBHelper.REGULAR_EVENT_TYPE_ID, regularEvent, context.config.primaryColor) val eventType = EventType(REGULAR_EVENT_TYPE_ID, regularEvent, context.config.primaryColor)
db!!.EventTypesDao().insertOrUpdate(eventType) db!!.EventTypesDao().insertOrUpdate(eventType)
context.config.addDisplayEventType(DBHelper.REGULAR_EVENT_TYPE_ID.toString()) context.config.addDisplayEventType(REGULAR_EVENT_TYPE_ID.toString())
} }
} }
} }

View File

@ -6,24 +6,24 @@ import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.activities.SimpleActivity import com.simplemobiletools.calendar.pro.activities.SimpleActivity
import com.simplemobiletools.calendar.pro.extensions.config import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.extensions.eventTypesDB import com.simplemobiletools.calendar.pro.extensions.eventTypesDB
import com.simplemobiletools.calendar.pro.helpers.DBHelper
import com.simplemobiletools.calendar.pro.helpers.EventsHelper import com.simplemobiletools.calendar.pro.helpers.EventsHelper
import com.simplemobiletools.calendar.pro.helpers.IcsImporter import com.simplemobiletools.calendar.pro.helpers.IcsImporter
import com.simplemobiletools.calendar.pro.helpers.IcsImporter.ImportResult.* import com.simplemobiletools.calendar.pro.helpers.IcsImporter.ImportResult.*
import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID
import com.simplemobiletools.commons.extensions.setFillWithStroke import com.simplemobiletools.commons.extensions.setFillWithStroke
import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.toast
import kotlinx.android.synthetic.main.dialog_import_events.view.* import kotlinx.android.synthetic.main.dialog_import_events.view.*
class ImportEventsDialog(val activity: SimpleActivity, val path: String, val callback: (refreshView: Boolean) -> Unit) { class ImportEventsDialog(val activity: SimpleActivity, val path: String, val callback: (refreshView: Boolean) -> Unit) {
var currEventTypeId = DBHelper.REGULAR_EVENT_TYPE_ID var currEventTypeId = REGULAR_EVENT_TYPE_ID
var currEventTypeCalDAVCalendarId = 0 var currEventTypeCalDAVCalendarId = 0
val config = activity.config val config = activity.config
init { init {
Thread { Thread {
if (activity.eventTypesDB.getEventTypeWithId(config.lastUsedLocalEventTypeId) == null) { if (activity.eventTypesDB.getEventTypeWithId(config.lastUsedLocalEventTypeId) == null) {
config.lastUsedLocalEventTypeId = DBHelper.REGULAR_EVENT_TYPE_ID config.lastUsedLocalEventTypeId = REGULAR_EVENT_TYPE_ID
} }
activity.runOnUiThread { activity.runOnUiThread {
initDialog() initDialog()
@ -39,7 +39,7 @@ class ImportEventsDialog(val activity: SimpleActivity, val path: String, val cal
currEventTypeCalDAVCalendarId = config.lastUsedCaldavCalendarId currEventTypeCalDAVCalendarId = config.lastUsedCaldavCalendarId
lastUsedCalDAVCalendar.id!! lastUsedCalDAVCalendar.id!!
} else { } else {
DBHelper.REGULAR_EVENT_TYPE_ID REGULAR_EVENT_TYPE_ID
} }
} else { } else {
config.lastUsedLocalEventTypeId config.lastUsedLocalEventTypeId

View File

@ -453,7 +453,7 @@ fun Context.handleEventDeleting(eventIds: List<Long>, timestamps: List<Int>, act
} }
DELETE_FUTURE_OCCURRENCES -> { DELETE_FUTURE_OCCURRENCES -> {
eventIds.forEachIndexed { index, value -> eventIds.forEachIndexed { index, value ->
dbHelper.addEventRepeatLimit(value, timestamps[index]) EventsHelper(this).addEventRepeatLimit(value, timestamps[index])
} }
} }
DELETE_ALL_OCCURRENCES -> { DELETE_ALL_OCCURRENCES -> {

View File

@ -96,7 +96,7 @@ class Config(context: Context) : BaseConfig(context) {
set(calendarId) = prefs.edit().putInt(LAST_USED_CALDAV_CALENDAR, calendarId).apply() set(calendarId) = prefs.edit().putInt(LAST_USED_CALDAV_CALENDAR, calendarId).apply()
var lastUsedLocalEventTypeId: Long var lastUsedLocalEventTypeId: Long
get() = prefs.getLong(LAST_USED_LOCAL_EVENT_TYPE_ID, DBHelper.REGULAR_EVENT_TYPE_ID) get() = prefs.getLong(LAST_USED_LOCAL_EVENT_TYPE_ID, REGULAR_EVENT_TYPE_ID)
set(lastUsedLocalEventTypeId) = prefs.edit().putLong(LAST_USED_LOCAL_EVENT_TYPE_ID, lastUsedLocalEventTypeId).apply() set(lastUsedLocalEventTypeId) = prefs.edit().putLong(LAST_USED_LOCAL_EVENT_TYPE_ID, lastUsedLocalEventTypeId).apply()
var reminderAudioStream: Int var reminderAudioStream: Int

View File

@ -15,6 +15,7 @@ const val NEW_EVENT_SET_HOUR_DURATION = "new_event_set_hour_duration"
const val WEEK_START_DATE_TIME = "week_start_date_time" const val WEEK_START_DATE_TIME = "week_start_date_time"
const val CALDAV = "Caldav" const val CALDAV = "Caldav"
const val VIEW_TO_OPEN = "view_to_open" const val VIEW_TO_OPEN = "view_to_open"
const val REGULAR_EVENT_TYPE_ID = 1L
const val MONTHLY_VIEW = 1 const val MONTHLY_VIEW = 1
const val YEARLY_VIEW = 2 const val YEARLY_VIEW = 2

View File

@ -39,7 +39,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
companion object { companion object {
private const val DB_VERSION = 1 private const val DB_VERSION = 1
const val DB_NAME = "events_old.db" const val DB_NAME = "events_old.db"
const val REGULAR_EVENT_TYPE_ID = 1L
var dbInstance: DBHelper? = null var dbInstance: DBHelper? = null
fun newInstance(context: Context): DBHelper { fun newInstance(context: Context): DBHelper {
@ -101,18 +100,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
} }
} }
fun addEventRepeatLimit(eventId: Long, limitTS: Int) {
val time = Formatter.getDateTimeFromTS(limitTS)
context.eventRepetitionsDB.updateEventRepetitionLimit(limitTS - time.hourOfDay, eventId)
if (context.config.caldavSync) {
val event = context.eventsDB.getEventWithId(eventId)
if (event?.getCalDAVCalendarId() != 0) {
CalDAVHandler(context).updateCalDAVEvent(event!!)
}
}
}
fun deleteEventsWithType(eventTypeId: Long) { fun deleteEventsWithType(eventTypeId: Long) {
val selection = "$MAIN_TABLE_NAME.$COL_EVENT_TYPE = ?" val selection = "$MAIN_TABLE_NAME.$COL_EVENT_TYPE = ?"
val selectionArgs = arrayOf(eventTypeId.toString()) val selectionArgs = arrayOf(eventTypeId.toString())
@ -122,15 +109,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
EventsHelper(context).deleteEvents(eventIDs, true) EventsHelper(context).deleteEvents(eventIDs, true)
} }
fun resetEventsWithType(eventTypeId: Long) {
val values = ContentValues()
values.put(COL_EVENT_TYPE, REGULAR_EVENT_TYPE_ID)
val selection = "$COL_EVENT_TYPE = ?"
val selectionArgs = arrayOf(eventTypeId.toString())
mDb.update(MAIN_TABLE_NAME, values, selection, selectionArgs)
}
fun updateEventImportIdAndSource(eventId: Long, importId: String, source: String) { fun updateEventImportIdAndSource(eventId: Long, importId: String, source: String) {
val values = ContentValues() val values = ContentValues()
values.put(COL_IMPORT_ID, importId) values.put(COL_IMPORT_ID, importId)

View File

@ -44,7 +44,7 @@ class EventsHelper(val context: Context) {
fun getEventTypeWithCalDAVCalendarId(calendarId: Int) = context.eventTypesDB.getEventTypeWithCalDAVCalendarId(calendarId) fun getEventTypeWithCalDAVCalendarId(calendarId: Int) = context.eventTypesDB.getEventTypeWithCalDAVCalendarId(calendarId)
fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean) { fun deleteEventTypes(eventTypes: ArrayList<EventType>, deleteEvents: Boolean) {
val typesToDelete = eventTypes.asSequence().filter { it.caldavCalendarId == 0 && it.id != DBHelper.REGULAR_EVENT_TYPE_ID }.toMutableList() val typesToDelete = eventTypes.asSequence().filter { it.caldavCalendarId == 0 && it.id != REGULAR_EVENT_TYPE_ID }.toMutableList()
val deleteIds = typesToDelete.map { it.id }.toMutableList() val deleteIds = typesToDelete.map { it.id }.toMutableList()
val deletedSet = deleteIds.map { it.toString() }.toHashSet() val deletedSet = deleteIds.map { it.toString() }.toHashSet()
context.config.removeDisplayEventTypes(deletedSet) context.config.removeDisplayEventTypes(deletedSet)
@ -57,7 +57,7 @@ class EventsHelper(val context: Context) {
if (deleteEvents) { if (deleteEvents) {
context.dbHelper.deleteEventsWithType(eventTypeId!!) context.dbHelper.deleteEventsWithType(eventTypeId!!)
} else { } else {
context.dbHelper.resetEventsWithType(eventTypeId!!) context.eventsDB.resetEventsWithType(eventTypeId!!)
} }
} }
@ -167,4 +167,16 @@ class EventsHelper(val context: Context) {
deleteEvents(childIds, deleteFromCalDAV) deleteEvents(childIds, deleteFromCalDAV)
} }
} }
fun addEventRepeatLimit(eventId: Long, limitTS: Int) {
val time = Formatter.getDateTimeFromTS(limitTS)
context.eventRepetitionsDB.updateEventRepetitionLimit(limitTS - time.hourOfDay, eventId)
if (context.config.caldavSync) {
val event = context.eventsDB.getEventWithId(eventId)
if (event?.getCalDAVCalendarId() != 0) {
CalDAVHandler(context).updateCalDAVEvent(event!!)
}
}
}
} }

View File

@ -29,7 +29,7 @@ class IcsImporter(val activity: SimpleActivity) {
private var curRepeatInterval = 0 private var curRepeatInterval = 0
private var curRepeatLimit = 0 private var curRepeatLimit = 0
private var curRepeatRule = 0 private var curRepeatRule = 0
private var curEventTypeId = DBHelper.REGULAR_EVENT_TYPE_ID private var curEventTypeId = REGULAR_EVENT_TYPE_ID
private var curLastModified = 0L private var curLastModified = 0L
private var curCategoryColor = -2 private var curCategoryColor = -2
private var isNotificationDescription = false private var isNotificationDescription = false
@ -255,7 +255,7 @@ class IcsImporter(val activity: SimpleActivity) {
curRepeatInterval = 0 curRepeatInterval = 0
curRepeatLimit = 0 curRepeatLimit = 0
curRepeatRule = 0 curRepeatRule = 0
curEventTypeId = DBHelper.REGULAR_EVENT_TYPE_ID curEventTypeId = REGULAR_EVENT_TYPE_ID
curLastModified = 0L curLastModified = 0L
curCategoryColor = -2 curCategoryColor = -2
isNotificationDescription = false isNotificationDescription = false

View File

@ -4,6 +4,7 @@ import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID
import com.simplemobiletools.calendar.pro.helpers.SOURCE_CONTACT_ANNIVERSARY import com.simplemobiletools.calendar.pro.helpers.SOURCE_CONTACT_ANNIVERSARY
import com.simplemobiletools.calendar.pro.helpers.SOURCE_CONTACT_BIRTHDAY import com.simplemobiletools.calendar.pro.helpers.SOURCE_CONTACT_BIRTHDAY
import com.simplemobiletools.calendar.pro.models.Event import com.simplemobiletools.calendar.pro.models.Event
@ -43,6 +44,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("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId")
fun resetEventsWithType(eventTypeId: Long)
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertOrUpdate(event: Event): Long fun insertOrUpdate(event: Event): Long

View File

@ -28,7 +28,7 @@ data class Event(
@ColumnInfo(name = "repeat_limit") var repeatLimit: Int = 0, @ColumnInfo(name = "repeat_limit") var repeatLimit: Int = 0,
@ColumnInfo(name = "import_id") var importId: String = "", @ColumnInfo(name = "import_id") var importId: String = "",
@ColumnInfo(name = "flags") var flags: Int = 0, @ColumnInfo(name = "flags") var flags: Int = 0,
@ColumnInfo(name = "event_type") var eventType: Long = DBHelper.REGULAR_EVENT_TYPE_ID, @ColumnInfo(name = "event_type") var eventType: Long = REGULAR_EVENT_TYPE_ID,
@ColumnInfo(name = "parent_id") var parentId: Long = 0, @ColumnInfo(name = "parent_id") var parentId: Long = 0,
@ColumnInfo(name = "last_updated") var lastUpdated: Long = 0L, @ColumnInfo(name = "last_updated") var lastUpdated: Long = 0L,
@ColumnInfo(name = "source") var source: String = SOURCE_SIMPLE_CALENDAR) @ColumnInfo(name = "source") var source: String = SOURCE_SIMPLE_CALENDAR)