blob: 70158fbd8e7614bf638349a8d2e6baf03139faa3 [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;
import org.apache.nifi.provenance.ProvenanceEventType;
public class EqualsEvaluator implements BooleanEvaluator {
private final OperandEvaluator<?> lhs;
private final OperandEvaluator<?> rhs;
private final boolean negated;
private final String alias;
public EqualsEvaluator(final OperandEvaluator<?> lhs, final OperandEvaluator<?> rhs) {
this(lhs, rhs, false, null);
}
public EqualsEvaluator(final OperandEvaluator<?> lhs, final OperandEvaluator<?> rhs, final String alias) {
this(lhs, rhs, false, alias);
}
public EqualsEvaluator(final OperandEvaluator<?> lhs, final OperandEvaluator<?> rhs, final boolean negated) {
this(lhs, rhs, negated, null);
}
public EqualsEvaluator(final OperandEvaluator<?> lhs, final OperandEvaluator<?> rhs, final boolean negated, final String alias) {
this.lhs = lhs;
this.rhs = rhs;
this.negated = negated;
this.alias = alias;
}
public OperandEvaluator<?> getLHS() {
return lhs;
}
public OperandEvaluator<?> getRHS() {
return rhs;
}
public Boolean evaluate(final ProvenanceEventRecord record) {
Object lhsValue = lhs.evaluate(record);
Object rhsValue = rhs.evaluate(record);
if ( lhsValue == null || rhsValue == null ) {
return false;
}
if ( lhsValue instanceof ProvenanceEventType ) {
lhsValue = ((ProvenanceEventType) lhsValue).name();
}
if ( rhsValue instanceof ProvenanceEventType ) {
rhsValue = ((ProvenanceEventType) rhsValue).name();
}
final boolean equal = lhsValue.equals(rhsValue);
return negated ? !equal : equal;
}
public BooleanEvaluator negate() {
return new EqualsEvaluator(lhs, rhs, !negated, alias);
}
@Override
public String toString() {
return alias == null ? lhs.toString() + "=" + rhs.toString() : alias;
}
@Override
public int getEvaluatorType() {
return org.apache.nifi.pql.ProvenanceQueryParser.EQUALS;
}
}