add a new CountableUsage interface

feature/top10
Razmig Sarkissian 7 years ago
parent 41cf2ac730
commit 146ca69bb6
  1. 26
      app/src/main/java/net/pokeranalytics/android/model/LiveData.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt
  3. 1
      app/src/main/java/net/pokeranalytics/android/model/interfaces/Manageable.kt
  4. 11
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  5. 1
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  6. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt

@ -5,10 +5,14 @@ import io.realm.Realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.RealmResults import io.realm.RealmResults
import io.realm.Sort import io.realm.Sort
import io.realm.kotlin.where
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.CountableUsage
import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.Manageable
import net.pokeranalytics.android.model.interfaces.Timed
import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.view.Localizable import net.pokeranalytics.android.ui.view.Localizable
import timber.log.Timber
/** /**
* An enum managing the business objects related to a realm results * An enum managing the business objects related to a realm results
@ -22,8 +26,26 @@ enum class LiveData : Localizable {
TRANSACTION_TYPE; TRANSACTION_TYPE;
fun items(realm: Realm, fieldName: String? = null, sortOrder: Sort? = null): RealmResults<*> { fun items(realm: Realm, fieldName: String? = null, sortOrder: Sort? = null): RealmResults<*> {
return realm.where(this.relatedEntity).findAll() var results = realm.where(this.relatedEntity).findAll().sort(fieldName ?: this.sortingFieldName, sortOrder ?: this.sorting)
.sort(fieldName ?: this.sortingFieldName, sortOrder ?: this.sorting)
if (results.size > 0) {
if (results.first() is CountableUsage) {
this.setUseCount(realm, results)
return results.sort("useCount", Sort.DESCENDING)
}
}
return results
}
fun setUseCount(realm: Realm, realmResults: RealmResults<*>) {
realm.executeTransaction {
realmResults.forEach { countableUsage ->
(countableUsage as CountableUsage).useCount = it.where<Session>().equalTo(
"${relatedEntity.simpleName.toLowerCase()}.id",
countableUsage.uniqueIdentifier()
).count().toInt()
}
}
} }
/** /**

@ -0,0 +1,7 @@
package net.pokeranalytics.android.model.interfaces
interface CountableUsage : Identifiable {
var useCount: Int
get() { return 0 }
set(newValue) {}
}

@ -17,7 +17,6 @@ interface Identifiable {
* A unique identifier getter * A unique identifier getter
*/ */
fun uniqueIdentifier(): String fun uniqueIdentifier(): String
} }
/** /**

@ -1,18 +1,24 @@
package net.pokeranalytics.android.model.realm package net.pokeranalytics.android.model.realm
import io.realm.Realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import io.realm.kotlin.where
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.CountableUsage
import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.Manageable
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.GameRow import net.pokeranalytics.android.ui.view.rowrepresentable.GameRow
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import timber.log.Timber
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
open class Game : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable { open class Game : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable, CountableUsage {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -23,6 +29,9 @@ open class Game : RealmObject(), Manageable, StaticRowRepresentableDataSource, R
// A shorter name for the game // A shorter name for the game
var shortName: String? = null var shortName: String? = null
// CountableUsage
override var useCount: Int = 0
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.name return this.name
} }

@ -5,6 +5,7 @@ import android.text.InputType
import io.realm.Realm import io.realm.Realm
import io.realm.RealmList import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.Sort
import io.realm.annotations.Ignore import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import io.realm.kotlin.where import io.realm.kotlin.where

@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.interfaces.CountableUsage
import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.Manageable
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -12,7 +13,8 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.TournamentFeatureRow
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
open class TournamentFeature : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable { open class TournamentFeature : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable,
CountableUsage {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -20,6 +22,9 @@ open class TournamentFeature : RealmObject(), Manageable, StaticRowRepresentable
// The name of the feature // The name of the feature
var name: String = "" var name: String = ""
// CountableUsage
override var useCount: Int = 0
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.name return this.name
} }

Loading…
Cancel
Save