From 6d3cb907550c4c7a90e93321bc8c940e34c2900e Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 14 Aug 2019 11:51:47 +0200 Subject: [PATCH] Updating Poker Agent import --- .../android/model/realm/Session.kt | 6 +- .../android/ui/fragment/FeedFragment.kt | 56 ++++++++++--------- .../android/util/csv/CSVDescriptor.kt | 3 +- .../android/util/csv/ProductCSVDescriptors.kt | 4 +- .../android/util/csv/SessionCSVDescriptor.kt | 27 +++++++-- .../android/util/csv/SessionField.kt | 2 +- 6 files changed, 60 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 8944468e..57323e16 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -621,11 +621,11 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat cgBigBlind?.let { bb -> val sb = cgSmallBlind ?: bb / 2.0 val preFormattedBlinds = "${sb.formatted()}/${bb.round()}" - println("<<<<<< bb.toCurrency(currency) : ${bb.toCurrency(currency)}") - println("<<<<<< preFormattedBlinds : $preFormattedBlinds") +// println("<<<<<< bb.toCurrency(currency) : ${bb.toCurrency(currency)}") +// println("<<<<<< preFormattedBlinds : $preFormattedBlinds") val regex = Regex("-?\\d+(\\.\\d+)?") blinds = bb.toCurrency(currency).replace(regex, preFormattedBlinds) - println("<<<<<< blinds = $blinds") +// println("<<<<<< blinds = $blinds") } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt index 18940892..470e8e3f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt @@ -1,11 +1,16 @@ package net.pokeranalytics.android.ui.fragment +import android.Manifest import android.app.Activity.RESULT_OK import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri import android.os.Bundle import android.view.* import android.widget.Toast +import androidx.core.app.ActivityCompat import androidx.core.app.ActivityOptionsCompat +import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.interpolator.view.animation.FastOutSlowInInterpolator import com.google.android.material.tabs.TabLayout @@ -34,6 +39,7 @@ import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.billing.AppGuard import net.pokeranalytics.android.util.extensions.count +import java.io.File import java.text.SimpleDateFormat import java.util.* @@ -133,31 +139,31 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { initUI() initData() -// if (ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) -// != PackageManager.PERMISSION_GRANTED) { -// -// if (ActivityCompat.shouldShowRequestPermissionRationale(requireActivity(), -// Manifest.permission.READ_EXTERNAL_STORAGE)) { -// // Show an explanation to the user *asynchronously* -- don't block -// // this thread waiting for the user's response! After the user -// // sees the explanation, try again to request the permission. -// } else { -// // No explanation needed, we can request the permission. -// ActivityCompat.requestPermissions(requireActivity(), -// arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), -// 12) -// -// // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an -// // app-defined int constant. The callback method gets the -// // result of the request. -// } -// -// } else { -// -// val uri = Uri.fromFile(File("sdcard/Download/Results_0802.csv")) -// ImportActivity.newInstanceForResult(requireActivity(), uri) -// -// } + if (ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + + if (ActivityCompat.shouldShowRequestPermissionRationale(requireActivity(), + Manifest.permission.READ_EXTERNAL_STORAGE)) { + // Show an explanation to the user *asynchronously* -- don't block + // this thread waiting for the user's response! After the user + // sees the explanation, try again to request the permission. + } else { + // No explanation needed, we can request the permission. + ActivityCompat.requestPermissions(requireActivity(), + arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), + 12) + + // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an + // app-defined int constant. The callback method gets the + // result of the request. + } + + } else { + + val uri = Uri.fromFile(File("sdcard/Download/Results_0802.csv")) + ImportActivity.newInstanceForResult(requireActivity(), uri) + + } } diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt index dbb73a80..b9290adc 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt @@ -15,7 +15,8 @@ import timber.log.Timber enum class DataSource { POKER_INCOME, POKER_BANKROLL_TRACKER, - RUNGOOD + RUNGOOD, + POKER_AGENT } /** 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 627b3a17..80044865 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 @@ -5,9 +5,9 @@ class ProductCSVDescriptors { companion object { val pokerAgent: CSVDescriptor = SessionCSVDescriptor( - DataSource.POKER_INCOME, + DataSource.POKER_AGENT, false, - SessionField.Start("Date ", dateFormat = "MM-dd-yyyy", defaultTimeFormat = "20:00"), + SessionField.Start("Date ", dateFormat = "MM-dd-yyyy", randomTime = true), SessionField.Location("Location"), SessionField.SmallBlind("SB"), SessionField.BigBlind("BB"), diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/SessionCSVDescriptor.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/SessionCSVDescriptor.kt index 44bdfca1..b7be3342 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/SessionCSVDescriptor.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/SessionCSVDescriptor.kt @@ -122,6 +122,10 @@ class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean return null } + private var sameDaySessionCount: Int = 0 + private var currentday: String = "" + private var previousDuration: Double? = null + private fun parseSession(realm: Realm, record: CSVRecord): Session? { val session = Session.newInstance(realm, this.isTournament, managed = false) @@ -145,11 +149,20 @@ class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean val value = record.get(index) when (field) { is SessionField.Start -> { - startDate = field.parse(value) - field.defaultTimeFormat?.let { - startDate?.setHourMinutes(it) - } + if (field.randomTime) { + + if (currentday == value) { + sameDaySessionCount++ + } else { + sameDaySessionCount = 0 + } + currentday = value + + val hour = 20 - sameDaySessionCount * 8 + val timeFormat = "$hour:00" + startDate?.setHourMinutes(timeFormat) + } else {} } is SessionField.End -> { endDate = field.parse(value) @@ -162,12 +175,13 @@ class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean } is SessionField.Duration -> { val hoursDuration = field.parse(value) + previousDuration = hoursDuration if (startDate != null && hoursDuration != null) { - val minutes = (hoursDuration * 60.0).toInt() + val seconds = (hoursDuration * 3600.0).toInt() val calendar = Calendar.getInstance() calendar.time = startDate - calendar.add(Calendar.MINUTE, minutes) + calendar.add(Calendar.SECOND, seconds) endDate = calendar.time } else { throw PAIllegalStateException("start date ($startDate) + hoursDuration ($hoursDuration) required") @@ -288,6 +302,7 @@ class SessionCSVDescriptor(source: DataSource, private var isTournament: Boolean // 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) { + val managedSession = realm.copyToRealm(session) managedSession.startDate = startDate managedSession.endDate = endDate 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 6ee7e6ad..e4a1f3b3 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 @@ -20,7 +20,7 @@ sealed class SessionField { override var header: String, override var callback: ((String) -> Date?)? = null, override val dateFormat: String? = null, - val defaultTimeFormat: String? = null + val randomTime: Boolean = false ) : DateCSVField data class StartTime(