예제 #1
0
  /** {@inheritDoc} */
  @Override
  protected void parse(WordParser wordParser, boolean tolerant) {

    // Parse state field
    if (tolerant) {
      stateFieldExpression = parse(wordParser, UpdateItemStateFieldPathExpressionBNF.ID, tolerant);
    } else {
      stateFieldExpression = new StateFieldPathExpression(this, wordParser.word());
      stateFieldExpression.parse(wordParser, tolerant);
    }

    hasSpaceAfterStateFieldPathExpression = wordParser.skipLeadingWhitespace() > 0;

    // Parse '='
    hasEqualSign = wordParser.startsWith(EQUAL);

    if (hasEqualSign) {
      wordParser.moveForward(1);
      hasSpaceAfterEqualSign = wordParser.skipLeadingWhitespace() > 0;
      if (stateFieldExpression != null) {
        hasSpaceAfterStateFieldPathExpression = true;
      }
    }

    // Parse new value
    newValue = parse(wordParser, NewValueBNF.ID, tolerant);

    if (!hasSpaceAfterEqualSign && (newValue != null)) {
      hasSpaceAfterEqualSign = true;
    }
  }
  /** {@inheritDoc} */
  @Override
  protected AbstractExpression buildExpression(
      AbstractExpression parent,
      WordParser wordParser,
      String word,
      JPQLQueryBNF queryBNF,
      AbstractExpression expression,
      boolean tolerant) {

    expression = new SqrtExpression(parent);
    expression.parse(wordParser, tolerant);
    return expression;
  }
  /** {@inheritDoc} */
  @Override
  AbstractExpression buildExpression(
      AbstractExpression parent,
      WordParser wordParser,
      String word,
      JPQLQueryBNF queryBNF,
      AbstractExpression expression,
      boolean tolerant) {

    expression = new OrderByClause(parent);
    expression.parse(wordParser, tolerant);
    return expression;
  }
  /** {@inheritDoc} */
  @Override
  void parse(WordParser wordParser, boolean tolerant) {

    // Parse 'UPDATE'
    updateClause = new UpdateClause(this);
    updateClause.parse(wordParser, tolerant);

    hasSpaceAfterUpdateClause = wordParser.skipLeadingWhitespace() > 0;

    // Parse 'WHERE'
    if (wordParser.startsWithIdentifier(WHERE)) {
      whereClause = new WhereClause(this);
      whereClause.parse(wordParser, tolerant);
    }

    // Now fully qualify attribute names with a virtual identification variable
    accept(FullyQualifyPathExpressionVisitor.instance());
  }