From d095a8c5af1638ae5616a78791de9e75810cf079 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 8 Jun 2022 18:11:06 +0200 Subject: [PATCH] Fixes import issues --- .../android/util/csv/CSVImporter.kt | 3 ++ .../android/util/csv/PACSVDescriptor.kt | 27 ++++++++++++++- .../android/util/csv/ProductCSVDescriptors.kt | 34 +++++++++++++++++++ .../android/util/csv/SessionField.kt | 10 ++++++ 4 files changed, 73 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVImporter.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVImporter.kt index 86dcaba6..38998792 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVImporter.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVImporter.kt @@ -3,6 +3,8 @@ package net.pokeranalytics.android.util.csv import android.os.Handler import android.os.Looper import io.realm.Realm +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.util.extensions.count import org.apache.commons.csv.CSVFormat import org.apache.commons.csv.CSVParser import org.apache.commons.csv.CSVRecord @@ -112,6 +114,7 @@ open class CSVImporter(istream: InputStream) { if (this.currentDescriptor == null) { // find descriptor this.currentDescriptor = this.findDescriptor(record) + this.currentDescriptor?.hasMatched(realm, record) if (this.currentDescriptor == null) { diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt index 690f8a41..168460d6 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt @@ -8,6 +8,7 @@ import net.pokeranalytics.android.model.TableSize import net.pokeranalytics.android.model.TournamentType import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.utils.DataUtils +import net.pokeranalytics.android.util.extensions.count import net.pokeranalytics.android.util.extensions.getOrCreate import net.pokeranalytics.android.util.extensions.setHourMinutes import org.apache.commons.csv.CSVRecord @@ -22,6 +23,14 @@ abstract class PACSVDescriptor(source: DataSource, vararg elements: CSVField) : DataCSVDescriptor(source, *elements) { + var noSessionImport: Boolean = false + + init { + val realm = Realm.getDefaultInstance() + this.noSessionImport = realm.count(Session::class.java) == 0L + realm.close() + } + private var sameDaySessionCount: Int = 0 private var currentDay: String = "" private var startInSeconds: Double = 20 * 3600.0 @@ -177,6 +186,22 @@ abstract class PACSVDescriptor(source: DataSource, session.cgBigBlind = bb } else {} } + is SessionField.Blinds -> { + val blinds = value.split("/") + when (blinds.size) { + 0 -> {} + 1 -> { + session.cgBigBlind = field.parse(blinds.first()) + } + else -> { + session.cgSmallBlind = field.parse(blinds[blinds.size - 2]) + session.cgBigBlind = field.parse(blinds.last()) + } + } + } + is SessionField.Ante -> { + // unmanaged atm + } is SessionField.TableSize -> session.tableSize = TableSize.valueForLabel(value) is SessionField.TournamentPosition -> session.result?.tournamentFinalPosition = field.parse(value) @@ -242,7 +267,7 @@ abstract class PACSVDescriptor(source: DataSource, if (startDate != null && endDate != null && net != null) { // valid session // session already in realm, we'd love not put it in Realm before doing the check val count = DataUtils.sessionCount(realm, startDate!!, endDate!!, net) - if (count == 0) { + if (this.noSessionImport || count == 0) { val managedSession = realm.copyToRealm(session) managedSession.startDate = startDate diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/ProductCSVDescriptors.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/ProductCSVDescriptors.kt index a6a563ff..137d840c 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/ProductCSVDescriptors.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/ProductCSVDescriptors.kt @@ -17,6 +17,7 @@ class ProductCSVDescriptors { runGoodCashGames, runGoodTournaments, pokerAnalyticsiOS, + pokerAnalytics6iOS, pokerAnalyticsAndroid, pokerAnalyticsAndroidTransactions ) @@ -190,6 +191,39 @@ class ProductCSVDescriptors { ) } + private val pokerAnalytics6iOS: SessionCSVDescriptor + get() { + return SessionCSVDescriptor( + DataSource.POKER_ANALYTICS, + true, + SessionField.Start("Start Date", dateFormat = "MM/dd/yy HH:mm:ss"), + SessionField.End("End Date", dateFormat = "MM/dd/yy HH:mm:ss"), + SessionField.Break("Break", Calendar.SECOND), + SessionField.SessionType("Type"), + SessionField.Live("Live"), + SessionField.NumberOfTables("Tables"), + SessionField.Buyin("Buyin"), + SessionField.CashedOut("Cashed Out"), + SessionField.NetResult("Online Net"), + SessionField.Tips("Tips"), + SessionField.LimitType("Limit"), + SessionField.Game("Game"), + SessionField.TableSize("Table Size"), + SessionField.Location("Location"), + SessionField.Bankroll("Bankroll"), + SessionField.CurrencyCode("Currency Code"), + SessionField.CurrencyRate("Currency Rate"), + SessionField.Blinds("Blinds"), + SessionField.Ante("Ante"), + SessionField.TournamentTypeName("Tournament Type"), + SessionField.TournamentEntryFee("Entry fee"), + SessionField.TournamentNumberOfPlayers("Number of players"), + SessionField.TournamentPrizePool("Prize Pool"), + SessionField.TournamentPosition("Position"), + SessionField.Comment("Comment") + ) + } + val pokerAnalyticsAndroidTransactions: TransactionCSVDescriptor get() { return TransactionCSVDescriptor( diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/SessionField.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/SessionField.kt index f1df37d2..36061b7b 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/SessionField.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/SessionField.kt @@ -192,6 +192,16 @@ sealed class SessionField { override var callback: ((String) -> Double?)? = null ) : NumberCSVField + data class Blinds( + override var header: String, + override var callback: ((String) -> Double?)? = null + ) : NumberCSVField + + data class Ante( + override var header: String, + override var callback: ((String) -> Double?)? = null + ) : NumberCSVField + data class TournamentPosition( override var header: String, override var callback: ((String) -> Int?)? = null