- java.lang.Object
-
- com.github.f4b6a3.ulid.UlidFactory
-
public final class UlidFactory extends Object
Factory that generates ULIDs. If the factory is not monotonic, the random component always changes. If the factory is monotonic, the random component changes whenever the millisecond changes. If more than one ULID is generated within the same millisecond, the random component is incremented by one. The maximum ULIDs that can be generated per millisecond is 2^80.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classUlidFactory.ByteRandomprotected static interfaceUlidFactory.IRandomprotected static classUlidFactory.LongRandomprotected static classUlidFactory.MonotonicFunctionFunction that creates Monotonic ULIDs.protected static classUlidFactory.UlidFunctionFunction that creates ULIDs.
-
Constructor Summary
Constructors Constructor Description UlidFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Ulidcreate()Returns a UUID.Ulidcreate(long time)Returns a UUID with a specific time.static UlidFactorynewInstance()Returns a new factory.static UlidFactorynewInstance(IntFunction<byte[]> randomFunction)Returns a new factory.static UlidFactorynewInstance(LongSupplier randomFunction)Returns a new factory.static UlidFactorynewInstance(Random random)Returns a new factory.static UlidFactorynewMonotonicInstance()Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(IntFunction<byte[]> randomFunction)Returns a new monotonic factory.protected static UlidFactorynewMonotonicInstance(IntFunction<byte[]> randomFunction, Clock clock)Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(LongSupplier randomFunction)Returns a new monotonic factory.protected static UlidFactorynewMonotonicInstance(LongSupplier randomFunction, Clock clock)Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(Random random)Returns a new monotonic factory.
-
-
-
Method Detail
-
newInstance
public static UlidFactory newInstance()
Returns a new factory. It is equivalent tonew UlidFactory().- Returns:
UlidFactory
-
newInstance
public static UlidFactory newInstance(Random random)
Returns a new factory.- Parameters:
random- aRandomgenerator- Returns:
UlidFactory
-
newInstance
public static UlidFactory newInstance(LongSupplier randomFunction)
Returns a new factory. The given random function must return a long value.- Parameters:
randomFunction- a random function that returns a long value- Returns:
UlidFactory
-
newInstance
public static UlidFactory newInstance(IntFunction<byte[]> randomFunction)
Returns a new factory. The given random function must return a byte array.- Parameters:
randomFunction- a random function that returns a byte array- Returns:
UlidFactory
-
newMonotonicInstance
public static UlidFactory newMonotonicInstance()
Returns a new monotonic factory.- Returns:
UlidFactory
-
newMonotonicInstance
public static UlidFactory newMonotonicInstance(Random random)
Returns a new monotonic factory.- Parameters:
random- aRandomgenerator- Returns:
UlidFactory
-
newMonotonicInstance
public static UlidFactory newMonotonicInstance(LongSupplier randomFunction)
Returns a new monotonic factory. The given random function must return a long value.- Parameters:
randomFunction- a random function that returns a long value- Returns:
UlidFactory
-
newMonotonicInstance
public static UlidFactory newMonotonicInstance(IntFunction<byte[]> randomFunction)
Returns a new monotonic factory. The given random function must return a byte array.- Parameters:
randomFunction- a random function that returns a byte array- Returns:
UlidFactory
-
newMonotonicInstance
protected static UlidFactory newMonotonicInstance(LongSupplier randomFunction, Clock clock)
Returns a new monotonic factory. The given random function must return a long value.- Parameters:
randomFunction- a random function that returns a long valueclock- a custom clock instance for tests- Returns:
UlidFactory
-
newMonotonicInstance
protected static UlidFactory newMonotonicInstance(IntFunction<byte[]> randomFunction, Clock clock)
Returns a new monotonic factory. The given random function must return a byte array.- Parameters:
randomFunction- a random function that returns a byte arrayclock- a custom clock instance for tests- Returns:
UlidFactory
-
create
public Ulid create()
Returns a UUID.- Returns:
- a ULID
-
create
public Ulid create(long time)
Returns a UUID with a specific time. The time must be the number of milliseconds since 1970-01-01 (Unix epoch).- Parameters:
time- a given time- Returns:
- a ULID
-
-