From 9bbfeaba728def324c8cf06c092a908cf43a6f3e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 25 Jul 2019 15:23:04 +0200 Subject: [PATCH] Better database creation runnable --- .../activities/FileDatabaseSelectActivity.kt | 32 ++++++++----------- .../AssignPasswordInDatabaseRunnable.kt | 2 +- .../database/action/CreateDatabaseRunnable.kt | 18 ++++++++--- .../keepass/database/element/Database.kt | 12 +++---- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 7bad0b9e0..86b0438d0 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -404,26 +404,21 @@ class FileDatabaseSelectActivity : StylishActivity(), keyFileChecked: Boolean, keyFile: Uri?) { try { - mDatabaseFileUri?.path?.let { databaseFilename -> - // Create the new database and start prof + UriUtil.parseUriFile(mDatabaseFileUri)?.let { databaseUri -> + + // Create the new database ProgressDialogThread(this@FileDatabaseSelectActivity, { - CreateDatabaseRunnable(databaseFilename, App.currentDatabase) { database -> - - UriUtil.parseUriFile(databaseFilename)?.let { databaseUri -> - // TODO store database created - AssignPasswordInDatabaseRunnable( - this@FileDatabaseSelectActivity, - database, - masterPasswordChecked, - masterPassword, - keyFileChecked, - keyFile, - true, // TODO get readonly - LaunchGroupActivityFinish(databaseUri) - ) - } - } + CreateDatabaseRunnable(this@FileDatabaseSelectActivity, + databaseUri, + App.currentDatabase, + masterPasswordChecked, + masterPassword, + keyFileChecked, + keyFile, + true, // TODO get readonly + LaunchGroupActivityFinish(databaseUri) + ) }, R.string.progress_create) .start() @@ -435,7 +430,6 @@ class FileDatabaseSelectActivity : StylishActivity(), // TODO remove e.printStackTrace() } - } private inner class LaunchGroupActivityFinish internal constructor(private val fileURI: Uri) : ActionRunnable() { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/AssignPasswordInDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/AssignPasswordInDatabaseRunnable.kt index 28c0a4bcf..a72f1317c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/AssignPasswordInDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/AssignPasswordInDatabaseRunnable.kt @@ -27,7 +27,7 @@ import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.utils.UriUtil import java.io.IOException -class AssignPasswordInDatabaseRunnable @JvmOverloads constructor( +open class AssignPasswordInDatabaseRunnable @JvmOverloads constructor( context: Context, database: Database, withMasterPassword: Boolean, diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt index 01185fca7..a9b6b565f 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/CreateDatabaseRunnable.kt @@ -19,23 +19,31 @@ */ package com.kunzisoft.keepass.database.action +import android.content.Context +import android.net.Uri import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.tasks.ActionRunnable -class CreateDatabaseRunnable(private val mFilename: String, +class CreateDatabaseRunnable(context: Context, + private val mDatabaseUri: Uri, private val mDatabase: Database, - val onDatabaseCreate: (database: Database) -> ActionRunnable?) - : ActionRunnable() { + withMasterPassword: Boolean, + masterPassword: String?, + withKeyFile: Boolean, + keyFile: Uri?, + save: Boolean, + actionRunnable: ActionRunnable? = null) + : AssignPasswordInDatabaseRunnable(context, mDatabase, withMasterPassword, masterPassword, withKeyFile, keyFile, save, actionRunnable) { override fun run() { try { // Create new database record mDatabase.apply { - createData(mFilename) + createData(mDatabaseUri) // Set Database state loaded = true // Commit changes - onDatabaseCreate(this)?.run() + super.run() } finishRun(true) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt index 255faa7c8..3db586c03 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt @@ -188,8 +188,8 @@ class Database { this.pwDatabaseV4 = pwDatabaseV4 } - private fun dbNameFromPath(dbPath: String): String { - val filename = URLUtil.guessFileName(dbPath, null, null) + private fun dbNameFromUri(databaseUri: Uri): String { + val filename = URLUtil.guessFileName(databaseUri.path, null, null) if (filename == null || filename.isEmpty()) { return "KeePass Database" } @@ -199,12 +199,10 @@ class Database { } else filename.substring(0, lastExtDot) } - fun createData(databasePath: String) { + fun createData(databaseUri: Uri) { // Always create a new database with the last version - setDatabaseV4(PwDatabaseV4(dbNameFromPath(databasePath))) - UriUtil.parseUriFile(databasePath)?.let { uri -> - this.mUri = uri - } + setDatabaseV4(PwDatabaseV4(dbNameFromUri(databaseUri))) + this.mUri = databaseUri } @Throws(IOException::class, InvalidDBException::class)