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 BetweenTimeStringTreeNode extends MessageFilterBaseTreeNode implements MessageFilterTranslatable {
@Override
public MessageFilter translate() {
ValueTreeNode xpathNode = (ValueTreeNode)getChild(0);
String xpath = (String)xpathNode.getValue();
TimeStringValueTreeNode lowerBoundNode = (TimeStringValueTreeNode)getChild(1);
TimeStringValueTreeNode upperBoundNode = (TimeStringValueTreeNode)getChild(2);
return MessageFilters.and(
new PathValueMessageFilter(
xpath,
new TimeStringValuePredicate(
lowerBoundNode.getValueTimeFormat(),
lowerBoundNode.getInputTimeFormat(),
lowerBoundNode.getValue(),
">=")),
new PathValueMessageFilter(
xpath,
new TimeStringValuePredicate(
upperBoundNode.getValueTimeFormat(),
upperBoundNode.getInputTimeFormat(),
upperBoundNode.getValue(),
"<"))
);
}
public BetweenTimeStringTreeNode(Token t) {
super(t);
}
public BetweenTimeStringTreeNode(BetweenTimeStringTreeNode node) {
super(node);
}
public Tree dupNode() {
return new BetweenTimeStringTreeNode(this);
}
}