package jackall.moncalc.db
import io.realm.Realm
import io.realm.RealmModel
import io.realm.RealmObject
import io.realm.RealmResults
import jackall.moncalc.vo.Fruit
import jackall.moncalc.vo.Grade
import jackall.moncalc.vo.Temple
/**
* Created by matsumoto_k on 2017/11/03.
*/
/**
* fruit, temple, gradeのデータを管理するクラス
*/
class MonstDataRealmHelper {
val templeRealmHelper = TempleRealmHelper()
val fruitRealmHelper = FruitRealmHelper()
val gradeRealmHelper = GradeRealmHelper()
val realm by lazy { Realm.getInstance(RealmConfig().config) }
fun update(realmObject: List<RealmObject>) {
realm.executeTransaction {
realm.copyToRealmOrUpdate(realmObject)
}
}
fun <T : RealmModel> findAll(realmModel: Class<T>): RealmResults<T> {
return realm.where(realmModel).findAll()
}
fun <T : RealmModel> findNames(realmModel: Class<T>): List<String> {
val results = ArrayList<String>()
when (realmModel) {
Temple::class.java -> {
realm.where(Temple::class.java).findAll().forEach {
results.add(it.name)
}
}
Fruit::class.java -> {
realm.where(Fruit::class.java).findAll().forEach {
results.add(it.name)
}
}
Grade::class.java -> {
realm.where(Grade::class.java).findAll().forEach {
results.add(it.name)
}
}
}
return results
}
fun <T : RealmModel> findIdByRank(realmModel: Class<T>, rank: Int): Int {
when (realmModel) {
Temple::class.java -> {
return realm.where(realmModel).equalTo("rank", rank).findFirst().id
}
Fruit::class.java -> {
return realm.where(realmModel).equalTo("rank", rank).findFirst().id
}
Grade::class.java -> {
return realm.where(realmModel).equalTo("rank", rank).findFirst().id
}
}
return -1
}
fun <T : RealmModel> findNameById(realmModel: Class<T>, id: Int): String {
when (realmModel) {
Temple::class.java -> {
return realm.where(realmModel).equalTo("id", id).findFirst().name
}
Fruit::class.java -> {
return realm.where(realmModel).equalTo("id", id).findFirst().name
}
Grade::class.java -> {
return realm.where(realmModel).equalTo("id", id).findFirst().name
}
}
return "unknown"
}
fun findTempleAttributeByRank(rank: Int): Int {
return realm.where(Temple::class.java).equalTo("rank", rank).findFirst().attribute
}
fun findTempleShortName(id: Int): String {
return realm.where(Temple::class.java).equalTo("id", id).findFirst().shortName
}
fun close() {
templeRealmHelper.close()
fruitRealmHelper.close()
gradeRealmHelper.close()
}
}