Implemented IRemitteeSearcher in RoomBankingPersistence
This commit is contained in:
parent
12e84109f3
commit
bf5514f37b
|
@ -4,6 +4,8 @@ import android.content.Context
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import net.dankito.banking.persistence.dao.saveOrUpdate
|
import net.dankito.banking.persistence.dao.saveOrUpdate
|
||||||
import net.dankito.banking.persistence.model.*
|
import net.dankito.banking.persistence.model.*
|
||||||
|
import net.dankito.banking.search.IRemitteeSearcher
|
||||||
|
import net.dankito.banking.search.Remittee
|
||||||
import net.dankito.banking.ui.model.IAccountTransaction
|
import net.dankito.banking.ui.model.IAccountTransaction
|
||||||
import net.dankito.banking.ui.model.TypedBankAccount
|
import net.dankito.banking.ui.model.TypedBankAccount
|
||||||
import net.dankito.banking.ui.model.TypedCustomer
|
import net.dankito.banking.ui.model.TypedCustomer
|
||||||
|
@ -13,7 +15,7 @@ import net.dankito.banking.util.persistence.doSaveUrlToFile
|
||||||
import net.dankito.utils.multiplatform.File
|
import net.dankito.utils.multiplatform.File
|
||||||
|
|
||||||
|
|
||||||
open class RoomBankingPersistence(applicationContext: Context) : IBankingPersistence {
|
open class RoomBankingPersistence(applicationContext: Context) : IBankingPersistence, IRemitteeSearcher {
|
||||||
|
|
||||||
protected val db = Room.databaseBuilder(
|
protected val db = Room.databaseBuilder(
|
||||||
applicationContext,
|
applicationContext,
|
||||||
|
@ -131,4 +133,12 @@ open class RoomBankingPersistence(applicationContext: Context) : IBankingPersist
|
||||||
doSaveUrlToFile(url, file)
|
doSaveUrlToFile(url, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun findRemittees(query: String): List<Remittee> {
|
||||||
|
return db.accountTransactionDao().findRemittees(query)
|
||||||
|
.toSet() // don't display same Remittee multiple times
|
||||||
|
.filterNot { it.bankCode.isNullOrBlank() || it.accountId.isNullOrBlank() }
|
||||||
|
.map { Remittee(it.name, it.accountId, it.bankCode) }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@ package net.dankito.banking.persistence.dao
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import net.dankito.banking.persistence.model.AccountTransaction
|
import net.dankito.banking.persistence.model.AccountTransaction
|
||||||
|
import net.dankito.banking.persistence.model.Remittee
|
||||||
|
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
|
@ -11,4 +12,7 @@ interface AccountTransactionDao : BaseDao<AccountTransaction> {
|
||||||
@Query("SELECT * FROM AccountTransaction")
|
@Query("SELECT * FROM AccountTransaction")
|
||||||
fun getAll(): List<AccountTransaction>
|
fun getAll(): List<AccountTransaction>
|
||||||
|
|
||||||
|
@Query("SELECT otherPartyName, otherPartyBankCode, otherPartyAccountId FROM AccountTransaction WHERE otherPartyName LIKE '%' || :query || '%'")
|
||||||
|
fun findRemittees(query: String): List<Remittee>
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package net.dankito.banking.persistence.model
|
||||||
|
|
||||||
|
import androidx.room.ColumnInfo
|
||||||
|
|
||||||
|
|
||||||
|
data class Remittee(
|
||||||
|
@ColumnInfo(name = "otherPartyName") val name: String,
|
||||||
|
|
||||||
|
@ColumnInfo(name = "otherPartyBankCode") val bankCode: String?,
|
||||||
|
|
||||||
|
@ColumnInfo(name = "otherPartyAccountId") val accountId: String?
|
||||||
|
)
|
|
@ -121,8 +121,8 @@ class BankingModule(private val applicationContext: Context) {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideRemitteeSearcher(@Named(IndexFolderKey) indexFolder: File) : IRemitteeSearcher {
|
fun provideRemitteeSearcher(bankingPersistence: IBankingPersistence) : IRemitteeSearcher {
|
||||||
return LuceneRemitteeSearcher(indexFolder)
|
return bankingPersistence as RoomBankingPersistence
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|
Loading…
Reference in New Issue