From b8c7493beb3f42f6213800e39c06eb55fb8491c4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 28 Feb 2017 19:37:59 +0100 Subject: [PATCH] implement the database exporting functionality --- .../calendar/activities/MainActivity.kt | 43 +++++++++++++++++++ .../calendar/helpers/DBHelper.kt | 2 +- app/src/main/res/values-ca-rES/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-es-rES/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-gl-rES/strings.xml | 1 + app/src/main/res/values-hi-rIN/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-iw/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-pt-rPT/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 17 files changed, 59 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt index 9431c71a0..0d3ffd62e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt @@ -36,6 +36,7 @@ import com.simplemobiletools.commons.helpers.LICENSE_STETHO import com.simplemobiletools.commons.models.Release import kotlinx.android.synthetic.main.activity_main.* import org.joda.time.DateTime +import java.io.* import java.util.* class MainActivity : SimpleActivity(), NavigationListener { @@ -238,7 +239,49 @@ class MainActivity : SimpleActivity(), NavigationListener { } private fun exportDatabase() { + FilePickerDialog(this, pickFile = false) { + val source = getDatabasePath(DBHelper.DB_NAME) + val destination = File(it, DBHelper.DB_NAME) + if (isShowingPermDialog(destination)) { + return@FilePickerDialog + } + Thread({ + if (source.exists()) { + val inputStream = FileInputStream(source) + val outputStream: OutputStream? + + if (needsStupidWritePermissions(destination.absolutePath)) { + var document = getFileDocument(destination.absolutePath, config.treeUri) + if (!destination.exists()) { + document = document.createFile("", destination.name) + } + outputStream = contentResolver.openOutputStream(document.uri) + } else { + outputStream = FileOutputStream(destination) + } + + copyStream(inputStream, outputStream) + inputStream.close() + outputStream?.close() + + runOnUiThread { + toast(R.string.database_exported_successfully) + } + } + }).start() + } + } + + private fun copyStream(inputStream: InputStream, out: OutputStream?) { + val buf = ByteArray(1024) + var len: Int + while (true) { + len = inputStream.read(buf) + if (len <= 0) + break + out?.write(buf, 0, len) + } } private fun launchSettings() { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt index ecd40014f..b3c74cc9d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt @@ -49,8 +49,8 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont private val mDb: SQLiteDatabase = writableDatabase companion object { - private val DB_NAME = "events.db" private val DB_VERSION = 7 + val DB_NAME = "events.db" val REGULAR_EVENT_ID = 1 private var mEventsListener: EventUpdateListener? = null diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 224239914..b93d86885 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Título diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d3cb9b98b..6591b4c7c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -97,6 +97,7 @@ einige Termine wurden nicht erfolgreich importiert ungültiges Dateiformat Export raw database + Database exported successfully Titel diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 96b8d9e10..71db8898c 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Título diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7e537ea6b..1ab7ef8db 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Titre diff --git a/app/src/main/res/values-gl-rES/strings.xml b/app/src/main/res/values-gl-rES/strings.xml index 96b8d9e10..71db8898c 100644 --- a/app/src/main/res/values-gl-rES/strings.xml +++ b/app/src/main/res/values-gl-rES/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Título diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index f13090e40..f4279e0a6 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully शीर्षक diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 39fb643e2..0b3cfbac0 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Név diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7a12417af..4e21bf289 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Titolo diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 96efff803..a826031ad 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully כותרת diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e624d102e..47d7cb18f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully タイトル diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index a72867893..f545b8c83 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -97,6 +97,7 @@ Alguns eventos não foram importados Formato de ficheiro inválido Export raw database + Database exported successfully Título diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index bf866a81d..89e7cb8e8 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -97,6 +97,7 @@ Ошибка импорта Неправильный формат файла Export raw database + Database exported successfully Заголовок diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index ba00e57ef..3e8c6e134 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -104,6 +104,7 @@ Importovanie niektorých udalostí zlyhalo Nesprávny formát súboru Exportovať surovú databázu + Databáza bola úspešne exportovaná Názov diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index dbb602a24..54e7f2f73 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Titel diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 607dcab65..047d6caaa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -97,6 +97,7 @@ Importing some events failed Invalid file format Export raw database + Database exported successfully Title