/** * Initiate jpql object. * * @param jpaQuery * the jpa query */ private void initiateJPQLObject(final String jpaQuery) { JPQLGrammar jpqlGrammar = EclipseLinkJPQLGrammar2_4.instance(); this.jpqlExpression = new JPQLExpression(jpaQuery, jpqlGrammar, "ql_statement", true); setKunderaQueryTypeObject(); }
/** * Checks for having. * * @param jpqlExpression * the jpql expression * @return true, if successful */ public static boolean hasHaving(JPQLExpression jpqlExpression) { if (isSelectStatement(jpqlExpression)) { return ((SelectStatement) jpqlExpression.getQueryStatement()).hasHavingClause(); } return false; }
/** * Gets the order by clause. * * @param jpqlExpression * the jpql expression * @return the order by clause */ public static OrderByClause getOrderByClause(JPQLExpression jpqlExpression) { OrderByClause orderByClause = null; if (hasOrderBy(jpqlExpression)) { orderByClause = (OrderByClause) ((SelectStatement) jpqlExpression.getQueryStatement()).getOrderByClause(); } return orderByClause; }
/** * Populate filter clause. * * @param conditionalExpression * the conditional expression * @return the filter clause */ private FilterClause populateFilterClause(ComparisonExpression conditionalExpression) { String property = ((StateFieldPathExpression) conditionalExpression.getLeftExpression()).getPath(1); String condition = conditionalExpression.getComparisonOperator(); Expression rightExpression = conditionalExpression.getRightExpression(); Object value = (rightExpression instanceof InputParameter) ? kunderaQuery.getParametersMap().get( (rightExpression).toParsedText()) : rightExpression.toParsedText(); return (condition != null && property != null) ? kunderaQuery.new FilterClause(property, condition, value, property) : null; }
/** * 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); }
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; } } } }
/** * Checks if is aggregated query. * * @return true, if is aggregated query */ boolean isAggregatedQuery() { if (kunderaQuery.getSelectStatement() != null) { Expression exp = ((SelectClause) kunderaQuery.getSelectStatement().getSelectClause()).getSelectExpression(); return AggregateFunction.class.isAssignableFrom(exp.getClass()); } else { return false; } }
/** * Compile order. */ private void compileOrder() { OrderByClause orderByClause = null; if (query.isSelectStatement()) { orderByClause = (OrderByClause) query.getSelectStatement().getOrderByClause(); } if (orderByClause == null || !orderByClause.hasOrderByItems()) { throw new JPQLParseException("keyword without value: ORDER BY"); } query.setOrdering(orderByClause.getOrderByItems().toActualText()); } }
/** * Populate IN query filter. * * @param inExpression * the in expression * @param metadata * the metadata * @return the filter builder */ private QueryBuilder populateInQuery(InExpression inExpression, EntityMetadata metadata) { String property = getField(inExpression.getExpression().toParsedText()); Expression inItemsParameter = inExpression.getInItems(); log.debug("IN query parameters for field " + property + " is: " + inItemsParameter); Iterable inItemsIterable = getInValuesCollection(inItemsParameter); return getFilter(kunderaQuery.new FilterClause(property, Expression.IN, inItemsIterable, property), metadata); }
/** * Gets the where clause. * * @param jpqlExpression * the jpql expression * @return the where clause */ public static WhereClause getWhereClause(JPQLExpression jpqlExpression) { WhereClause whereClause = null; if (hasWhereClause(jpqlExpression)) { if (isSelectStatement(jpqlExpression)) { whereClause = (WhereClause) ((SelectStatement) jpqlExpression.getQueryStatement()).getWhereClause(); } else if (isUpdateStatement(jpqlExpression)) { whereClause = (WhereClause) ((UpdateStatement) jpqlExpression.getQueryStatement()).getWhereClause(); } if (isDeleteStatement(jpqlExpression)) { whereClause = (WhereClause) ((DeleteStatement) jpqlExpression.getQueryStatement()).getWhereClause(); } } return whereClause; }
/** * Checks for where clause. * * @param jpqlExpression * the jpql expression * @return true, if successful */ public static boolean hasWhereClause(JPQLExpression jpqlExpression) { if (isSelectStatement(jpqlExpression)) { return ((SelectStatement) jpqlExpression.getQueryStatement()).hasWhereClause(); } else if (isUpdateStatement(jpqlExpression)) { return ((UpdateStatement) jpqlExpression.getQueryStatement()).hasWhereClause(); } if (isDeleteStatement(jpqlExpression)) { return ((DeleteStatement) jpqlExpression.getQueryStatement()).hasWhereClause(); } return false; }
/** * Checks for group by. * * @param jpqlExpression * the jpql expression * @return true, if successful */ public static boolean hasGroupBy(JPQLExpression jpqlExpression) { if (isSelectStatement(jpqlExpression)) { return ((SelectStatement) jpqlExpression.getQueryStatement()).hasGroupByClause(); } return false; }
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; }
/** * Checks for order by. * * @param jpqlExpression * the jpql expression * @return true, if successful */ public static boolean hasOrderBy(JPQLExpression jpqlExpression) { if (isSelectStatement(jpqlExpression)) { return ((SelectStatement) jpqlExpression.getQueryStatement()).hasOrderByClause(); } return false; }
private boolean isGroupBy() { if (query.isSelectStatement()) { return query.getSelectStatement().hasGroupByClause(); } return false; }
/** * Checks if is delete statement. * * @param jpqlExpression * the jpql expression * @return true, if is delete statement */ public static boolean isDeleteStatement(JPQLExpression jpqlExpression) { return jpqlExpression.getQueryStatement().getClass().isAssignableFrom(DeleteStatement.class); }
private boolean isOrderBy() { if (query.isSelectStatement()) { return query.getSelectStatement().hasOrderByClause(); } return false; }
private boolean isHaving() { if (query.isSelectStatement()) { return query.getSelectStatement().hasHavingClause(); } return false; }
/** * Checks if is count query. * * @return true, if is count query */ private boolean isCountQuery() { if (getKunderaQuery().getSelectStatement() != null) { final Expression selectClause = getKunderaQuery().getSelectStatement().getSelectClause(); if (selectClause instanceof SelectClause) { final Expression expression = ((SelectClause) selectClause).getSelectExpression(); return expression instanceof CountFunction; } } return false; }
/** * Checks if is select statement. * * @param jpqlExpression * the jpql expression * @return true, if is select statement */ public static boolean isSelectStatement(JPQLExpression jpqlExpression) { return jpqlExpression.getQueryStatement().getClass().isAssignableFrom(SelectStatement.class); }