package com.ldbc.driver.generator; import java.util.Iterator; import com.ldbc.driver.util.NumberHelper; public class IncrementingGenerator<GENERATE_TYPE extends Number> extends Generator<GENERATE_TYPE> { private final NumberHelper<GENERATE_TYPE> number; private final GENERATE_TYPE max; private final Iterator<GENERATE_TYPE> incrementByGenerator; private GENERATE_TYPE count; IncrementingGenerator( GENERATE_TYPE start, Iterator<GENERATE_TYPE> incrementByGenerator, GENERATE_TYPE max ) { this.count = start; this.incrementByGenerator = incrementByGenerator; this.max = max; this.number = NumberHelper.createNumberHelper( start.getClass() ); } @Override protected GENERATE_TYPE doNext() { if ( null != max && number.gt( count, max ) ) { return null; } GENERATE_TYPE next = count; count = number.sum( count, incrementByGenerator.next() ); return next; } }