package org.reldb.rel.v0.values; import org.reldb.rel.v0.generator.Generator; /** A TupleIteratorAutokey is a TupleIterator that generates a unique auto-numbered attribute. */ public class TupleIteratorAutokey extends TupleIterator { private Generator generator; private TupleIterator source; private long autokey; public TupleIteratorAutokey(TupleIterator source, Generator generator) { this.generator = generator; this.source = source; autokey = 1; } @Override public boolean hasNext() { return source.hasNext(); } @Override public ValueTuple next() { Value[] autoKeyTupleRaw = new Value[] {ValueInteger.select(generator, autokey++)}; return (new ValueTuple(generator, autoKeyTupleRaw)).joinDisjoint(source.next()); } @Override public void close() { source.close(); } }