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 32f4dc15574f91353d26bb0b8b8053afe69d6430..e108f9da656e355e7ef445cca88cde27ed214cc1 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 0a5fdd0b82d9e9673eb4867e3568c885e754b769..651263331b3c9c85bf447f1d22a93e188eaeab7c 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()