diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/manager/UIDManager.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/manager/UIDManager.kt new file mode 100755 index 00000000..b163f569 --- /dev/null +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/manager/UIDManager.kt @@ -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) +} \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/manager/UUIDBasedUIDManager.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/manager/UUIDBasedUIDManager.kt new file mode 100755 index 00000000..02f98d86 --- /dev/null +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/manager/UUIDBasedUIDManager.kt @@ -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>() + + 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) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/model/UIDTarget.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/model/UIDTarget.kt new file mode 100755 index 00000000..79da9108 --- /dev/null +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/resource/uid/model/UIDTarget.kt @@ -0,0 +1,5 @@ +package com.bartlomiejpluta.base.editor.resource.uid.model + +enum class UIDTarget { + MAP +} \ No newline at end of file