diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 55c42bf9..b4244dfc 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.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) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt index 00420032..f839db9f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt @@ -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 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 a4e915f9..ded03d9d 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 @@ -28,7 +28,7 @@ abstract class DataCSVDescriptor(source: DataSource, vararg el /** * List of Realm object identificators */ - val realmModelIds = mutableListOf() + private val realmModelIds = mutableListOf() abstract fun parseData(realm: Realm, record: CSVRecord): T? @@ -75,6 +75,24 @@ abstract class DataCSVDescriptor(source: DataSource, vararg el this.realmModelIds.clear() } + val csvHeaders: String + get() { + val headers = mutableListOf() + this.fields.forEach { + headers.add(it.header) + } + return headers.joinToString(",") + } + + fun toCSV(data: T): String { + + val fields = mutableListOf() + 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 = mutableMapOf() init { - if (elements.size > 0) { + if (elements.isNotEmpty()) { this.fields = elements.toList() } } 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 a28c7a16..76e7c723 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 @@ -48,7 +48,7 @@ interface NumberCSVField: TypedCSVField { 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 { 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 : CSVField { } interface CSVField { + val header: String val optional: Boolean get() { return false } -} \ No newline at end of file + +}