Package net.timewalker.ffmq3.common.message.selector.expression

Examples of net.timewalker.ffmq3.common.message.selector.expression.SelectorNode


        return parseOrExpression();
    }
   
    private SelectorNode parseSpecialConstructs() throws InvalidSelectorException
    {
        SelectorNode lNode = parseComparison();
       
        if (isSpecialOperator(currentToken))
        {
          if (currentToken.equalsIgnoreCase("is null"))
            {
                readNextToken(); // skip operator
                return new IsNullOperator(lNode);
            }
            if (currentToken.equalsIgnoreCase("is not null"))
            {
                readNextToken(); // skip operator
                return new IsNotNullOperator(lNode);
            }
            if (currentToken.equalsIgnoreCase("is true"))
            {
                readNextToken(); // skip operator
                return new EqualsOperator(lNode,new BooleanLiteral(Boolean.TRUE));
            }
            if (currentToken.equalsIgnoreCase("is false"))
            {
                readNextToken(); // skip operator
                return new EqualsOperator(lNode,new BooleanLiteral(Boolean.FALSE));
            }
            if (currentToken.equalsIgnoreCase("is not true"))
            {
                readNextToken(); // skip operator
                return new EqualsOperator(lNode,new BooleanLiteral(Boolean.FALSE));
            }
            if (currentToken.equalsIgnoreCase("is not false"))
            {
                readNextToken(); // skip operator
                return new EqualsOperator(lNode,new BooleanLiteral(Boolean.TRUE));
            }
            if (currentToken.equalsIgnoreCase("in"))
            {
                readNextToken(); // skip operator
                return new InOperator(lNode, parseListConstruct());
            }
            if (currentToken.equalsIgnoreCase("not in"))
            {
                readNextToken(); // skip operator
                return new NotInOperator(lNode, parseListConstruct());
            }
            if (currentToken.equalsIgnoreCase("like"))
            {
              readNextToken(); // skip operator             
                return new LikeOperator(lNode, parsePatternExpression(), parseEscapeExpression());
            }
            if (currentToken.equalsIgnoreCase("not like"))
            {
                readNextToken(); // skip operator
                return new NotLikeOperator(lNode, parsePatternExpression(), parseEscapeExpression());
            }
            if (currentToken.equalsIgnoreCase("between"))
            {
                readNextToken(); // skip 'between'
                SelectorNode lowerBound = parseAdditiveExpression();
                if (isEndOfExpression())
                    throw new InvalidSelectorException("Unexpected end of expression");
                if (!currentToken.equalsIgnoreCase("and"))
                    throw new InvalidSelectorException("Expected an AND operator after lower bound in BETWEEN construct");
                readNextToken(); // Skip 'and'
                SelectorNode upperBound = parseAdditiveExpression();
               
                return new BetweenOperator(lNode, lowerBound, upperBound);
            }
            if (currentToken.equalsIgnoreCase("not between"))
            {
                readNextToken(); // skip 'between'
                SelectorNode lowerBound = parseAdditiveExpression();
                if (isEndOfExpression())
                    throw new InvalidSelectorException("Unexpected end of expression");
                if (!currentToken.equalsIgnoreCase("and"))
                    throw new InvalidSelectorException("Expected an AND operator after lower bound in BETWEEN construct");
                readNextToken(); // Skip 'and'
                SelectorNode upperBound = parseAdditiveExpression();
               
                return new NotBetweenOperator(lNode, lowerBound, upperBound);
            }
        }
       
View Full Code Here


        readNextToken(); // Skip (
       
        List items = new ArrayList();
        while (!isEndOfExpression() && !currentToken.equals(")"))
        {
            SelectorNode item = parseBaseExpression();
            items.add(item);
           
            if (isEndOfExpression())
                throw new InvalidSelectorException("Unexpected end of expression");
            if (currentToken.equals(","))
View Full Code Here

    private SelectorNode parsePatternExpression() throws InvalidSelectorException
    {
        if (isEndOfExpression())
          throw new InvalidSelectorException("Expected pattern operand after LIKE operator");

        SelectorNode patternNode = parseBaseExpression();
        if (!(patternNode instanceof StringLiteral))
          throw new InvalidSelectorException("pattern operand of LIKE operator should be a string literal");

        return patternNode;
    }
View Full Code Here

    private SelectorNode parseEscapeExpression() throws InvalidSelectorException
    {
        if (!isEndOfExpression() && currentToken.equalsIgnoreCase("escape"))
        {
            readNextToken(); // skip escape
            SelectorNode escapeNode = parseBaseExpression();
            if (!(escapeNode instanceof StringLiteral))
              throw new InvalidSelectorException("escape operand of LIKE operator should be a string literal");
            String value = (String)((StringLiteral)escapeNode).getValue();
            if (value.length() != 1)
              throw new InvalidSelectorException("escape operand of LIKE operator must contain one and only one character");
View Full Code Here

        return null;
    }
   
    private SelectorNode parseAndExpression() throws InvalidSelectorException
  {
      SelectorNode lNode = parseSpecialConstructs();

    while (!isEndOfExpression() && currentToken.equalsIgnoreCase("and"))
    {
      readNextToken(); // skip 'and'
      lNode = new AndOperator(lNode, parseSpecialConstructs());
View Full Code Here

    return lNode;
  }

  private SelectorNode parseOrExpression() throws InvalidSelectorException
  {
    SelectorNode lNode = parseAndExpression();

    while (!isEndOfExpression() && currentToken.equalsIgnoreCase("or"))
    {
      readNextToken(); // skip 'or'
      lNode = new OrOperator(lNode, parseAndExpression());
View Full Code Here

    return lNode;
  }
   
    private SelectorNode parseComparison() throws InvalidSelectorException
    {
        SelectorNode lNode = parseAdditiveExpression();

        if (!isEndOfExpression() && isComparisonOperator(currentToken))
        {
            if (currentToken.equals("="))
            {
View Full Code Here

        return lNode;
    }
   
    private SelectorNode parseAdditiveExpression() throws InvalidSelectorException
    {
        SelectorNode lNode = parseMultiplicativeExpression();

        while (!isEndOfExpression())
        {
            if (currentToken.equals("+"))
            {
View Full Code Here

        return lNode;
    }
   
    private SelectorNode parseMultiplicativeExpression() throws InvalidSelectorException
    {
        SelectorNode lNode = parseUnaryExpression();

        while (!isEndOfExpression())
        {
            if (currentToken.equals("*"))
            {
View Full Code Here

    }
   
    private SelectorNode parseGroupExpression() throws InvalidSelectorException
    {
        readNextToken(); // skip '('
        SelectorNode lExpression = parseExpression();
       
        if (isEndOfExpression())
            throw new InvalidSelectorException("Unexpected end of sub-expression");
        if (!currentToken.equals(")"))
            throw new InvalidSelectorException("Unexpected extra token at end of sub-expression : "+currentToken);
View Full Code Here

TOP

Related Classes of net.timewalker.ffmq3.common.message.selector.expression.SelectorNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.