Package org.eclipse.persistence.jpa.internal.jpql.parser

Examples of org.eclipse.persistence.jpa.internal.jpql.parser.Expression


      addProblem(expression, startPosition, endPosition, TrimExpression_InvalidExpression);
    }

    // Invalid trim character
    if (expression.hasTrimCharacter()) {
      Expression trimCharacter = expression.getTrimCharacter();

      // Make sure it's not an input parameter
      String inputParameter = queryContext.literal(trimCharacter, LiteralType.INPUT_PARAMETER);

      if (ExpressionTools.stringIsEmpty(inputParameter)) {
View Full Code Here


    private void validateSeparation(CollectionExpression expression) {

      for (int index = 0, count = expression.childrenSize(); index + 1 < count; index++) {

        Expression expression1 = expression.getChild(index);

        if (isNull(expression1)) {
          int startPosition = position(expression1);
          int endPosition   = startPosition;

          addProblem(
            expression,
            startPosition,
            endPosition,
            CollectionExpression_MissingExpression,
            String.valueOf(index + 1)
          );
        }

        if (!validateSeparator(expression, index)) {
          Expression expression2 = expression.getChild(index + 1);

          int startPosition = position(expression1) + length(expression1);
          int endPosition   = position(expression2);

          // The space is part of the child expression, move backward
          if (!expression.hasSpace(index)) {
            startPosition--;
          }

          if (!validateOnly) {
            addProblem(
              expression,
              startPosition,
              endPosition,
              wrongSeparatorProblemKey,
              expression1.toParsedText(),
              expression2.toParsedText()
            );
          }
        }
      }
    }
View Full Code Here

   * {@inheritDoc}
   */
  @Override
  public void visit(LikeExpression expression) {

    Expression patternValue     = expression.getPatternValue();
    Expression stringExpression = expression.getStringExpression();
    Expression escapeCharacter  = expression.getEscapeCharacter();

    if (escapeCharacter == inputParameter) {
      this.type = Character.class;
    }
    else if (patternValue.isAncestor(inputParameter)) {
View Full Code Here

    expression.getStateFieldPathExpression().accept(this);
  }

  private void visitCompoundExpression(CompoundExpression expression) {

    Expression leftExpression  = expression.getLeftExpression();
    Expression rightExpression = expression.getRightExpression();

    // Now traverse the other side to find its return type
    if (leftExpression.isAncestor(inputParameter)) {
      if (currentExpression == null) {
        currentExpression = expression;
        rightExpression.accept(this);
        currentExpression = null;
      }
      else {
        type = null;
        ignoreType = true;
        expression = null;
      }
    }
    // Now traverse the other side to find its return type
    else if (rightExpression.isAncestor(inputParameter)) {
      if (currentExpression == null) {
        currentExpression = expression;
        leftExpression.accept(this);
        currentExpression = null;
      }
View Full Code Here

  /**
   * {@inheritDoc}
   */
  public void visit(SelectClause expression) {

    Expression selectExpression = expression.getSelectExpression();

    // visit(CollectionExpression) iterates through the children but for a
    // SELECT clause, a CollectionExpression means the result type is Object[]
    CollectionExpression collectionExpression = collectionExpression(selectExpression);

    if (collectionExpression != null) {
      resolver = buildClassResolver(Object[].class);
    }
    else {
      selectExpression.accept(this);
    }
  }
View Full Code Here

      addProblem(expression, startPosition, endPosition, missingConditionalExpressionMessageKey);
    }
    // Invalid conditional expression
    else {
      Expression conditionalExpression = expression.getConditionalExpression();

      if (!isValid(conditionalExpression, ConditionalExpressionBNF.ID)) {
        int startPosition = position(conditionalExpression);
        int endPosition   = startPosition + length(conditionalExpression);
        addProblem(expression, startPosition, endPosition, invalidConditionalExpressionMessageKey);
View Full Code Here

    // More than one entity abstract schema type is declared
    CollectionExpression collectionExpression = collectionExpression(expression.getRangeVariableDeclaration());

    if (collectionExpression != null) {
      Expression firstChild = collectionExpression.getChild(0);
      int startPosition = position(firstChild) + length(firstChild);
      int endPosition = position(collectionExpression) + length(collectionExpression);
      boolean malformed = false;

      for (int index = collectionExpression.childrenSize() - 1; --index >= 0; ) {
View Full Code Here

      int endPosition   = startPosition;
      addProblem(expression, startPosition, endPosition, InExpression_MissingExpression);
    }
    // Make sure it's a valid expression
    else {
      Expression pathExpression = expression.getExpression();

      if (!isValid(pathExpression, StateFieldPathExpressionBNF.ID) &&
          !isValid(pathExpression, TypeExpressionBNF.ID)) {

        int startPosition = position(expression);
View Full Code Here

        startPosition++;
      }

      // Validate the escape character
      if (expression.hasEscapeCharacter()) {
         Expression escapeCharacter = expression.getEscapeCharacter();
         int endPosition = startPosition + length(escapeCharacter);

         // Check for a string literal (single quoted character)
         String character = queryContext.literal(escapeCharacter, LiteralType.STRING_LITERAL);

         if (character.length() > 0) {
           character = ExpressionTools.unquote(character);

           if (character.length() != 1) {
             addProblem(
               expression,
               startPosition,
               endPosition,
               LikeExpression_InvalidEscapeCharacter,
               escapeCharacter.toParsedText()
             );
           }
         }
         else {
           // Check for an input parameter
           character = queryContext.literal(escapeCharacter, LiteralType.INPUT_PARAMETER);

           if (character.length() == 0) {
             addProblem(
              expression,
              startPosition,
              endPosition,
              LikeExpression_InvalidEscapeCharacter,
              escapeCharacter.toParsedText()
            );
           }
         }
       }
       else {
View Full Code Here

  @Override
  public void visit(SimpleSelectClause expression) {

    // Select expression cannot be a collection
    if (expression.hasSelectExpression()) {
      Expression selectExpression = expression.getSelectExpression();

      if (collectionExpression(selectExpression) != null) {
        addProblem(
          selectExpression,
          SimpleSelectClause_NotSingleExpression,
          selectExpression.toParsedText()
        );
      }

      super.visit(expression);
    }
View Full Code Here

TOP

Related Classes of org.eclipse.persistence.jpa.internal.jpql.parser.Expression

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.