package edu.washington.escience.myria.operator;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import edu.washington.escience.myria.DbException;
import edu.washington.escience.myria.Schema;
import edu.washington.escience.myria.storage.TupleBatch;
/**
* Inject delay in processing each TupleBatch.
*/
public class DuplicateTBGenerator extends LeafOperator {
/**
* @param tb TupleBatch to duplicate.
* @param numDuplicates number of duplicates to generate.
*/
public DuplicateTBGenerator(final TupleBatch tb, final int numDuplicates) {
this.numDuplicates = numDuplicates;
this.tb = Preconditions.checkNotNull(tb);
}
/**
* TupleBatch to duplicate.
*/
private final TupleBatch tb;
/**
* Number of duplicates.
*/
private final int numDuplicates;
/**
* @param numDuplicates number of duplicates to generate.
*/
private int numDuplicated;
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected final void init(final ImmutableMap<String, Object> initProperties) throws DbException {
numDuplicated = 0;
}
@Override
protected final void cleanup() throws DbException {}
@Override
protected final TupleBatch fetchNextReady() throws DbException {
if (numDuplicated >= numDuplicates) {
return null;
}
numDuplicated++;
return tb;
}
@Override
public final Schema generateSchema() {
return tb.getSchema();
}
}