package uk.ac.imperial.lsds.streamsql.operator; import java.util.List; import uk.ac.imperial.lsds.seep.comm.serialization.DataTuple; import uk.ac.imperial.lsds.seep.operator.StatelessOperator; import uk.ac.imperial.lsds.streamsql.predicates.IPredicate; import uk.ac.imperial.lsds.streamsql.visitors.OperatorVisitor; public class Selection implements StatelessOperator, IStreamSQLOperator { private static final long serialVersionUID = 1L; private IPredicate predicate; public Selection(IPredicate predicate) { this.predicate = predicate; } @Override public void processData(DataTuple data) { /* * Check whether predicate is satisfied for tuple */ if (this.predicate.satisfied(data)) /* * Send the selected tuple */ api.send(data); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("Selection ("); sb.append(predicate.toString()); sb.append(")"); return sb.toString(); } @Override public void setUp() { // TODO Auto-generated method stub } @Override public void processData(List<DataTuple> dataList) { for (DataTuple tuple : dataList) processData(tuple); } @Override public void accept(OperatorVisitor ov) { ov.visit(this); } }