Adds CSV export first bricks

od
Laurent 6 years ago
parent 594f7d5522
commit 294b30e86d
  1. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt
  3. 22
      app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt
  4. 8
      app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt

@ -128,6 +128,9 @@ class SettingsFragment : BaseFragment(), RowRepresentableDelegate, StaticRowRepr
SettingRow.CONTACT_US -> parentActivity?.openContactMail(R.string.contact)
SettingRow.BUG_REPORT -> parentActivity?.openContactMail(R.string.bug_report_subject, Realm.getDefaultInstance().path)
SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, RequestCode.CURRENCY.value)
SettingRow.EXPORT_CSV -> {
}
SettingRow.FOLLOW_US -> {
when (position) {
0 -> parentActivity?.openUrl(URL.BLOG.value)

@ -29,6 +29,9 @@ enum class SettingRow : RowRepresentable {
LANGUAGE,
CURRENCY,
// Export
EXPORT_CSV,
// Data management
CUSTOM_FIELD,
BANKROLL,
@ -64,6 +67,9 @@ enum class SettingRow : RowRepresentable {
rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.preferences))
rows.addAll(arrayListOf(CURRENCY))
rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.export))
rows.addAll(arrayListOf(EXPORT_CSV))
rows.add(
CustomizableRowRepresentable(
customViewType = RowViewType.HEADER_TITLE,
@ -99,6 +105,7 @@ enum class SettingRow : RowRepresentable {
FOLLOW_US -> R.string.follow_us
LANGUAGE -> R.string.language
CURRENCY -> R.string.currency
EXPORT_CSV -> R.string.csv
GDPR -> R.string.gdpr
POKER_RUMBLE -> R.string.poker_rumble
DISCORD -> R.string.join_discord

@ -28,7 +28,7 @@ abstract class DataCSVDescriptor<T : Identifiable>(source: DataSource, vararg el
/**
* List of Realm object identificators
*/
val realmModelIds = mutableListOf<ObjectIdentifier>()
private val realmModelIds = mutableListOf<ObjectIdentifier>()
abstract fun parseData(realm: Realm, record: CSVRecord): T?
@ -75,6 +75,24 @@ abstract class DataCSVDescriptor<T : Identifiable>(source: DataSource, vararg el
this.realmModelIds.clear()
}
val csvHeaders: String
get() {
val headers = mutableListOf<String>()
this.fields.forEach {
headers.add(it.header)
}
return headers.joinToString(",")
}
fun toCSV(data: T): String {
val fields = mutableListOf<String>()
this.fields.forEach {
// fields.add(it.toCSV(data))
}
return fields.joinToString(",")
}
}
/**
@ -92,7 +110,7 @@ abstract class CSVDescriptor(var source: DataSource, vararg elements: CSVField)
protected var fieldMapping: MutableMap<CSVField, Int> = mutableMapOf()
init {
if (elements.size > 0) {
if (elements.isNotEmpty()) {
this.fields = elements.toList()
}
}

@ -48,7 +48,7 @@ interface NumberCSVField: TypedCSVField<Double> {
return try {
formatter.parse(value).toDouble()
} catch (e: ParseException) {
Timber.d("Field ${header} > Unparseable number: $value")
Timber.d("Field $header > Unparseable number: $value")
null
}
}
@ -65,7 +65,7 @@ interface IntCSVField: TypedCSVField<Int> {
return try {
NumberFormat.getInstance().parse(value).toInt()
} catch (e: ParseException) {
Timber.d("Field ${header} > Unparseable number: $value")
Timber.d("Field $header > Unparseable number: $value")
null
}
}
@ -135,9 +135,11 @@ interface TypedCSVField<T> : CSVField {
}
interface CSVField {
val header: String
val optional: Boolean
get() {
return false
}
}
}

Loading…
Cancel
Save