package com.ldbc.driver.generator;
import com.ldbc.driver.util.Function2;
import java.util.Iterator;
// TODO test
public class MergingGenerator<FROM_GENERATE_TYPE_1, FROM_GENERATE_TYPE_2, TO_GENERATE_TYPE>
extends Generator<TO_GENERATE_TYPE>
{
private final Iterator<FROM_GENERATE_TYPE_1> original1;
private final Iterator<FROM_GENERATE_TYPE_2> original2;
private final Function2<FROM_GENERATE_TYPE_1,FROM_GENERATE_TYPE_2,TO_GENERATE_TYPE,RuntimeException> mergeFun;
MergingGenerator(
Iterator<FROM_GENERATE_TYPE_1> original1,
Iterator<FROM_GENERATE_TYPE_2> original2,
Function2<FROM_GENERATE_TYPE_1,FROM_GENERATE_TYPE_2,TO_GENERATE_TYPE,RuntimeException> mergeFun )
{
this.original1 = original1;
this.original2 = original2;
this.mergeFun = mergeFun;
}
@Override
protected TO_GENERATE_TYPE doNext() throws GeneratorException
{
if ( original1.hasNext() && original2.hasNext() )
{ return mergeFun.apply( original1.next(), original2.next() ); }
else
{ return null; }
}
}