|
|
|
@ -12,107 +12,113 @@ import net.pokeranalytics.android.util.extensions.setHourMinutes |
|
|
|
import org.apache.commons.csv.CSVRecord |
|
|
|
import org.apache.commons.csv.CSVRecord |
|
|
|
import java.util.* |
|
|
|
import java.util.* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* The enumeration of Session fields |
|
|
|
|
|
|
|
*/ |
|
|
|
sealed class SessionField { |
|
|
|
sealed class SessionField { |
|
|
|
|
|
|
|
|
|
|
|
data class Start( |
|
|
|
data class Start( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override val dateFormat: String? = null |
|
|
|
override val dateFormat: String? = null |
|
|
|
) : DateField |
|
|
|
) : DateCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class StartTime( |
|
|
|
data class StartTime( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override val dateFormat: String? = null |
|
|
|
override val dateFormat: String? = null |
|
|
|
) : DateField |
|
|
|
) : DateCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class End( |
|
|
|
data class End( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override val dateFormat: String? = null |
|
|
|
override val dateFormat: String? = null |
|
|
|
) : DateField |
|
|
|
) : DateCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class EndTime( |
|
|
|
data class EndTime( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override var callback: ((String) -> Date?)? = null, |
|
|
|
override val dateFormat: String? = null |
|
|
|
override val dateFormat: String? = null |
|
|
|
) : DateField |
|
|
|
) : DateCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class Buyin( |
|
|
|
data class Buyin( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class NetResult( |
|
|
|
data class NetResult( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class CashedOut( |
|
|
|
data class CashedOut( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class Break( |
|
|
|
data class Break( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class Tips( |
|
|
|
data class Tips( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class SmallBlind( |
|
|
|
data class SmallBlind( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class BigBlind( |
|
|
|
data class BigBlind( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class Blind(override var header: String, override var callback: ((String) -> Pair<Double, Double>?)? = null) : BlindField |
|
|
|
data class Blind(override var header: String, override var callback: ((String) -> Pair<Double, Double>?)? = null) : BlindCSVField |
|
|
|
data class Game(override var header: String) : Field |
|
|
|
data class Game(override var header: String) : CSVField |
|
|
|
data class Location(override var header: String) : Field |
|
|
|
data class Location(override var header: String) : CSVField |
|
|
|
data class LocationType(override var header: String) : Field |
|
|
|
data class LocationType(override var header: String) : CSVField |
|
|
|
data class Bankroll(override var header: String) : Field |
|
|
|
data class Bankroll(override var header: String) : CSVField |
|
|
|
data class LimitType(override var header: String) : Field |
|
|
|
data class LimitType(override var header: String) : CSVField |
|
|
|
data class Comment(override var header: String) : Field |
|
|
|
data class Comment(override var header: String) : CSVField |
|
|
|
data class SessionType(override var header: String) : Field |
|
|
|
data class SessionType(override var header: String) : CSVField |
|
|
|
data class TableSize(override var header: String) : Field |
|
|
|
data class TableSize(override var header: String) : CSVField |
|
|
|
data class CurrencyCode(override var header: String) : Field |
|
|
|
data class CurrencyCode(override var header: String) : CSVField |
|
|
|
data class TournamentName(override var header: String) : Field |
|
|
|
data class TournamentName(override var header: String) : CSVField |
|
|
|
data class TournamentType(override var header: String) : Field |
|
|
|
data class TournamentType(override var header: String) : CSVField |
|
|
|
|
|
|
|
|
|
|
|
data class CurrencyRate( |
|
|
|
data class CurrencyRate( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class TournamentPosition( |
|
|
|
data class TournamentPosition( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
|
|
|
|
|
|
|
|
data class TournamentNumberOfPlayers( |
|
|
|
data class TournamentNumberOfPlayers( |
|
|
|
override var header: String, |
|
|
|
override var header: String, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override var callback: ((String) -> Double?)? = null, |
|
|
|
override val numberFormat: String? = null |
|
|
|
override val numberFormat: String? = null |
|
|
|
) : NumberField |
|
|
|
) : NumberCSVField |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean, vararg elements: Field) : DataCSVDescriptor<Session>(source, *elements) { |
|
|
|
/** |
|
|
|
|
|
|
|
* A SessionCSVDescriptor is a CSVDescriptor specialized in parsing Session objects |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean, vararg elements: CSVField) : DataCSVDescriptor<Session>(source, *elements) { |
|
|
|
|
|
|
|
|
|
|
|
companion object { |
|
|
|
companion object { |
|
|
|
val pokerIncomeCash: CSVDescriptor = SessionCSVDescriptor( |
|
|
|
val pokerIncomeCash: CSVDescriptor = SessionCSVDescriptor( |
|
|
|
@ -216,6 +222,9 @@ class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Parses a [record] and return an optional Session |
|
|
|
|
|
|
|
*/ |
|
|
|
override fun parseData(realm: Realm, record: CSVRecord): Session? { |
|
|
|
override fun parseData(realm: Realm, record: CSVRecord): Session? { |
|
|
|
|
|
|
|
|
|
|
|
val session = Session.newInstance(realm, this.isTournament) |
|
|
|
val session = Session.newInstance(realm, this.isTournament) |
|
|
|
@ -283,11 +292,11 @@ class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean |
|
|
|
val endDate = session.endDate |
|
|
|
val endDate = session.endDate |
|
|
|
val net = session.result?.net |
|
|
|
val net = session.result?.net |
|
|
|
|
|
|
|
|
|
|
|
if (startDate != null && endDate != null && net != null) { // valid session |
|
|
|
return if (startDate != null && endDate != null && net != null) { // valid session |
|
|
|
val unique = SessionUtils.unicityCheck(realm, startDate, endDate, net) |
|
|
|
val unique = SessionUtils.unicityCheck(realm, startDate, endDate, net) |
|
|
|
return if (unique) session else null |
|
|
|
if (unique) session else null |
|
|
|
} else { // invalid session |
|
|
|
} else { // invalid session |
|
|
|
return null |
|
|
|
null |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|