X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.uuid%2Fsrc%2Forg%2Fargeo%2Fapi%2Fuuid%2FTypedUuidFactory.java;fp=org.argeo.api.uuid%2Fsrc%2Forg%2Fargeo%2Fapi%2Fuuid%2FTypedUuidFactory.java;h=770e9b78274e558c97b584e8e2c5a4432a898dcb;hb=593a4eabb76b74cd382ecf3f181d57abe0d643f9;hp=0000000000000000000000000000000000000000;hpb=e8e2c65f356b30b35e4d8a1de66691a789c183bb;p=lgpl%2Fargeo-commons.git 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 index 000000000..770e9b782 --- /dev/null +++ b/org.argeo.api.uuid/src/org/argeo/api/uuid/TypedUuidFactory.java @@ -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); + } +}