Better database creation runnable

This commit is contained in:
J-Jamet
2019-07-25 15:23:04 +02:00
parent 2d640dbe62
commit 9bbfeaba72
4 changed files with 32 additions and 32 deletions

View File

@@ -404,26 +404,21 @@ class FileDatabaseSelectActivity : StylishActivity(),
keyFileChecked: Boolean, keyFile: Uri?) { keyFileChecked: Boolean, keyFile: Uri?) {
try { try {
mDatabaseFileUri?.path?.let { databaseFilename -> UriUtil.parseUriFile(mDatabaseFileUri)?.let { databaseUri ->
// Create the new database and start prof
// Create the new database
ProgressDialogThread(this@FileDatabaseSelectActivity, ProgressDialogThread(this@FileDatabaseSelectActivity,
{ {
CreateDatabaseRunnable(databaseFilename, App.currentDatabase) { database -> CreateDatabaseRunnable(this@FileDatabaseSelectActivity,
databaseUri,
UriUtil.parseUriFile(databaseFilename)?.let { databaseUri -> App.currentDatabase,
// TODO store database created masterPasswordChecked,
AssignPasswordInDatabaseRunnable( masterPassword,
this@FileDatabaseSelectActivity, keyFileChecked,
database, keyFile,
masterPasswordChecked, true, // TODO get readonly
masterPassword, LaunchGroupActivityFinish(databaseUri)
keyFileChecked, )
keyFile,
true, // TODO get readonly
LaunchGroupActivityFinish(databaseUri)
)
}
}
}, },
R.string.progress_create) R.string.progress_create)
.start() .start()
@@ -435,7 +430,6 @@ class FileDatabaseSelectActivity : StylishActivity(),
// TODO remove // TODO remove
e.printStackTrace() e.printStackTrace()
} }
} }
private inner class LaunchGroupActivityFinish internal constructor(private val fileURI: Uri) : ActionRunnable() { private inner class LaunchGroupActivityFinish internal constructor(private val fileURI: Uri) : ActionRunnable() {

View File

@@ -27,7 +27,7 @@ import com.kunzisoft.keepass.tasks.ActionRunnable
import com.kunzisoft.keepass.utils.UriUtil import com.kunzisoft.keepass.utils.UriUtil
import java.io.IOException import java.io.IOException
class AssignPasswordInDatabaseRunnable @JvmOverloads constructor( open class AssignPasswordInDatabaseRunnable @JvmOverloads constructor(
context: Context, context: Context,
database: Database, database: Database,
withMasterPassword: Boolean, withMasterPassword: Boolean,

View File

@@ -19,23 +19,31 @@
*/ */
package com.kunzisoft.keepass.database.action 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.database.element.Database
import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.tasks.ActionRunnable
class CreateDatabaseRunnable(private val mFilename: String, class CreateDatabaseRunnable(context: Context,
private val mDatabaseUri: Uri,
private val mDatabase: Database, private val mDatabase: Database,
val onDatabaseCreate: (database: Database) -> ActionRunnable?) withMasterPassword: Boolean,
: ActionRunnable() { masterPassword: String?,
withKeyFile: Boolean,
keyFile: Uri?,
save: Boolean,
actionRunnable: ActionRunnable? = null)
: AssignPasswordInDatabaseRunnable(context, mDatabase, withMasterPassword, masterPassword, withKeyFile, keyFile, save, actionRunnable) {
override fun run() { override fun run() {
try { try {
// Create new database record // Create new database record
mDatabase.apply { mDatabase.apply {
createData(mFilename) createData(mDatabaseUri)
// Set Database state // Set Database state
loaded = true loaded = true
// Commit changes // Commit changes
onDatabaseCreate(this)?.run() super.run()
} }
finishRun(true) finishRun(true)

View File

@@ -188,8 +188,8 @@ class Database {
this.pwDatabaseV4 = pwDatabaseV4 this.pwDatabaseV4 = pwDatabaseV4
} }
private fun dbNameFromPath(dbPath: String): String { private fun dbNameFromUri(databaseUri: Uri): String {
val filename = URLUtil.guessFileName(dbPath, null, null) val filename = URLUtil.guessFileName(databaseUri.path, null, null)
if (filename == null || filename.isEmpty()) { if (filename == null || filename.isEmpty()) {
return "KeePass Database" return "KeePass Database"
} }
@@ -199,12 +199,10 @@ class Database {
} else filename.substring(0, lastExtDot) } else filename.substring(0, lastExtDot)
} }
fun createData(databasePath: String) { fun createData(databaseUri: Uri) {
// Always create a new database with the last version // Always create a new database with the last version
setDatabaseV4(PwDatabaseV4(dbNameFromPath(databasePath))) setDatabaseV4(PwDatabaseV4(dbNameFromUri(databaseUri)))
UriUtil.parseUriFile(databasePath)?.let { uri -> this.mUri = databaseUri
this.mUri = uri
}
} }
@Throws(IOException::class, InvalidDBException::class) @Throws(IOException::class, InvalidDBException::class)