protected String rewriteGroupByClause(Query query, GroupByClause groupByClause) { StringBuilder sb = new StringBuilder(); if (groupByClause.getItemCount() > 0) { sb.append(AbstractQueryClause.PREFIX_GROUP_BY); List<GroupByItem> items = groupByClause.getItems(); for (int i = 0; i < items.size(); i++) { GroupByItem item = items.get(i); if (i != 0) { sb.append(AbstractQueryClause.DELIM_COMMA); } sb.append(rewriteGroupByItem(query, item)); } } return sb.toString(); }
public Query groupBy(Column... columns) { for (Column column : columns) { SelectItem selectItem = new SelectItem(column).setQuery(this); _groupByClause.addItem(new GroupByItem(selectItem)); } return this; }
public Query groupBy(GroupByItem... items) { for (GroupByItem item : items) { SelectItem selectItem = item.getSelectItem(); if (selectItem != null && selectItem.getQuery() == null) { selectItem.setQuery(this); } } _groupByClause.addItems(items); return this; }
/** * Gets whether a query is guaranteed to only yield a single row. Such * queries are queries that only consist of aggregation functions and no * group by clause. * * @param query * @return */ private boolean isSingleRowQuery(Query query) { if (!query.getGroupByClause().isEmpty()) { return false; } List<SelectItem> items = query.getSelectClause().getItems(); for (SelectItem item : items) { if (item.getAggregateFunction() == null) { return false; } } return true; }
final List<FilterItem> whereItems = query.getWhereClause().getItems(); final List<SelectItem> whereSelectItems = query.getWhereClause().getEvaluatedSelectItems(); final List<GroupByItem> groupByItems = query.getGroupByClause().getItems(); final List<SelectItem> groupBySelectItems = query.getGroupByClause().getEvaluatedSelectItems(); final List<SelectItem> havingSelectItems = query.getHavingClause().getEvaluatedSelectItems(); final List<SelectItem> orderBySelectItems = query.getOrderByClause().getEvaluatedSelectItems();
public List<SelectItem> getEvaluatedSelectItems() { final List<SelectItem> result = new ArrayList<SelectItem>(); final List<GroupByItem> items = getItems(); for (GroupByItem item : items) { result.add(item.getSelectItem()); } return result; }
public Query() { _selectClause = new SelectClause(this); _fromClause = new FromClause(this); _whereClause = new FilterClause(this, AbstractQueryClause.PREFIX_WHERE); _groupByClause = new GroupByClause(this); _havingClause = new FilterClause(this, AbstractQueryClause.PREFIX_HAVING); _orderByClause = new OrderByClause(this); }
private long getRowCount(Query q) { q = q.clone(); SelectItem countAllItem = SelectItem.getCountAllItem(); if (q.getGroupByClause().getItemCount() > 0) { q = new Query().from(new FromItem(q).setAlias("sq")).select(countAllItem); } else { q.getSelectClause().removeItems(); q.select(countAllItem); } Row row = MetaModelHelper.executeSingleRowQuery(_dataContext, q); Number count = (Number) row.getValue(countAllItem); return count.longValue(); }
if (!getScalarFunctionSelectItems(query.getGroupByClause().getEvaluatedSelectItems()).isEmpty()) { return true;
/** * Gets whether a query is guaranteed to only yield a single row. Such * queries are queries that only consist of aggregation functions and no * group by clause. * * @param query * @return */ private boolean isSingleRowQuery(Query query) { if (!query.getGroupByClause().isEmpty()) { return false; } List<SelectItem> items = query.getSelectClause().getItems(); for (SelectItem item : items) { if (item.getAggregateFunction() == null) { return false; } } return true; }
final List<FilterItem> whereItems = query.getWhereClause().getItems(); final List<SelectItem> whereSelectItems = query.getWhereClause().getEvaluatedSelectItems(); final List<GroupByItem> groupByItems = query.getGroupByClause().getItems(); final List<SelectItem> groupBySelectItems = query.getGroupByClause().getEvaluatedSelectItems(); final List<SelectItem> havingSelectItems = query.getHavingClause().getEvaluatedSelectItems(); final List<SelectItem> orderBySelectItems = query.getOrderByClause().getEvaluatedSelectItems();
public List<SelectItem> getEvaluatedSelectItems() { final List<SelectItem> result = new ArrayList<SelectItem>(); final List<GroupByItem> items = getItems(); for (GroupByItem item : items) { result.add(item.getSelectItem()); } return result; }
public Query() { _selectClause = new SelectClause(this); _fromClause = new FromClause(this); _whereClause = new FilterClause(this, AbstractQueryClause.PREFIX_WHERE); _groupByClause = new GroupByClause(this); _havingClause = new FilterClause(this, AbstractQueryClause.PREFIX_HAVING); _orderByClause = new OrderByClause(this); }
private long getRowCount(Query q) { q = q.clone(); SelectItem countAllItem = SelectItem.getCountAllItem(); if (q.getGroupByClause().getItemCount() > 0) { q = new Query().from(new FromItem(q).setAlias("sq")).select(countAllItem); } else { q.getSelectClause().removeItems(); q.select(countAllItem); } Row row = MetaModelHelper.executeSingleRowQuery(_dataContext, q); Number count = (Number) row.getValue(countAllItem); return count.longValue(); }
if (!getScalarFunctionSelectItems(query.getGroupByClause().getEvaluatedSelectItems()).isEmpty()) { return true;
if (!query.getGroupByClause().isEmpty()) { return super.executeQuery(query);
protected String rewriteGroupByClause(Query query, GroupByClause groupByClause) { StringBuilder sb = new StringBuilder(); if (groupByClause.getItemCount() > 0) { sb.append(AbstractQueryClause.PREFIX_GROUP_BY); List<GroupByItem> items = groupByClause.getItems(); for (int i = 0; i < items.size(); i++) { GroupByItem item = items.get(i); if (i != 0) { sb.append(AbstractQueryClause.DELIM_COMMA); } sb.append(rewriteGroupByItem(query, item)); } } return sb.toString(); }
@Override public Query clone() { final Query q = new Query(); q.setMaxRows(_maxRows); q.setFirstRow(_firstRow); q.getSelectClause().setDistinct(_selectClause.isDistinct()); for (FromItem item : _fromClause.getItems()) { q.from(item.clone()); } for (SelectItem item : _selectClause.getItems()) { q.select(item.clone(q)); } for (FilterItem item : _whereClause.getItems()) { q.where(item.clone()); } for (GroupByItem item : _groupByClause.getItems()) { q.groupBy(item.clone()); } for (FilterItem item : _havingClause.getItems()) { q.having(item.clone()); } for (OrderByItem item : _orderByClause.getItems()) { q.orderBy(item.clone()); } return q; } }
public Query groupBy(Column... columns) { for (Column column : columns) { SelectItem selectItem = new SelectItem(column).setQuery(this); _groupByClause.addItem(new GroupByItem(selectItem)); } return this; }
public Query groupBy(GroupByItem... items) { for (GroupByItem item : items) { SelectItem selectItem = item.getSelectItem(); if (selectItem != null && selectItem.getQuery() == null) { selectItem.setQuery(this); } } _groupByClause.addItems(items); return this; }