blob: 5a802dcd1e75e490b9ea1885d68029bdc2736bbe [file] [log] [blame]
package org.apache.cassandra.db.transform;
import org.apache.cassandra.db.partitions.BasePartitionIterator;
import org.apache.cassandra.db.partitions.PartitionIterator;
import org.apache.cassandra.db.partitions.UnfilteredPartitionIterator;
import org.apache.cassandra.db.rows.RowIterator;
public final class FilteredPartitions extends BasePartitions<RowIterator, BasePartitionIterator<?>> implements PartitionIterator
{
// wrap basic iterator for transformation
FilteredPartitions(PartitionIterator input)
{
super(input);
}
// wrap basic unfiltered iterator for transformation, applying filter as first transformation
FilteredPartitions(UnfilteredPartitionIterator input, Filter filter)
{
super(input);
add(filter);
}
// copy from an UnfilteredPartitions, applying a filter to convert it
FilteredPartitions(Filter filter, UnfilteredPartitions copyFrom)
{
super(copyFrom);
add(filter);
}
/**
* Filter any RangeTombstoneMarker from the iterator's iterators, transforming it into a PartitionIterator.
*/
public static PartitionIterator filter(UnfilteredPartitionIterator iterator, int nowInSecs)
{
Filter filter = new Filter(!iterator.isForThrift(), nowInSecs);
if (iterator instanceof UnfilteredPartitions)
return new FilteredPartitions(filter, (UnfilteredPartitions) iterator);
return new FilteredPartitions(iterator, filter);
}
}