diff --git a/app/build.gradle b/app/build.gradle index 0ab05d84..70f4f297 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,7 @@ android { applicationId "net.pokeranalytics.android" minSdkVersion 23 targetSdkVersion 28 - versionCode 79 + versionCode 81 versionName "2.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/net/pokeranalytics/android/util/TextFormat.kt b/app/src/main/java/net/pokeranalytics/android/util/TextFormat.kt index 5bea21f5..1522f9ee 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/TextFormat.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/TextFormat.kt @@ -3,6 +3,19 @@ package net.pokeranalytics.android.util import android.content.Context import android.graphics.Color import androidx.core.content.ContextCompat +import java.text.DecimalFormat +import java.text.DecimalFormatSymbols + +object DotFormatSymbols : DecimalFormatSymbols() { + init { + this.decimalSeparator = '.' + } +} +object CSVNumberFormat : DecimalFormat("#.######", DotFormatSymbols) { + init { + this.isGroupingUsed = false + } +} class TextFormat(var text: String, var color: Int? = null) { diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt index a9dadace..e56c2eda 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.util.csv import net.pokeranalytics.android.model.realm.CustomField import net.pokeranalytics.android.model.realm.TournamentFeature +import net.pokeranalytics.android.util.CSVNumberFormat import timber.log.Timber import java.text.DateFormat import java.text.NumberFormat @@ -22,10 +23,10 @@ interface NumberCSVField: TypedCSVField { return null } - val formatter = NumberFormat.getInstance(Locale.US) +// val formatter = NumberFormat.getInstance(Locale.US) return try { - formatter.parse(value).toDouble() + CSVNumberFormat.parse(value).toDouble() } catch (e: ParseException) { Timber.d("Field > Unparseable number: $value") null @@ -43,10 +44,10 @@ interface NumberCSVField: TypedCSVField { return it(value) } - val formatter = NumberFormat.getInstance(Locale.US) +// val formatter = NumberFormat.getInstance(Locale.US) return try { - formatter.parse(value).toDouble() + CSVNumberFormat.parse(value).toDouble() } catch (e: ParseException) { Timber.d("Field $header > Unparseable number: $value") null @@ -55,7 +56,7 @@ interface NumberCSVField: TypedCSVField { override fun format(data: Double?): String? { return if (data != null) { - NumberFormat.getInstance().format(data) + CSVNumberFormat.format(data) } else { null } @@ -71,7 +72,7 @@ interface IntCSVField: TypedCSVField { } return try { - NumberFormat.getInstance().parse(value).toInt() + CSVNumberFormat.parse(value).toInt() } catch (e: ParseException) { Timber.d("Field $header > Unparseable number: $value") null @@ -80,7 +81,7 @@ interface IntCSVField: TypedCSVField { override fun format(data: Int?): String? { return if (data != null) { - NumberFormat.getInstance().format(data) + CSVNumberFormat.format(data) } else { null } @@ -149,8 +150,8 @@ interface BlindCSVField : TypedCSVField> { override fun format(data: Pair?): String? { data?.let { - val sb = NumberFormat.getInstance().format(data.first) - val bb = NumberFormat.getInstance().format(data.second) + val sb = CSVNumberFormat.format(data.first) + val bb = CSVNumberFormat.format(data.second) return "$sb/$bb" } ?: run { return null diff --git a/app/src/test/java/net/pokeranalytics/android/BasicUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/BasicUnitTest.kt index ffc85579..70a56bec 100644 --- a/app/src/test/java/net/pokeranalytics/android/BasicUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/BasicUnitTest.kt @@ -1,10 +1,10 @@ package net.pokeranalytics.android +import net.pokeranalytics.android.util.CSVNumberFormat import net.pokeranalytics.android.util.Parser import net.pokeranalytics.android.util.extensions.kmbFormatted import org.junit.Assert import org.junit.Test -import java.text.NumberFormat class BasicUnitTest : RealmUnitTest() { @@ -47,4 +47,13 @@ class BasicUnitTest : RealmUnitTest() { } + @Test + fun testCSVFormatter() { + val str1 = CSVNumberFormat.format(1111.2567) + Assert.assertEquals("1111.2567", str1) + + val str2 = CSVNumberFormat.format(1000) + Assert.assertEquals("1000", str2) + } + } diff --git a/app/standard/release/output.json b/app/standard/release/output.json index e0ea7d03..698ad8d1 100644 --- a/app/standard/release/output.json +++ b/app/standard/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":74,"versionName":"2.3.2","enabled":true,"outputFile":"PokerAnalytics_2.3.2(74)_191108_1621_release.apk","fullName":"standardRelease","baseName":"standard-release"},"path":"PokerAnalytics_2.3.2(74)_191108_1621_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":81,"versionName":"2.4","enabled":true,"outputFile":"PokerAnalytics_2.4(81)_200521_1134_release.apk","fullName":"standardRelease","baseName":"standard-release","dirName":""},"path":"PokerAnalytics_2.4(81)_200521_1134_release.apk","properties":{}}] \ No newline at end of file