@Override public FunctionSelectBuilder<?> select(FunctionType function, String columnName, Object[] functionParameters) { GroupedQueryBuilderImpl queryBuilder = new GroupedQueryBuilderImpl(dataContext, query); Column column = queryBuilder.findColumn(columnName); return select(function, column, functionParameters); }
@Override public GroupedQueryBuilder groupBy(String columnName) { final Column column = findColumn(columnName); return groupBy(column); }
@Override public SatisfiedOrderByBuilder<GroupedQueryBuilder> orderBy(String columnName) { return orderBy(findColumn(columnName)); }
@Override public ColumnSelectBuilder<GroupedQueryBuilder> select(String columnName) { final Column column = findColumn(columnName); return select(column); }
@Override public WhereBuilder<GroupedQueryBuilder> where(String columnName) { final Column column = findColumn(columnName); return where(column); }
@Override public CountSelectBuilder<?> selectCount() { GroupedQueryBuilder queryBuilder = new GroupedQueryBuilderImpl(dataContext, query); return new CountSelectBuilderImpl(query, queryBuilder); }
private Column findColumnInAliasedTable(Column column, FromItem fromItem, String aliasPart, String columnPart) { if (column != null) { // ensure that if the column has already been found, return it return column; } Table table = fromItem.getTable(); if (table != null) { String alias = fromItem.getAlias(); if (alias != null && alias.equals(aliasPart)) { column = table.getColumnByName(columnPart); } } else { FromItem leftSide = fromItem.getLeftSide(); column = findColumnInAliasedTable(column, leftSide, aliasPart, columnPart); FromItem rightSide = fromItem.getRightSide(); column = findColumnInAliasedTable(column, rightSide, aliasPart, columnPart); if (column != null) { Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { List<FromItem> items = subQuery.getFromClause().getItems(); for (FromItem subQueryFromItem : items) { column = findColumnInAliasedTable(column, subQueryFromItem, aliasPart, columnPart); } } } } return column; }
@Override public HavingBuilder having(String columnExpression) { final SelectItemParser parser = new SelectItemParser(_query, false); final SelectItem selectItem = parser.findSelectItem(columnExpression); return having(selectItem); }
@Override public SatisfiedQueryBuilder<?> select(FunctionType function, String columnName) { if (function == null) { throw new IllegalArgumentException("function cannot be null"); } final Column column = findColumn(columnName); return new FunctionSelectBuilderImpl(function, column, null, _query, this); }
@Override public WhereBuilder<GroupedQueryBuilder> where(ScalarFunction function, String columnName) { final Column column = findColumn(columnName); return where(function, column); }
@Override public FunctionSelectBuilder<?> select(FunctionType function, Column column, Object[] functionParameters) { if (function == null) { throw new IllegalArgumentException("functionType cannot be null"); } if (column == null) { throw new IllegalArgumentException("column cannot be null"); } final GroupedQueryBuilder queryBuilder = new GroupedQueryBuilderImpl(dataContext, query); return new FunctionSelectBuilderImpl(function, column, functionParameters, query, queryBuilder); }
@Override public ColumnSelectBuilder<GroupedQueryBuilder> select(String columnName) { final Column column = findColumn(columnName); return select(column); }
private Column findColumnInAliasedTable(Column column, FromItem fromItem, String aliasPart, String columnPart) { if (column != null) { // ensure that if the column has already been found, return it return column; } Table table = fromItem.getTable(); if (table != null) { String alias = fromItem.getAlias(); if (alias != null && alias.equals(aliasPart)) { column = table.getColumnByName(columnPart); } } else { FromItem leftSide = fromItem.getLeftSide(); column = findColumnInAliasedTable(column, leftSide, aliasPart, columnPart); FromItem rightSide = fromItem.getRightSide(); column = findColumnInAliasedTable(column, rightSide, aliasPart, columnPart); if (column != null) { Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { List<FromItem> items = subQuery.getFromClause().getItems(); for (FromItem subQueryFromItem : items) { column = findColumnInAliasedTable(column, subQueryFromItem, aliasPart, columnPart); } } } } return column; }
@Override public HavingBuilder having(String columnExpression) { final SelectItemParser parser = new SelectItemParser(_query, false); final SelectItem selectItem = parser.findSelectItem(columnExpression); return having(selectItem); }
@Override public SatisfiedQueryBuilder<?> select(FunctionType function, String columnName) { if (function == null) { throw new IllegalArgumentException("function cannot be null"); } final Column column = findColumn(columnName); return new FunctionSelectBuilderImpl(function, column, null, _query, this); }
@Override public FunctionSelectBuilder<?> select(FunctionType function, String columnName) { GroupedQueryBuilderImpl queryBuilder = new GroupedQueryBuilderImpl(dataContext, query); Column column = queryBuilder.findColumn(columnName); return select(function, column); }
@Override public WhereBuilder<GroupedQueryBuilder> where(String columnName) { final Column column = findColumn(columnName); return where(column); }
@Override public ColumnSelectBuilder<?> select(Column column) { if (column == null) { throw new IllegalArgumentException("column cannot be null"); } GroupedQueryBuilder queryBuilder = new GroupedQueryBuilderImpl(dataContext, query); return new ColumnSelectBuilderImpl(column, query, queryBuilder); }
@Override public GroupedQueryBuilder groupBy(String columnName) { final Column column = findColumn(columnName); return groupBy(column); }
@Override public SatisfiedOrderByBuilder<GroupedQueryBuilder> orderBy(String columnName) { return orderBy(findColumn(columnName)); }