/** {@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()); }