]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.api.uuid/src/org/argeo/api/uuid/TypedUuidFactory.java
All typed UUIDs implemented (except v2).
[lgpl/argeo-commons.git] / org.argeo.api.uuid / src / org / argeo / api / uuid / TypedUuidFactory.java
diff --git a/org.argeo.api.uuid/src/org/argeo/api/uuid/TypedUuidFactory.java b/org.argeo.api.uuid/src/org/argeo/api/uuid/TypedUuidFactory.java
new file mode 100644 (file)
index 0000000..770e9b7
--- /dev/null
@@ -0,0 +1,26 @@
+package org.argeo.api.uuid;
+
+import java.nio.charset.Charset;
+
+/** An {@link UuidFactory} which also (trivially) produces {@link TypedUuid}. */
+public interface TypedUuidFactory extends UuidFactory {
+       /** Creates a {@link TimeUuid} (v1). */
+       default TimeUuid newTimeUuid() {
+               return new TimeUuid(timeUUID());
+       }
+
+       /** Creates an MD5 {@link NameUuid} (v3). */
+       default NameUuid newNameUuidV3(TypedUuid namespace, String name, Charset charset) {
+               return new NameUuid(nameUUIDv3(namespace.get(), name, charset), namespace, name, charset);
+       }
+
+       /** Creates a {@link RandomUuid}, using {@link #randomUUID()}. */
+       default RandomUuid newRandomUuid() {
+               return new RandomUuid(randomUUID());
+       }
+
+       /** Creates an SHA1 {@link NameUuid} (v5). */
+       default NameUuid newNameUuidV5(TypedUuid namespace, String name, Charset charset) {
+               return new NameUuid(nameUUIDv5(namespace.get(), name, charset), namespace, name, charset);
+       }
+}