| package edu.uci.ics.hyracks.algebricks.runtime.evaluators; |
| |
| import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException; |
| import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator; |
| import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory; |
| import edu.uci.ics.hyracks.api.context.IHyracksTaskContext; |
| import edu.uci.ics.hyracks.data.std.api.IPointable; |
| import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference; |
| |
| public class TupleFieldEvaluatorFactory implements IScalarEvaluatorFactory { |
| private static final long serialVersionUID = 1L; |
| |
| private final int fieldIndex; |
| |
| public TupleFieldEvaluatorFactory(int fieldIndex) { |
| this.fieldIndex = fieldIndex; |
| } |
| |
| @Override |
| public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException { |
| return new IScalarEvaluator() { |
| @Override |
| public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException { |
| result.set(tuple.getFieldData(fieldIndex), tuple.getFieldStart(fieldIndex), |
| tuple.getFieldLength(fieldIndex)); |
| } |
| }; |
| } |
| } |