[Editor] Create UID Manager
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package com.bartlomiejpluta.base.editor.resource.uid.manager
|
||||
|
||||
import com.bartlomiejpluta.base.editor.resource.uid.model.UIDTarget
|
||||
|
||||
interface UIDManager {
|
||||
fun nextUID(target: UIDTarget): String
|
||||
fun loadData(target: UIDTarget, uids: Set<String>)
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.bartlomiejpluta.base.editor.resource.uid.manager
|
||||
|
||||
import com.bartlomiejpluta.base.editor.resource.uid.model.UIDTarget
|
||||
import org.springframework.stereotype.Component
|
||||
import java.util.*
|
||||
|
||||
@Component
|
||||
class UUIDBasedUIDManager : UIDManager {
|
||||
private val registry = mutableMapOf<UIDTarget, Set<String>>()
|
||||
|
||||
override fun nextUID(target: UIDTarget): String {
|
||||
val set = registry.putIfAbsent(target, mutableSetOf())!!
|
||||
|
||||
var uid = ""
|
||||
|
||||
do {
|
||||
uid = UUID.randomUUID().toString()
|
||||
} while (uid !in set)
|
||||
|
||||
return uid
|
||||
}
|
||||
|
||||
override fun loadData(target: UIDTarget, uids: Set<String>) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.bartlomiejpluta.base.editor.resource.uid.model
|
||||
|
||||
enum class UIDTarget {
|
||||
MAP
|
||||
}
|
||||
Reference in New Issue
Block a user