public static Field sequentialNumberField(final String name,
                                              final long startInc,
                                              final long endExc) {

        try {
            final AtomicLoopedLongSequence numberSequence = new AtomicLoopedLongSequence(
                    startInc,
                    endExc);

            final Supplier<String> supplier = () ->
                    Long.toString(numberSequence.getNext());

            return new Field(name, supplier);
        } catch (Exception e) {
            throw new RuntimeException(Utils.message(
                    "Error building sequentialValueField, {}, {}", name, e.getMessage()), e);
        }
    }
A field that produces sequential integers starting at startInc (inclusive).
If endExc (exclusive) is reached it will loop back round to startInc.

@param name     Field name for use in the header
@param startInc The lowest value to use in the string format (inclusive)
@param endExc   The highest value to use in the string format (exclusive)
                replace the %s in the format string
@return A complete {@link Field}
stroom-test-common/src/main/java/stroom/test/common/data/DataGenerator.java