@Override public TableFromBuilder as(String alias) { if (alias == null) { throw new IllegalArgumentException("alias cannot be null"); } fromItem.setAlias(alias); return this; }
@Override public TableFromBuilder as(String alias) { if (alias == null) { throw new IllegalArgumentException("alias cannot be null"); } fromItem.setAlias(alias); return this; }
public Query from(Table table, String alias) { return from(new FromItem(table).setAlias(alias)); }
public Query from(Table table, String alias) { return from(new FromItem(table).setAlias(alias)); }
result.setAlias(aliasToken); result.setQuery(_query); return result;
result.setAlias(aliasToken); result.setQuery(_query); return result;
@Override public void parse(String delim, String itemToken) { final FromItem fromItem; final int parenthesisStart = itemToken.indexOf('('); if (parenthesisStart != -1) { if (parenthesisStart != 0) { throw new QueryParserException("Not capable of parsing FROM token: " + itemToken + ". Expected parenthesis to start at first character."); } final int parenthesisEnd = itemToken.indexOf(')', parenthesisStart); if (parenthesisEnd == -1) { throw new QueryParserException("Not capable of parsing FROM token: " + itemToken + ". Expected end parenthesis."); } final String subQueryString = itemToken.substring(parenthesisStart + 1, parenthesisEnd); logger.debug("Parsing sub-query: {}", subQueryString); final Query subQuery = new QueryParser(_dataContext, subQueryString).parse(); fromItem = new FromItem(subQuery); final String alias = itemToken.substring(parenthesisEnd + 1).trim(); if (!alias.isEmpty()) { fromItem.setAlias(alias); } } else if (itemToken.toUpperCase().indexOf(" JOIN ") != -1) { fromItem = parseAllJoinItems(itemToken); } else { fromItem = parseTableItem(itemToken); } _query.from(fromItem); }
@Override public void parse(String delim, String itemToken) { final FromItem fromItem; final int parenthesisStart = itemToken.indexOf('('); if (parenthesisStart != -1) { if (parenthesisStart != 0) { throw new QueryParserException("Not capable of parsing FROM token: " + itemToken + ". Expected parenthesis to start at first character."); } final int parenthesisEnd = itemToken.indexOf(')', parenthesisStart); if (parenthesisEnd == -1) { throw new QueryParserException("Not capable of parsing FROM token: " + itemToken + ". Expected end parenthesis."); } final String subQueryString = itemToken.substring(parenthesisStart + 1, parenthesisEnd); logger.debug("Parsing sub-query: {}", subQueryString); final Query subQuery = new QueryParser(_dataContext, subQueryString).parse(); fromItem = new FromItem(subQuery); final String alias = itemToken.substring(parenthesisEnd + 1).trim(); if (!alias.isEmpty()) { fromItem.setAlias(alias); } } else if (itemToken.toUpperCase().indexOf(" JOIN ") != -1) { fromItem = parseAllJoinItems(itemToken); } else { fromItem = parseTableItem(itemToken); } _query.from(fromItem); }
private List<Query> splitQueryBasedOnSubQueries(int fromItemIndex) { Query subQuery = _query.getFromClause().getItem(fromItemIndex).getSubQuery(); QuerySplitter subQuerySplitter = new QuerySplitter(_dataContext, subQuery); subQuerySplitter.setMaxRows(_maxRows); List<Query> splitQueries = subQuerySplitter.splitQuery(); List<Query> result = new ArrayList<Query>(splitQueries.size()); for (Query splitQuery : splitQueries) { Query newQuery = _query.clone(); FromClause fromClause = newQuery.getFromClause(); String alias = fromClause.getItem(fromItemIndex).getAlias(); fromClause.removeItem(fromItemIndex); newQuery.from(new FromItem(splitQuery).setAlias(alias)); result.add(newQuery); } return result; }
private List<Query> splitQueryBasedOnSubQueries(int fromItemIndex) { Query subQuery = _query.getFromClause().getItem(fromItemIndex).getSubQuery(); QuerySplitter subQuerySplitter = new QuerySplitter(_dataContext, subQuery); subQuerySplitter.setMaxRows(_maxRows); List<Query> splitQueries = subQuerySplitter.splitQuery(); List<Query> result = new ArrayList<Query>(splitQueries.size()); for (Query splitQuery : splitQueries) { Query newQuery = _query.clone(); FromClause fromClause = newQuery.getFromClause(); String alias = fromClause.getItem(fromItemIndex).getAlias(); fromClause.removeItem(fromItemIndex); newQuery.from(new FromItem(splitQuery).setAlias(alias)); result.add(newQuery); } return result; }
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(); }
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(); }
private void replaceParametersInFromClause(Object[] values, AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { final List<FromItem> fromItems = originalQuery.getFromClause().getItems(); int i = 0; for (FromItem fromItem : fromItems) { final Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { final Query newSubQuery = newQuery.getFromClause().getItem(i).getSubQuery(); replaceParametersInQuery(values, parameterIndex, subQuery, newSubQuery); newQuery.getFromClause().removeItem(i); newQuery.getFromClause().addItem(i, new FromItem(newSubQuery).setAlias(fromItem.getAlias())); } i++; } }
@Override protected Query beforeRewrite(Query query) { query = query.clone(); JdbcDataContext dataContext = getDataContext(); if (dataContext != null) { String identifierQuoteString = dataContext.getIdentifierQuoteString(); if (identifierQuoteString != null) { List<SelectItem> selectItems = query.getSelectClause().getItems(); for (SelectItem item : selectItems) { String alias = item.getAlias(); if (needsQuoting(alias, identifierQuoteString)) { item.setAlias(identifierQuoteString + alias + identifierQuoteString); } } List<FromItem> fromItems = query.getFromClause().getItems(); for (FromItem item : fromItems) { String alias = item.getAlias(); if (needsQuoting(alias, identifierQuoteString)) { item.setAlias(identifierQuoteString + alias + identifierQuoteString); } } } } return query; }
private void replaceParametersInFromClause(Object[] values, AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { final List<FromItem> fromItems = originalQuery.getFromClause().getItems(); int i = 0; for (FromItem fromItem : fromItems) { final Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { final Query newSubQuery = newQuery.getFromClause().getItem(i).getSubQuery(); replaceParametersInQuery(values, parameterIndex, subQuery, newSubQuery); newQuery.getFromClause().removeItem(i); newQuery.getFromClause().addItem(i, new FromItem(newSubQuery).setAlias(fromItem.getAlias())); } i++; } }
final FromItem subQuerySelectItem = new FromItem(innerQuery).setAlias("metamodel_subquery"); outerQuery.from(subQuerySelectItem);
@Override protected Query beforeRewrite(Query query) { query = query.clone(); JdbcDataContext dataContext = getDataContext(); if (dataContext != null) { String identifierQuoteString = dataContext.getIdentifierQuoteString(); if (identifierQuoteString != null) { List<SelectItem> selectItems = query.getSelectClause().getItems(); for (SelectItem item : selectItems) { String alias = item.getAlias(); if (needsQuoting(alias, identifierQuoteString)) { item.setAlias(identifierQuoteString + alias + identifierQuoteString); } } List<FromItem> fromItems = query.getFromClause().getItems(); for (FromItem item : fromItems) { String alias = item.getAlias(); if (needsQuoting(alias, identifierQuoteString)) { item.setAlias(identifierQuoteString + alias + identifierQuoteString); } } } } return query; }
final FromItem subQuerySelectItem = new FromItem(innerQuery).setAlias("metamodel_subquery"); outerQuery.from(subQuerySelectItem);