From e575c29d51401c513d636fa727e42f74da1c5998 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 14 Oct 2021 14:40:54 -0300
Subject: [PATCH] Steal Database#getContacts() from !24

---
 .../briarproject/mailbox/core/db/Database.kt  |  3 +++
 .../mailbox/core/db/JdbcDatabase.kt           | 27 +++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Database.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Database.kt
index 32f4dc15..e108f9da 100644
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Database.kt
+++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Database.kt
@@ -29,6 +29,9 @@ interface Database : TransactionManager {
     @Throws(DbException::class)
     fun getContact(txn: Transaction, id: Int): Contact?
 
+    @Throws(DbException::class)
+    fun getContacts(txn: Transaction): List<Contact>
+
     @Throws(DbException::class)
     fun removeContact(txn: Transaction, id: Int)
 
diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/JdbcDatabase.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/JdbcDatabase.kt
index 0a5fdd0b..65126333 100644
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/JdbcDatabase.kt
+++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/db/JdbcDatabase.kt
@@ -488,6 +488,33 @@ abstract class JdbcDatabase(private val dbTypes: DatabaseTypes, private val cloc
         }
     }
 
+    @Throws(DbException::class)
+    override fun getContacts(txn: Transaction): List<Contact> {
+        val contacts = ArrayList<Contact>()
+        val connection: Connection = txn.unbox()
+        var ps: PreparedStatement? = null
+        var rs: ResultSet? = null
+        try {
+            val sql = "SELECT contactId, token, inbox, outbox FROM contacts"
+            ps = connection.prepareStatement(sql)
+            rs = ps.executeQuery()
+            while (rs.next()) {
+                val id = rs.getInt(1)
+                val token = rs.getString(2)
+                val inboxId = rs.getString(3)
+                val outboxId = rs.getString(4)
+                contacts.add(Contact(id, token, inboxId, outboxId))
+            }
+            rs.close()
+            ps.close()
+            return contacts
+        } catch (e: SQLException) {
+            tryToClose(rs, LOG)
+            tryToClose(ps, LOG)
+            throw DbException(e)
+        }
+    }
+
     @Throws(DbException::class)
     override fun removeContact(txn: Transaction, id: Int) {
         val connection: Connection = txn.unbox()
-- 
GitLab