Class 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 Detail

      • UlidFactory

        public UlidFactory()
        Default constructor.
    • 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​(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 - a Random generator
        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 - a Random generator
        timeFunction - 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 value
        timeFunction - 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 array
        timeFunction - 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