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() } }