|
|
|
|
@ -3,46 +3,44 @@ package net.pokeranalytics.android.model |
|
|
|
|
import android.content.Context |
|
|
|
|
import io.realm.Realm |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.Deletable |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.Identifiable |
|
|
|
|
import net.pokeranalytics.android.model.realm.* |
|
|
|
|
import net.pokeranalytics.android.ui.view.Localizable |
|
|
|
|
import net.pokeranalytics.android.util.enumerations.IntIdentifiable |
|
|
|
|
import net.pokeranalytics.android.util.enumerations.IntSearchable |
|
|
|
|
import net.pokeranalytics.android.util.extensions.findById |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* An enum managing the business objects related to a realm results |
|
|
|
|
*/ |
|
|
|
|
enum class LiveData : Localizable { |
|
|
|
|
BANKROLL, |
|
|
|
|
GAME, |
|
|
|
|
LOCATION, |
|
|
|
|
TOURNAMENT_NAME, |
|
|
|
|
TOURNAMENT_FEATURE, |
|
|
|
|
TRANSACTION, |
|
|
|
|
TRANSACTION_TYPE, |
|
|
|
|
FILTER, |
|
|
|
|
CUSTOM_FIELD, |
|
|
|
|
REPORT_SETUP; |
|
|
|
|
|
|
|
|
|
var subType:Int? = null |
|
|
|
|
enum class LiveData(override var uniqueIdentifier: Int, val relatedEntity: Class<out Identifiable>) : Localizable, IntIdentifiable { |
|
|
|
|
BANKROLL(0, Bankroll::class.java), |
|
|
|
|
GAME(1, Game::class.java), |
|
|
|
|
LOCATION(2, Location::class.java), |
|
|
|
|
TOURNAMENT_NAME(3, TournamentName::class.java), |
|
|
|
|
TOURNAMENT_FEATURE(4, TournamentFeature::class.java), |
|
|
|
|
TRANSACTION(5, Transaction::class.java), |
|
|
|
|
TRANSACTION_TYPE(6, TransactionType::class.java), |
|
|
|
|
FILTER(7, Filter::class.java), |
|
|
|
|
CUSTOM_FIELD(8, CustomField::class.java), |
|
|
|
|
REPORT_SETUP(9, ReportSetup::class.java), |
|
|
|
|
SESSION(10, Session::class.java); |
|
|
|
|
|
|
|
|
|
companion object : IntSearchable<LiveData> { |
|
|
|
|
|
|
|
|
|
override fun valuesInternal(): Array<LiveData> { |
|
|
|
|
return values() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val relatedEntity: Class<out Deletable> |
|
|
|
|
get() { |
|
|
|
|
return when (this) { |
|
|
|
|
BANKROLL -> Bankroll::class.java |
|
|
|
|
GAME -> Game::class.java |
|
|
|
|
LOCATION -> Location::class.java |
|
|
|
|
TOURNAMENT_NAME -> TournamentName::class.java |
|
|
|
|
TOURNAMENT_FEATURE -> TournamentFeature::class.java |
|
|
|
|
TRANSACTION -> Transaction::class.java |
|
|
|
|
TRANSACTION_TYPE -> TransactionType::class.java |
|
|
|
|
FILTER -> Filter::class.java |
|
|
|
|
CUSTOM_FIELD -> CustomField::class.java |
|
|
|
|
REPORT_SETUP -> ReportSetup::class.java |
|
|
|
|
} |
|
|
|
|
fun valueFromClass(clazz: Class<out Identifiable>) : LiveData? { |
|
|
|
|
return values().firstOrNull { it.relatedEntity == clazz } |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var subType:Int? = null |
|
|
|
|
|
|
|
|
|
fun updateOrCreate(realm: Realm, primaryKey: String?): Deletable { |
|
|
|
|
val proxyItem: Deletable? = this.getData(realm, primaryKey) |
|
|
|
|
fun updateOrCreate(realm: Realm, primaryKey: String?): Identifiable { |
|
|
|
|
val proxyItem: Identifiable? = this.getData(realm, primaryKey) |
|
|
|
|
proxyItem?.let { |
|
|
|
|
return realm.copyFromRealm(it) |
|
|
|
|
} ?: run { |
|
|
|
|
@ -50,12 +48,12 @@ enum class LiveData : Localizable { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun newEntity(): Deletable { |
|
|
|
|
private fun newEntity(): Identifiable { |
|
|
|
|
return this.relatedEntity.newInstance() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun getData(realm: Realm, primaryKey: String?): Deletable? { |
|
|
|
|
var proxyItem: Deletable? = null |
|
|
|
|
fun getData(realm: Realm, primaryKey: String?): Identifiable? { |
|
|
|
|
var proxyItem: Identifiable? = null |
|
|
|
|
primaryKey?.let { |
|
|
|
|
val t = realm.findById(this.relatedEntity, it) |
|
|
|
|
t?.let { |
|
|
|
|
@ -78,6 +76,7 @@ enum class LiveData : Localizable { |
|
|
|
|
FILTER -> R.string.filter |
|
|
|
|
CUSTOM_FIELD -> R.string.custom_field |
|
|
|
|
REPORT_SETUP -> R.string.custom |
|
|
|
|
SESSION -> R.string.session |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -94,6 +93,7 @@ enum class LiveData : Localizable { |
|
|
|
|
FILTER -> R.string.filters |
|
|
|
|
CUSTOM_FIELD -> R.string.custom_fields |
|
|
|
|
REPORT_SETUP -> R.string.custom |
|
|
|
|
SESSION -> R.string.sessions |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -110,6 +110,7 @@ enum class LiveData : Localizable { |
|
|
|
|
FILTER -> R.string.new_filter |
|
|
|
|
CUSTOM_FIELD -> R.string.new_custom_field |
|
|
|
|
REPORT_SETUP -> R.string.new_report |
|
|
|
|
else -> R.string.none |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|