- java.lang.Object
-
- com.github.f4b6a3.ulid.UlidFactory
-
public final class UlidFactory extends Object
A class that actually generates ULIDs.This class is used by
UlidCreator.You can use this class if you need to use a specific random generator strategy. However, most people just need
UlidCreator.Instances of this class can behave in one of two ways: monotonic or non-monotonic (default).
If the factory is monotonic, the random component is incremented by 1 if more than one ULID is generated within the same millisecond.
The maximum ULIDs that can be generated per millisecond is 2^80.
-
-
Constructor Summary
Constructors Constructor Description UlidFactory()Default constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Ulidcreate()Returns a new ULID.Ulidcreate(long time)Returns a new ULID.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.static UlidFactorynewMonotonicInstance(IntFunction<byte[]> randomFunction, LongSupplier timeFunction)Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(LongSupplier randomFunction)Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(LongSupplier randomFunction, LongSupplier timeFunction)Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(Random random)Returns a new monotonic factory.static UlidFactorynewMonotonicInstance(Random random, LongSupplier timeFunction)Returns a new monotonic factory.
-
-
-
Method Detail
-
newInstance
public static UlidFactory newInstance()
Returns a new factory.It is equivalent to the default constructor
new 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
public static UlidFactory newMonotonicInstance(Random random, LongSupplier timeFunction)
Returns a new monotonic factory.- Parameters:
random- aRandomgeneratortimeFunction- a function that returns the current time in milliseconds, measured from the UNIX epoch of 1970-01-01T00:00Z (UTC)- Returns:
UlidFactory
-
newMonotonicInstance
public static UlidFactory newMonotonicInstance(LongSupplier randomFunction, LongSupplier timeFunction)
Returns a new monotonic factory.The given random function must return a long value.
- Parameters:
randomFunction- a random function that returns a long valuetimeFunction- a function that returns the current time in milliseconds, measured from the UNIX epoch of 1970-01-01T00:00Z (UTC)- Returns:
UlidFactory
-
newMonotonicInstance
public static UlidFactory newMonotonicInstance(IntFunction<byte[]> randomFunction, LongSupplier timeFunction)
Returns a new monotonic factory.The given random function must return a byte array.
- Parameters:
randomFunction- a random function that returns a byte arraytimeFunction- a function that returns the current time in milliseconds, measured from the UNIX epoch of 1970-01-01T00:00Z (UTC)- Returns:
UlidFactory
-
create
public Ulid create()
Returns a new ULID.- Returns:
- a ULID
-
create
public Ulid create(long time)
Returns a new ULID.- Parameters:
time- the current time in milliseconds, measured from the UNIX epoch of 1970-01-01T00:00Z (UTC)- Returns:
- a ULID
-
-