static String formatGroupBy(List<GroupingElement> groupingElements, Optional<List<Expression>> parameters) { ImmutableList.Builder<String> resultStrings = ImmutableList.builder(); for (GroupingElement groupingElement : groupingElements) { String result = ""; if (groupingElement instanceof SimpleGroupBy) { List<Expression> columns = ((SimpleGroupBy) groupingElement).getExpressions(); if (columns.size() == 1) { result = formatExpression(getOnlyElement(columns), parameters); } else { result = formatGroupingSet(columns, parameters); } } else if (groupingElement instanceof GroupingSets) { result = format("GROUPING SETS (%s)", Joiner.on(", ").join( ((GroupingSets) groupingElement).getSets().stream() .map(e -> formatGroupingSet(e, parameters)) .iterator())); } else if (groupingElement instanceof Cube) { result = format("CUBE %s", formatGroupingSet(((Cube) groupingElement).getExpressions(), parameters)); } else if (groupingElement instanceof Rollup) { result = format("ROLLUP %s", formatGroupingSet(((Rollup) groupingElement).getExpressions(), parameters)); } resultStrings.add(result); } return Joiner.on(", ").join(resultStrings.build()); }
static String formatGroupBy(List<GroupingElement> groupingElements, Optional<List<Expression>> parameters) { ImmutableList.Builder<String> resultStrings = ImmutableList.builder(); for (GroupingElement groupingElement : groupingElements) { String result = ""; if (groupingElement instanceof SimpleGroupBy) { List<Expression> columns = ((SimpleGroupBy) groupingElement).getExpressions(); if (columns.size() == 1) { result = formatExpression(getOnlyElement(columns), parameters); } else { result = formatGroupingSet(columns, parameters); } } else if (groupingElement instanceof GroupingSets) { result = format("GROUPING SETS (%s)", Joiner.on(", ").join( ((GroupingSets) groupingElement).getSets().stream() .map(e -> formatGroupingSet(e, parameters)) .iterator())); } else if (groupingElement instanceof Cube) { result = format("CUBE %s", formatGroupingSet(((Cube) groupingElement).getExpressions(), parameters)); } else if (groupingElement instanceof Rollup) { result = format("ROLLUP %s", formatGroupingSet(((Rollup) groupingElement).getExpressions(), parameters)); } resultStrings.add(result); } return Joiner.on(", ").join(resultStrings.build()); }