blob: 7c11416beb6facb8147c35a0b7854b5998487d51 [file] [log] [blame]
package org.apache.nifi.pql.evaluation.comparison;
import org.apache.nifi.pql.evaluation.BooleanEvaluator;
import org.apache.nifi.pql.evaluation.OperandEvaluator;
import org.apache.nifi.provenance.ProvenanceEventRecord;
public class StartsWithEvaluator implements BooleanEvaluator {
private final boolean negated;
private final OperandEvaluator<?> lhs;
private final OperandEvaluator<?> rhs;
public StartsWithEvaluator(final OperandEvaluator<?> lhs, final OperandEvaluator<?> rhs) {
this(lhs, rhs, false);
}
public StartsWithEvaluator(final OperandEvaluator<?> lhs, final OperandEvaluator<?> rhs, final boolean negated) {
this.lhs = lhs;
this.rhs = rhs;
this.negated = negated;
}
@Override
public Boolean evaluate(final ProvenanceEventRecord record) {
final Object lhsValue = lhs.evaluate(record);
final Object rhsValue = rhs.evaluate(record);
if ( lhsValue == null || rhsValue == null ) {
return false;
}
final String lhsString = lhsValue.toString();
final String rhsString = rhsValue.toString();
final boolean startsWith = lhsString.startsWith(rhsString);
return negated ? !startsWith : startsWith;
}
public OperandEvaluator<?> getLHS() {
return lhs;
}
public OperandEvaluator<?> getRHS() {
return rhs;
}
@Override
public BooleanEvaluator negate() {
return new StartsWithEvaluator(lhs, rhs, !negated);
}
@Override
public int getEvaluatorType() {
return org.apache.nifi.pql.ProvenanceQueryParser.STARTS_WITH;
}
}