package com.netflix.infix.lang.infix.antlr; import com.google.common.base.Predicate; import com.netflix.infix.Predicates; import com.netflix.infix.PathValueEventFilter; import com.netflix.infix.TimeStringValuePredicate; import org.antlr.runtime.Token; import org.antlr.runtime.tree.Tree; public class BetweenTimeStringTreeNode extends PredicateBaseTreeNode implements PredicateTranslatable { @Override public Predicate<Object> translate() { ValueTreeNode xpathNode = (ValueTreeNode)getChild(0); String xpath = (String)xpathNode.getValue(); TimeStringValueTreeNode lowerBoundNode = (TimeStringValueTreeNode)getChild(1); TimeStringValueTreeNode upperBoundNode = (TimeStringValueTreeNode)getChild(2); return Predicates.and( new PathValueEventFilter( xpath, new TimeStringValuePredicate( lowerBoundNode.getValueTimeFormat(), lowerBoundNode.getInputTimeFormat(), lowerBoundNode.getValue(), ">=")), new PathValueEventFilter( 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); } }