commit
b7f531c723
@ -0,0 +1,69 @@ |
|||||||
|
package net.pokeranalytics.android.model.realm |
||||||
|
|
||||||
|
import io.realm.Realm |
||||||
|
import io.realm.RealmObject |
||||||
|
import io.realm.RealmResults |
||||||
|
import io.realm.Sort |
||||||
|
import java.util.* |
||||||
|
|
||||||
|
enum class DataList { |
||||||
|
NONE, |
||||||
|
BANKROLL, |
||||||
|
GAME, |
||||||
|
LOCATION, |
||||||
|
TOURNAMENT_TYPE, |
||||||
|
TRANSACTION_TYPE; |
||||||
|
|
||||||
|
fun items(realm: Realm, fieldName: String? = null, sortOrder: Sort? = null): RealmResults<*> { |
||||||
|
return realm.where(this.relatedEntity).findAll().sort(fieldName?:this.sortingFieldName, sortOrder?:this.sorting) |
||||||
|
} |
||||||
|
|
||||||
|
private var sortingFieldName: String = "name" |
||||||
|
private var sorting: Sort = Sort.DESCENDING |
||||||
|
|
||||||
|
|
||||||
|
private val relatedEntity: Class < out RealmObject > |
||||||
|
get() { |
||||||
|
return when (this) { |
||||||
|
NONE -> RealmObject::class.java |
||||||
|
BANKROLL -> Bankroll::class.java |
||||||
|
GAME -> Game::class.java |
||||||
|
LOCATION -> Location::class.java |
||||||
|
TOURNAMENT_TYPE -> TournamentFeature::class.java |
||||||
|
TRANSACTION_TYPE -> TransactionType::class.java |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
fun getData(realm:Realm, primaryKey:String?): RealmObject? { |
||||||
|
var proxyItem: RealmObject? = null |
||||||
|
primaryKey?.let { |
||||||
|
val t = realm.where(this.relatedEntity).equalTo("id", it).findFirst() |
||||||
|
t?.let { |
||||||
|
proxyItem = t |
||||||
|
} |
||||||
|
} |
||||||
|
return proxyItem |
||||||
|
} |
||||||
|
|
||||||
|
fun updateOrCreate(realm:Realm, primaryKey:String?): RealmObject { |
||||||
|
val proxyItem: RealmObject? = this.getData(realm, primaryKey) |
||||||
|
proxyItem?.let { |
||||||
|
return realm.copyFromRealm(it) |
||||||
|
} ?: run { |
||||||
|
realm.beginTransaction() |
||||||
|
val t = realm.createObject(this.relatedEntity, UUID.randomUUID().toString()) |
||||||
|
realm.commitTransaction() |
||||||
|
return realm.copyFromRealm(t) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
interface ListableDataSource { |
||||||
|
fun items(realm: Realm, fieldName: String? = null, sortOrder: Sort? = null): RealmResults<*> |
||||||
|
var sortingFieldName: String |
||||||
|
var sorting: Sort |
||||||
|
var relatedEntity: Class < out RealmObject > |
||||||
|
} |
||||||
|
*/ |
||||||
Loading…
Reference in new issue