Fixing exporting issue with comma decimal separator

od
Laurent 6 years ago
parent 26867cb23c
commit ffd684774c
  1. 2
      app/build.gradle
  2. 13
      app/src/main/java/net/pokeranalytics/android/util/TextFormat.kt
  3. 19
      app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt
  4. 11
      app/src/test/java/net/pokeranalytics/android/BasicUnitTest.kt
  5. 2
      app/standard/release/output.json

@ -33,7 +33,7 @@ android {
applicationId "net.pokeranalytics.android" applicationId "net.pokeranalytics.android"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 28 targetSdkVersion 28
versionCode 79 versionCode 81
versionName "2.4" versionName "2.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

@ -3,6 +3,19 @@ package net.pokeranalytics.android.util
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
import androidx.core.content.ContextCompat 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) { class TextFormat(var text: String, var color: Int? = null) {

@ -2,6 +2,7 @@ package net.pokeranalytics.android.util.csv
import net.pokeranalytics.android.model.realm.CustomField import net.pokeranalytics.android.model.realm.CustomField
import net.pokeranalytics.android.model.realm.TournamentFeature import net.pokeranalytics.android.model.realm.TournamentFeature
import net.pokeranalytics.android.util.CSVNumberFormat
import timber.log.Timber import timber.log.Timber
import java.text.DateFormat import java.text.DateFormat
import java.text.NumberFormat import java.text.NumberFormat
@ -22,10 +23,10 @@ interface NumberCSVField: TypedCSVField<Double> {
return null return null
} }
val formatter = NumberFormat.getInstance(Locale.US) // val formatter = NumberFormat.getInstance(Locale.US)
return try { return try {
formatter.parse(value).toDouble() CSVNumberFormat.parse(value).toDouble()
} catch (e: ParseException) { } catch (e: ParseException) {
Timber.d("Field > Unparseable number: $value") Timber.d("Field > Unparseable number: $value")
null null
@ -43,10 +44,10 @@ interface NumberCSVField: TypedCSVField<Double> {
return it(value) return it(value)
} }
val formatter = NumberFormat.getInstance(Locale.US) // val formatter = NumberFormat.getInstance(Locale.US)
return try { return try {
formatter.parse(value).toDouble() CSVNumberFormat.parse(value).toDouble()
} catch (e: ParseException) { } catch (e: ParseException) {
Timber.d("Field $header > Unparseable number: $value") Timber.d("Field $header > Unparseable number: $value")
null null
@ -55,7 +56,7 @@ interface NumberCSVField: TypedCSVField<Double> {
override fun format(data: Double?): String? { override fun format(data: Double?): String? {
return if (data != null) { return if (data != null) {
NumberFormat.getInstance().format(data) CSVNumberFormat.format(data)
} else { } else {
null null
} }
@ -71,7 +72,7 @@ interface IntCSVField: TypedCSVField<Int> {
} }
return try { return try {
NumberFormat.getInstance().parse(value).toInt() CSVNumberFormat.parse(value).toInt()
} catch (e: ParseException) { } catch (e: ParseException) {
Timber.d("Field $header > Unparseable number: $value") Timber.d("Field $header > Unparseable number: $value")
null null
@ -80,7 +81,7 @@ interface IntCSVField: TypedCSVField<Int> {
override fun format(data: Int?): String? { override fun format(data: Int?): String? {
return if (data != null) { return if (data != null) {
NumberFormat.getInstance().format(data) CSVNumberFormat.format(data)
} else { } else {
null null
} }
@ -149,8 +150,8 @@ interface BlindCSVField : TypedCSVField<Pair<Double, Double>> {
override fun format(data: Pair<Double, Double>?): String? { override fun format(data: Pair<Double, Double>?): String? {
data?.let { data?.let {
val sb = NumberFormat.getInstance().format(data.first) val sb = CSVNumberFormat.format(data.first)
val bb = NumberFormat.getInstance().format(data.second) val bb = CSVNumberFormat.format(data.second)
return "$sb/$bb" return "$sb/$bb"
} ?: run { } ?: run {
return null return null

@ -1,10 +1,10 @@
package net.pokeranalytics.android package net.pokeranalytics.android
import net.pokeranalytics.android.util.CSVNumberFormat
import net.pokeranalytics.android.util.Parser import net.pokeranalytics.android.util.Parser
import net.pokeranalytics.android.util.extensions.kmbFormatted import net.pokeranalytics.android.util.extensions.kmbFormatted
import org.junit.Assert import org.junit.Assert
import org.junit.Test import org.junit.Test
import java.text.NumberFormat
class BasicUnitTest : RealmUnitTest() { 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)
}
} }

@ -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":{}}] [{"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":{}}]
Loading…
Cancel
Save