/** * {@inheritDoc} */ @Override protected void addChildrenTo(Collection<Expression> children) { children.add(getUpdateClause()); children.add(getWhereClause()); }
private boolean isWhereClause() { if (query.isSelectStatement()) { return query.getSelectStatement().hasWhereClause(); } else if (query.isUpdateStatement()) { return query.getUpdateStatement().hasWhereClause(); } if (query.isDeleteStatement()) { return query.getDeleteStatement().hasWhereClause(); } return false; }
/** * Returns the {@link Expression} representing the <b>WHERE</b> clause. * * @return The section of the update statement representing the <b>WHERE</b> clause */ public Expression getWhereClause() { if (whereClause == null) { whereClause = buildNullExpression(); } return whereClause; }
/** * {@inheritDoc} */ @Override public void visit(UpdateStatement expression) { if (expression.hasWhereClause()) { expression.getWhereClause().accept(this); } else { expression.getUpdateClause().accept(this); } }
/** * {@inheritDoc} */ public void visit(UpdateStatement expression) { if (!badExpression) { if (expression.hasWhereClause()) { expression.getWhereClause().accept(this); } else { expression.getUpdateClause().accept(this); if (expression.hasSpaceAfterUpdateClause()) { virtualSpace = true; } } if (queryPosition.getExpression() == null) { queryPosition.setExpression(expression); } queryPosition.addPosition(expression, expression.getLength() - correction); } }
/** * Compile from. */ private void compileUpdateClause() { ListIterator<Expression> updateColumnIter = null; if (query.isUpdateStatement() && query.getUpdateStatement().getUpdateClause().hasUpdateItems()) { if (query.getUpdateStatement().getUpdateClause().getUpdateItems() instanceof CollectionExpression) { updateColumnIter = ((CollectionExpression) query.getUpdateStatement().getUpdateClause() .getUpdateItems()).children().iterator(); while (updateColumnIter.hasNext()) { ListIterator<Expression> childUpdateClauseIter = updateColumnIter.next().children().iterator(); while (childUpdateClauseIter.hasNext()) { addUpdateClause(childUpdateClauseIter); } } } else { updateColumnIter = query.getUpdateStatement().getUpdateClause().getUpdateItems().children() .iterator(); addUpdateClause(updateColumnIter); } } }
/** * {@inheritDoc} */ public Expression getClause(UpdateStatement expression) { return expression.getWhereClause(); }
/** * {@inheritDoc} */ @Override protected 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(new FullyQualifyPathExpressionVisitor()); }
/** * {@inheritDoc} */ public JPQLQueryBNF getQueryBNF() { return getQueryBNF(UpdateStatementBNF.ID); }
/** * {@inheritDoc} */ @Override protected AbstractExpression buildExpression(AbstractExpression parent, WordParser wordParser, String word, JPQLQueryBNF queryBNF, AbstractExpression expression, boolean tolerant) { expression = new UpdateStatement(parent); expression.parse(wordParser, tolerant); return expression; } }
/** * {@inheritDoc} */ @Override protected void addOrderedChildrenTo(List<Expression> children) { // Update clause children.add(updateClause); if (hasSpaceAfterUpdateClause) { children.add(buildStringExpression(SPACE)); } // Where clause if (whereClause != null) { children.add(whereClause); } }
/** * {@inheritDoc} */ @Override public void visit(UpdateStatement expression) { expression.getUpdateClause().accept(this); // Don't traverse the tree if the path expressions don't need to be virtually qualified if ((variableName != null) && expression.hasWhereClause()) { expression.getWhereClause().accept(this); } }
private void buildFrom() { ListIterator<Expression> fromIter = null; if (query.isSelectStatement() && query.getSelectStatement().hasFromClause()) { FromClause fromClause = (FromClause) query.getSelectStatement().getFromClause(); fromIter = fromClause.children().iterator(); } else if (query.isUpdateStatement()) { fromIter = query.getUpdateStatement().getUpdateClause().children().iterator(); } if (query.isDeleteStatement()) { fromIter = query.getDeleteStatement().getDeleteClause().children().iterator(); } if (fromIter != null) { while (fromIter.hasNext()) { String textObj = fromIter.next().toActualText().trim(); if (!StringUtils.isEmpty(textObj)) { query.setFrom(textObj); break; } } } }
/** * Compile where. */ private void compileWhere() { WhereClause whereClause = null; if (query.isSelectStatement()) { whereClause = (WhereClause) query.getSelectStatement().getWhereClause(); } else if (query.isUpdateStatement()) { whereClause = (WhereClause) query.getUpdateStatement().getWhereClause(); } if (query.isDeleteStatement()) { whereClause = (WhereClause) query.getDeleteStatement().getWhereClause(); } String content = whereClause.getConditionalExpression().toActualText(); if (whereClause != null && content.length() == 0) { throw new JPQLParseException("keyword without value[WHERE]"); } query.setFilter(content); }
/** * {@inheritDoc} */ @Override protected 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(new FullyQualifyPathExpressionVisitor()); }
/** * {@inheritDoc} */ public JPQLQueryBNF getQueryBNF() { return getQueryBNF(UpdateStatementBNF.ID); }
/** * {@inheritDoc} */ @Override protected AbstractExpression buildExpression(AbstractExpression parent, WordParser wordParser, String word, JPQLQueryBNF queryBNF, AbstractExpression expression, boolean tolerant) { expression = new UpdateStatement(parent); expression.parse(wordParser, tolerant); return expression; } }
/** * {@inheritDoc} */ @Override protected void addOrderedChildrenTo(List<Expression> children) { // Update clause children.add(updateClause); if (hasSpaceAfterUpdateClause) { children.add(buildStringExpression(SPACE)); } // Where clause if (whereClause != null) { children.add(whereClause); } }
/** * {@inheritDoc} */ @Override public void visit(UpdateStatement expression) { expression.getUpdateClause().accept(this); if (expression.hasWhereClause()) { expression.getWhereClause().accept(this); } } }
/** * {@inheritDoc} */ @Override protected void addChildrenTo(Collection<Expression> children) { children.add(getUpdateClause()); children.add(getWhereClause()); }