mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Better search backup group implementation
This commit is contained in:
@@ -178,19 +178,9 @@ class DatabaseKDB : DatabaseVersioned<Int, UUID, GroupKDB, EntryKDB>() {
|
|||||||
* Retrieve backup group with his name
|
* Retrieve backup group with his name
|
||||||
*/
|
*/
|
||||||
private fun retrieveBackup(): GroupKDB? {
|
private fun retrieveBackup(): GroupKDB? {
|
||||||
var backupGroup: GroupKDB? = null
|
return rootGroup?.searchChildGroup {
|
||||||
val groupHandler = object: NodeHandler<GroupKDB>() {
|
it.title.equals(BACKUP_FOLDER_TITLE, ignoreCase = true)
|
||||||
override fun operate(node: GroupKDB): Boolean {
|
|
||||||
return if (node.title.equals(BACKUP_FOLDER_TITLE, ignoreCase = true)) {
|
|
||||||
backupGroup = node
|
|
||||||
false
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
rootGroup?.doForEachChild(null, groupHandler)
|
|
||||||
return backupGroup
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -62,8 +62,27 @@ interface GroupVersionedInterface<Group: GroupVersionedInterface<Group, Entry>,
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (doActionForChild)
|
if (doActionForChild)
|
||||||
group.doForEachChild(entryHandler, groupHandler)
|
group.doForEachChild(entryHandler, groupHandler, stopIterationWhenGroupHandlerOperateFalse)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun searchChildGroup(criteria: (group: Group) -> Boolean): Group? {
|
||||||
|
return searchChildGroup(this, criteria)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun searchChildGroup(rootGroup: GroupVersionedInterface<Group, Entry>,
|
||||||
|
criteria: (group: Group) -> Boolean): Group? {
|
||||||
|
for (childGroup in rootGroup.getChildGroups()) {
|
||||||
|
if (criteria.invoke(childGroup)) {
|
||||||
|
return childGroup
|
||||||
|
} else {
|
||||||
|
val subGroup = searchChildGroup(childGroup, criteria)
|
||||||
|
if (subGroup != null) {
|
||||||
|
return subGroup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user