package com.netflix.suro.routing.filter.lang;
import com.netflix.suro.routing.filter.*;
import org.antlr.runtime.Token;
import org.antlr.runtime.tree.Tree;
public class BetweenTreeNode extends MessageFilterBaseTreeNode implements MessageFilterTranslatable {
@Override
public MessageFilter translate() {
ValueTreeNode xpathNode = (ValueTreeNode)getChild(0);
String xpath = (String)xpathNode.getValue();
ValueTreeNode lowerBoundNode = (ValueTreeNode)getChild(1);
Number lowerBound = (Number)lowerBoundNode.getValue();
ValueTreeNode upperBoundNode = (ValueTreeNode)getChild(2);
Number upperBound = (Number)upperBoundNode.getValue();
return MessageFilters.and(
new PathValueMessageFilter(xpath, new NumericValuePredicate(lowerBound, ">=")),
new PathValueMessageFilter(xpath, new NumericValuePredicate(upperBound, "<"))
);
}
public BetweenTreeNode(Token t) {
super(t);
}
public BetweenTreeNode(BetweenTreeNode node) {
super(node);
}
public Tree dupNode() {
return new BetweenTreeNode(this);
}
}