Issue 2: Add config #7

Merged
mathieu merged 4 commits from ms/issues-2/add-config-db into master 2020-04-25 20:37:13 +00:00
5 changed files with 71 additions and 4 deletions
Showing only changes of commit 148fd55e92 - Show all commits

View File

@ -11,8 +11,8 @@ import java.io.File
class AttestationDao(private val savePath: String, private val filesPath: String) { class AttestationDao(private val savePath: String, private val filesPath: String) {
private var _attestations = MutableLiveData<ArrayList<Attestation>>() private val _attestations = MutableLiveData<ArrayList<Attestation>>()
private var fileName = "attestation.db" private val fileName = "attestation.db"
private val type = object : TypeToken<ArrayList<Attestation>>() {}.type private val type = object : TypeToken<ArrayList<Attestation>>() {}.type
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")

View File

@ -0,0 +1,41 @@
package fr.sanchezm.attestationsCovid19.data.db.dao
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.google.gson.Gson
import fr.sanchezm.attestationsCovid19.BuildConfig
import fr.sanchezm.attestationsCovid19.data.db.entity.Config
import java.io.File
class ConfigDao(private val savePath: String) {
private val _config = MutableLiveData<Config>()
private val fileName = "config.db"
fun getConfig(): LiveData<Config> =
_config
fun updateConfig(config: Config) {
_config.value = config
save()
}
init {
load()
}
private fun load() {
val file = File("$savePath/$fileName")
if (file.exists()) {
_config.value = Gson().fromJson(file.readText(Charsets.UTF_8), Config::class.java)
} else {
_config.value = Config(BuildConfig.DB_VERSION)
}
}
private fun save() {
File("$savePath/$fileName").writeText(Gson().toJson(_config.value))
}
}

View File

@ -8,8 +8,8 @@ import java.io.File
class ProfileDao(private val path: String) { class ProfileDao(private val path: String) {
private var _profile = MutableLiveData<Profile>() private val _profile = MutableLiveData<Profile>()
private var fileName = "profile.db" private val fileName = "profile.db"
fun getProfile(): LiveData<Profile> = fun getProfile(): LiveData<Profile> =
_profile _profile

View File

@ -0,0 +1,5 @@
package fr.sanchezm.attestationsCovid19.data.db.entity
data class Config(
val dbVersion: Int
)

View File

@ -0,0 +1,21 @@
package fr.sanchezm.attestationsCovid19.data.repository
import fr.sanchezm.attestationsCovid19.data.db.dao.ConfigDao
import fr.sanchezm.attestationsCovid19.data.db.entity.Config
class ConfigRepository private constructor(private val configDao: ConfigDao) {
fun getConfig() = configDao.getConfig()
fun updateConfig(config: Config) = configDao.updateConfig(config)
companion object {
@Volatile
private var instance: ConfigRepository? = null
fun getInstance(configDao: ConfigDao) =
instance ?: synchronized(this) {
instance ?: ConfigRepository(configDao).also { instance = it }
}
}
}