Refactoring : row enums have their own files now

feature/top10
Laurent 7 years ago
parent 2104a9634d
commit f6bbffedba
  1. 18
      app/src/main/java/net/pokeranalytics/android/model/StatRepresentable.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  3. 37
      app/src/main/java/net/pokeranalytics/android/ui/datasource/StatsDataSource.kt
  4. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt
  5. 262
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt
  6. 35
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt
  7. 34
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt
  8. 35
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt
  9. 132
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt
  10. 45
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt
  11. 17
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SimpleRow.kt
  12. 7
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentFeatureRow.kt
  13. 7
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TransactionTypeRow.kt

@ -0,0 +1,18 @@
package net.pokeranalytics.android.model
import net.pokeranalytics.android.calculus.ComputedStat
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
class StatRepresentable(stat: ComputedStat) : RowRepresentable {
var computedStat: ComputedStat = stat
override val viewType: Int
get() = RowViewType.STAT.ordinal
override val resId: Int?
get() = this.computedStat.stat.resId
}

@ -214,7 +214,7 @@ open class Session : RealmObject(), SessionInterface, Savable,
/**
* Delete the object from realm
* TODO: Cascade delete?
* @TODO: Cascade delete?
*/
fun delete() {
realm.executeTransaction {

@ -1,37 +0,0 @@
package net.pokeranalytics.android.ui.datasource
import net.pokeranalytics.android.calculus.ComputedResults
import net.pokeranalytics.android.calculus.ComputedStat
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
class StatRepresentable(stat: ComputedStat) : RowRepresentable {
var computedStat: ComputedStat = stat
override val viewType: Int
get() = RowViewType.STAT.ordinal
override val resId: Int?
get() = this.computedStat.stat.resId
}
class StatsDataSource(results: List<ComputedResults>) {
var results: List<ComputedResults> = results
var rows: List<RowRepresentable> = listOf()
init {
}
fun numberOfRows(): Int {
return 0
// return this.results.fold(0) { acc, computedResults ->
// return acc + computedResults.numberOfStats()
// }
}
}

@ -12,11 +12,11 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputedResults
import net.pokeranalytics.android.calculus.SessionGroup
import net.pokeranalytics.android.model.StatRepresentable
import net.pokeranalytics.android.model.extensions.SessionType
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.datasource.StatRepresentable
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.HeaderRowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentable
@ -64,7 +64,7 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource {
val format = stat.computedStat.format()
return format.text
}
return "nope"
return "shouldn't happen :)"
}
/**

@ -1,10 +1,7 @@
package net.pokeranalytics.android.ui.view
import android.content.Context
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.extensions.SessionState
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
/**
@ -76,7 +73,6 @@ interface Displayable : Localizable {
return false
}
val headerValues: ArrayList<String>
get() {
return ArrayList<String>()
@ -112,263 +108,5 @@ class HeaderRowRepresentable(
}
enum class SessionRow : RowRepresentable {
PRIZE,
CASHED_OUT,
INITIAL_BUY_IN,
BUY_IN,
POSITION,
PLAYERS,
TIPS,
GAME,
BLINDS,
LOCATION,
BANKROLL,
TABLE_SIZE,
TOURNAMENT_TYPE,
START_DATE,
END_DATE,
BREAK_TIME,
COMMENT;
companion object {
/**
* Return the rows to display for the current session state
*/
fun getRows(type: Int, sessionState: SessionState): ArrayList<RowRepresentable> {
when (type) {
Session.TYPE_TOURNAMENT -> {
return when (sessionState) {
SessionState.PENDING -> {
arrayListOf(
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE,
START_DATE, END_DATE
)
}
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> {
arrayListOf(
PRIZE, BUY_IN, POSITION, PLAYERS, TIPS,
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE,
START_DATE, END_DATE, BREAK_TIME, COMMENT
)
}
else -> arrayListOf()
}
}
Session.TYPE_GAME -> {
return when (sessionState) {
SessionState.PENDING -> {
arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE)
}
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> {
arrayListOf(
CASHED_OUT, BUY_IN, TIPS,
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT
)
}
else -> arrayListOf()
}
}
}
return arrayListOf()
}
}
override val needSeparator: Boolean
get() {
return when (this) {
SessionRow.TIPS -> true
else -> false
}
}
override val resId: Int?
get() {
return when (this) {
PRIZE -> R.string.prize
POSITION -> R.string.position
PLAYERS -> R.string.players
CASHED_OUT -> R.string.cashed_out
INITIAL_BUY_IN -> R.string.initial_stack
BUY_IN -> R.string.buyin
TIPS -> R.string.tips
GAME -> R.string.game
BLINDS -> R.string.blinds
LOCATION -> R.string.location
BANKROLL -> R.string.bankroll
TABLE_SIZE -> R.string.table_size
TOURNAMENT_TYPE -> R.string.tournament_type
START_DATE -> R.string.start_date
END_DATE -> R.string.end_date
BREAK_TIME -> R.string.break_time
COMMENT -> R.string.comment
}
}
override val viewType: Int
get() {
return when (this) {
PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS,
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT,
TOURNAMENT_TYPE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT
BUY_IN, TIPS -> BottomSheetType.SUM
BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT
GAME -> BottomSheetType.LIST_GAME
LOCATION, BANKROLL, TOURNAMENT_TYPE -> BottomSheetType.LIST
TABLE_SIZE -> BottomSheetType.GRID
COMMENT -> BottomSheetType.EDIT_TEXT
else -> BottomSheetType.NONE
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}
enum class SimpleRow : RowRepresentable {
NAME;
override val resId: Int? = R.string.name
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}
enum class BankrollRow : RowRepresentable {
LIVE;
override val resId: Int?
get() {
return when (this) {
LIVE -> R.string.live
}
}
override val viewType: Int
get() {
return when (this) {
LIVE -> RowViewType.TITLE_SWITCH.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
LIVE -> BottomSheetType.NONE
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}
enum class GameRow : RowRepresentable {
SHORT_NAME;
override val resId: Int?
get() {
return when (this) {
SHORT_NAME -> R.string.short_name
}
}
override val viewType: Int
get() {
return when (this) {
SHORT_NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
SHORT_NAME -> BottomSheetType.EDIT_TEXT
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}
enum class LocationRow : RowRepresentable {
LOCATION_STATUS;
override val resId: Int?
get() {
return when (this) {
LOCATION_STATUS -> R.string.short_name
}
}
override val viewType: Int
get() {
return when (this) {
LOCATION_STATUS -> RowViewType.TITLE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
LOCATION_STATUS -> BottomSheetType.NONE
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}
enum class TransactionTypeRow : RowRepresentable {
}
enum class TournamentFeatureRow : RowRepresentable {
}
enum class SettingRow : RowRepresentable {
GDPR,
BANKROLL,
GAME,
LOCATION,
TOURNAMENT_FEATURE,
TRANSACTION_TYPE;
override val resId: Int?
get() {
this.relatedResultsRepresentable?.let {
return it.resId
} ?: run {
return when (this) {
GDPR -> R.string.gdpr
else -> null
}
}
}
override val viewType: Int = RowViewType.TITLE.ordinal
override val relatedResultsRepresentable: LiveData?
get() {
return when (this) {
BANKROLL -> LiveData.BANKROLL
GAME -> LiveData.GAME
LOCATION -> LiveData.LOCATION
TOURNAMENT_FEATURE -> LiveData.TOURNAMENT_FEATURE
TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE
else -> null
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,35 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
enum class BankrollRow : RowRepresentable {
LIVE;
override val resId: Int?
get() {
return when (this) {
LIVE -> R.string.live
}
}
override val viewType: Int
get() {
return when (this) {
LIVE -> RowViewType.TITLE_SWITCH.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
LIVE -> BottomSheetType.NONE
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,34 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
enum class GameRow : RowRepresentable {
SHORT_NAME;
override val resId: Int?
get() {
return when (this) {
SHORT_NAME -> R.string.short_name
}
}
override val viewType: Int
get() {
return when (this) {
SHORT_NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
SHORT_NAME -> BottomSheetType.EDIT_TEXT
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,35 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
enum class LocationRow : RowRepresentable {
LOCATION_STATUS;
override val resId: Int?
get() {
return when (this) {
LOCATION_STATUS -> R.string.short_name
}
}
override val viewType: Int
get() {
return when (this) {
LOCATION_STATUS -> RowViewType.TITLE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
LOCATION_STATUS -> BottomSheetType.NONE
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,132 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.extensions.SessionState
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
enum class SessionRow : RowRepresentable {
PRIZE,
CASHED_OUT,
INITIAL_BUY_IN,
BUY_IN,
POSITION,
PLAYERS,
TIPS,
GAME,
BLINDS,
LOCATION,
BANKROLL,
TABLE_SIZE,
TOURNAMENT_TYPE,
START_DATE,
END_DATE,
BREAK_TIME,
COMMENT;
companion object {
/**
* Return the rows to display for the current session state
*/
fun getRows(type: Int, sessionState: SessionState): ArrayList<RowRepresentable> {
when (type) {
Session.TYPE_TOURNAMENT -> {
return when (sessionState) {
SessionState.PENDING -> {
arrayListOf(
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE,
START_DATE, END_DATE
)
}
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> {
arrayListOf(
PRIZE, BUY_IN, POSITION, PLAYERS, TIPS,
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE,
START_DATE, END_DATE, BREAK_TIME, COMMENT
)
}
else -> arrayListOf()
}
}
Session.TYPE_GAME -> {
return when (sessionState) {
SessionState.PENDING -> {
arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE)
}
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> {
arrayListOf(
CASHED_OUT, BUY_IN, TIPS,
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT
)
}
else -> arrayListOf()
}
}
}
return arrayListOf()
}
}
override val needSeparator: Boolean
get() {
return when (this) {
SessionRow.TIPS -> true
else -> false
}
}
override val resId: Int?
get() {
return when (this) {
PRIZE -> R.string.prize
POSITION -> R.string.position
PLAYERS -> R.string.players
CASHED_OUT -> R.string.cashed_out
INITIAL_BUY_IN -> R.string.initial_stack
BUY_IN -> R.string.buyin
TIPS -> R.string.tips
GAME -> R.string.game
BLINDS -> R.string.blinds
LOCATION -> R.string.location
BANKROLL -> R.string.bankroll
TABLE_SIZE -> R.string.table_size
TOURNAMENT_TYPE -> R.string.tournament_type
START_DATE -> R.string.start_date
END_DATE -> R.string.end_date
BREAK_TIME -> R.string.break_time
COMMENT -> R.string.comment
}
}
override val viewType: Int
get() {
return when (this) {
PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS,
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT,
TOURNAMENT_TYPE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT
BUY_IN, TIPS -> BottomSheetType.SUM
BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT
GAME -> BottomSheetType.LIST_GAME
LOCATION, BANKROLL, TOURNAMENT_TYPE -> BottomSheetType.LIST
TABLE_SIZE -> BottomSheetType.GRID
COMMENT -> BottomSheetType.EDIT_TEXT
else -> BottomSheetType.NONE
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,45 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
enum class SettingRow : RowRepresentable {
GDPR,
BANKROLL,
GAME,
LOCATION,
TOURNAMENT_FEATURE,
TRANSACTION_TYPE;
override val resId: Int?
get() {
this.relatedResultsRepresentable?.let {
return it.resId
} ?: run {
return when (this) {
GDPR -> R.string.gdpr
else -> null
}
}
}
override val viewType: Int = RowViewType.TITLE.ordinal
override val relatedResultsRepresentable: LiveData?
get() {
return when (this) {
BANKROLL -> LiveData.BANKROLL
GAME -> LiveData.GAME
LOCATION -> LiveData.LOCATION
TOURNAMENT_FEATURE -> LiveData.TOURNAMENT_FEATURE
TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE
else -> null
}
}
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,17 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
enum class SimpleRow : RowRepresentable {
NAME;
override val resId: Int? = R.string.name
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
}

@ -0,0 +1,7 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.ui.view.RowRepresentable
enum class TournamentFeatureRow : RowRepresentable {
}

@ -0,0 +1,7 @@
package net.pokeranalytics.android.ui.view.rowrepresentable
import net.pokeranalytics.android.ui.view.RowRepresentable
enum class TransactionTypeRow : RowRepresentable {
}
Loading…
Cancel
Save