From 7ed2e73a91b4079d4be90fb83094295e2b1ef6df Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Fri, 27 Jan 2023 18:49:31 +0200 Subject: [PATCH] catch exceptions in Android Database helper (#7027) --- .../com/mattermost/helpers/DatabaseHelper.kt | 87 ++++++++++++------- 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt b/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt index 901f80a78c..8b78b96fad 100644 --- a/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt +++ b/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt @@ -20,13 +20,18 @@ class DatabaseHelper { val onlyServerUrl: String? get() { - val query = "SELECT url FROM Servers WHERE last_active_at != 0 AND identifier != ''" - val cursor = defaultDatabase!!.rawQuery(query) - if (cursor.count == 1) { - cursor.moveToFirst() - val url = cursor.getString(0) - cursor.close() - return url + try { + val query = "SELECT url FROM Servers WHERE last_active_at != 0 AND identifier != ''" + val cursor = defaultDatabase!!.rawQuery(query) + if (cursor.count == 1) { + cursor.moveToFirst() + val url = cursor.getString(0) + cursor.close() + return url + } + } catch (e: Exception) { + e.printStackTrace() + // let it fall to return null } return null } @@ -38,14 +43,19 @@ class DatabaseHelper { } fun getServerUrlForIdentifier(identifier: String): String? { - val args: Array = arrayOf(identifier) - val query = "SELECT url FROM Servers WHERE identifier=?" - val cursor = defaultDatabase!!.rawQuery(query, args) - if (cursor.count == 1) { - cursor.moveToFirst() - val url = cursor.getString(0) - cursor.close() - return url + try { + val args: Array = arrayOf(identifier) + val query = "SELECT url FROM Servers WHERE identifier=?" + val cursor = defaultDatabase!!.rawQuery(query, args) + if (cursor.count == 1) { + cursor.moveToFirst() + val url = cursor.getString(0) + cursor.close() + return url + } + } catch (e: Exception) { + e.printStackTrace() + // let it fall to return null } return null } @@ -63,19 +73,25 @@ class DatabaseHelper { return resultMap } } catch (e: Exception) { + e.printStackTrace() return null } } fun getDatabaseForServer(context: Context?, serverUrl: String): Database? { - val args: Array = arrayOf(serverUrl) - val query = "SELECT db_path FROM Servers WHERE url=?" - val cursor = defaultDatabase!!.rawQuery(query, args) - if (cursor.count == 1) { - cursor.moveToFirst() - val databasePath = cursor.getString(0) - cursor.close() - return Database(databasePath, context!!) + try { + val args: Array = arrayOf(serverUrl) + val query = "SELECT db_path FROM Servers WHERE url=?" + val cursor = defaultDatabase!!.rawQuery(query, args) + if (cursor.count == 1) { + cursor.moveToFirst() + val databasePath = cursor.getString(0) + cursor.close() + return Database(databasePath, context!!) + } + } catch (e: Exception) { + e.printStackTrace() + // let it fall to return null } return null } @@ -148,18 +164,23 @@ class DatabaseHelper { } fun queryPostSinceForChannel(db: Database?, channelId: String): Double? { - if (db != null) { - val postsInChannelQuery = "SELECT last_fetched_at FROM MyChannel WHERE id=? LIMIT 1" - val cursor1 = db.rawQuery(postsInChannelQuery, arrayOf(channelId)) - if (cursor1.count == 1) { - cursor1.moveToFirst() - val lastFetchedAt = cursor1.getDouble(0) - cursor1.close() - if (lastFetchedAt == 0.0) { - return queryLastPostCreateAt(db, channelId) + try { + if (db != null) { + val postsInChannelQuery = "SELECT last_fetched_at FROM MyChannel WHERE id=? LIMIT 1" + val cursor1 = db.rawQuery(postsInChannelQuery, arrayOf(channelId)) + if (cursor1.count == 1) { + cursor1.moveToFirst() + val lastFetchedAt = cursor1.getDouble(0) + cursor1.close() + if (lastFetchedAt == 0.0) { + return queryLastPostCreateAt(db, channelId) + } + return lastFetchedAt } - return lastFetchedAt } + } catch (e: Exception) { + e.printStackTrace() + // let it fall to return null } return null }