diff --git a/.idea/misc.xml b/.idea/misc.xml index 283b1e5..5489fee 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -24,7 +24,7 @@ - + diff --git a/app/src/main/kotlin/jackall/moncalc/activity/MainActivity.kt b/app/src/main/kotlin/jackall/moncalc/activity/MainActivity.kt index 6a76cec..b5b12df 100644 --- a/app/src/main/kotlin/jackall/moncalc/activity/MainActivity.kt +++ b/app/src/main/kotlin/jackall/moncalc/activity/MainActivity.kt @@ -11,9 +11,7 @@ import jackall.moncalc.R import jackall.moncalc.common.PreferenceKeys import jackall.moncalc.common.PreferenceNames -import jackall.moncalc.db.FruitRealmHelper -import jackall.moncalc.db.GradeRealmHelper -import jackall.moncalc.db.TempleRealmHelper +import jackall.moncalc.db.MonstDataRealmHelper import jackall.moncalc.service.MainService import jackall.moncalc.utils.MySharedPref import jackall.moncalc.vo.MonstData @@ -24,9 +22,7 @@ class MainActivity : AppCompatActivity() { val mySharedPref by lazy { MySharedPref(this, PreferenceNames.CONFIG) } - val fruitRealmHelper by lazy { FruitRealmHelper() } - val templeRealmHelper by lazy { TempleRealmHelper() } - val gradeRealmHelper by lazy { GradeRealmHelper() } + val monstDataRealmHelper = MonstDataRealmHelper() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -39,9 +35,9 @@ val jsonReader = JsonReader(InputStreamReader(inputStream)) val monstData = Gson().fromJson(jsonReader, MonstData::class.java) - fruitRealmHelper.update(monstData.fruit) - templeRealmHelper.update(monstData.temple) - gradeRealmHelper.update(monstData.grade) + monstDataRealmHelper.update(monstData.fruit) + monstDataRealmHelper.update(monstData.temple) + monstDataRealmHelper.update(monstData.grade) mySharedPref.putValue(PreferenceKeys.QUESTDATAVERSION, Int::class.java, Const.questDataVersion) @@ -61,8 +57,7 @@ override fun onDestroy() { super.onDestroy() - fruitRealmHelper.close() - templeRealmHelper.close() + monstDataRealmHelper.close() } private fun isMainServiceRunning(): Boolean { diff --git a/app/src/main/kotlin/jackall/moncalc/db/MonstDataRealmHelper.kt b/app/src/main/kotlin/jackall/moncalc/db/MonstDataRealmHelper.kt new file mode 100644 index 0000000..c8ec1af --- /dev/null +++ b/app/src/main/kotlin/jackall/moncalc/db/MonstDataRealmHelper.kt @@ -0,0 +1,60 @@ +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) { + realm.executeTransaction { + realm.copyToRealmOrUpdate(realmObject) + } + } + + fun findAll(realmModel: Class): RealmResults { + return realm.where(realmModel).findAll() + } + + fun findNames(realmModel: Class): List { + val results = ArrayList() + 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 close() { + templeRealmHelper.close() + fruitRealmHelper.close() + gradeRealmHelper.close() + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/service/MainService.kt b/app/src/main/kotlin/jackall/moncalc/service/MainService.kt index 760157d..bed5f86 100644 --- a/app/src/main/kotlin/jackall/moncalc/service/MainService.kt +++ b/app/src/main/kotlin/jackall/moncalc/service/MainService.kt @@ -17,11 +17,12 @@ import jackall.moncalc.common.PreferenceKeys import jackall.moncalc.common.PreferenceNames import jackall.moncalc.databinding.RegistOverlayBinding -import jackall.moncalc.db.FruitRealmHelper -import jackall.moncalc.db.GradeRealmHelper -import jackall.moncalc.db.TempleRealmHelper +import jackall.moncalc.db.MonstDataRealmHelper import jackall.moncalc.utils.MySharedPref import jackall.moncalc.viewmodel.OverlayRegistViewModel +import jackall.moncalc.vo.Fruit +import jackall.moncalc.vo.Grade +import jackall.moncalc.vo.Temple /** @@ -45,9 +46,7 @@ } var isLongClick: Boolean = false - val templeRealmHelper by lazy { TempleRealmHelper() } - val fruitRealmHelper by lazy { FruitRealmHelper() } - val gradeRealmHelper by lazy { GradeRealmHelper() } + val monstDataRealmHelper = MonstDataRealmHelper() override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { val notificationBuilder = NotificationCompat.Builder(this, Const.serviceChannelId) @@ -114,9 +113,9 @@ registBinding.registViewModel = OverlayRegistViewModel(this as MainServiceContract) - val templeSpinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, templeRealmHelper.findNames()) - val fruitSpinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, fruitRealmHelper.findNames()) - val gradeSpinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, gradeRealmHelper.findNames()) + val templeSpinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, monstDataRealmHelper.findNames(Temple::class.java)) + val fruitSpinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, monstDataRealmHelper.findNames(Fruit::class.java)) + val gradeSpinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, monstDataRealmHelper.findNames(Grade::class.java)) registBinding.templeSpinner.adapter = templeSpinnerAdapter registBinding.fruitSpinner.adapter = fruitSpinnerAdapter registBinding.gradeSpinner.adapter = gradeSpinnerAdapter diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt index 5abeedd..d4ebbaa 100644 --- a/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt @@ -3,15 +3,13 @@ import android.databinding.BaseObservable import android.view.View import jackall.moncalc.Contract.MainServiceContract -import jackall.moncalc.db.FruitRealmHelper -import jackall.moncalc.db.TempleRealmHelper +import jackall.moncalc.db.MonstDataRealmHelper /** * Created by matsumoto_k on 2017/11/01. */ class OverlayRegistViewModel(val mainServiceContract: MainServiceContract) : BaseObservable() { - private val templeRealmHelper = TempleRealmHelper() - private val fruitRealmHelper = FruitRealmHelper() + private val monstDataRealmHelper = MonstDataRealmHelper() fun onClickMin(view: View) { mainServiceContract.showMoveView() } @@ -21,7 +19,6 @@ } fun realmInstanceClose() { - templeRealmHelper.close() - fruitRealmHelper.close() + monstDataRealmHelper.close() } } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/vo/MonstData.kt b/app/src/main/kotlin/jackall/moncalc/vo/MonstData.kt index baabfa0..d7e8a0d 100644 --- a/app/src/main/kotlin/jackall/moncalc/vo/MonstData.kt +++ b/app/src/main/kotlin/jackall/moncalc/vo/MonstData.kt @@ -1,10 +1,13 @@ package jackall.moncalc.vo +import io.realm.RealmList +import io.realm.RealmObject + /** * Created by matsumoto_k on 2017/11/03. */ -data class MonstData( - val fruit: List, - val temple: List, - val grade: List -) \ No newline at end of file +open class MonstData( + open var fruit: RealmList = RealmList(), + open var temple: RealmList = RealmList(), + open var grade: RealmList = RealmList() +) : RealmObject() \ No newline at end of file