net.sf.jsqlparser.util.deparser.GroupByDeParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jsqlparser Show documentation
Show all versions of jsqlparser Show documentation
JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes.
The generated hierarchy can be navigated using the Visitor Pattern.
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2019 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.util.deparser;
import java.util.Iterator;
import java.util.List;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.ExpressionVisitor;
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
import net.sf.jsqlparser.statement.select.GroupByElement;
public class GroupByDeParser extends AbstractDeParser {
private ExpressionVisitor expressionVisitor;
GroupByDeParser() {
super(new StringBuilder());
}
public GroupByDeParser(ExpressionVisitor expressionVisitor, StringBuilder buffer) {
super(buffer);
this.expressionVisitor = expressionVisitor;
this.buffer = buffer;
}
@Override
@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"})
public void deParse(GroupByElement groupBy) {
buffer.append("GROUP BY ");
if (groupBy.isUsingBrackets()) {
buffer.append("( ");
}
List expressions = groupBy.getGroupByExpressionList().getExpressions();
if (expressions != null) {
for (Iterator iter = expressions.iterator(); iter.hasNext();) {
iter.next().accept(expressionVisitor);
if (iter.hasNext()) {
buffer.append(", ");
}
}
}
if (groupBy.isUsingBrackets()) {
buffer.append(" )");
}
if (!groupBy.getGroupingSets().isEmpty()) {
buffer.append("GROUPING SETS (");
boolean first = true;
for (Object o : groupBy.getGroupingSets()) {
if (first) {
first = false;
} else {
buffer.append(", ");
}
if (o instanceof Expression) {
buffer.append(o.toString());
} else if (o instanceof ExpressionList) {
ExpressionList list = (ExpressionList) o;
buffer.append(list.getExpressions() == null ? "()" : list.toString());
}
}
buffer.append(")");
}
}
void setExpressionVisitor(ExpressionVisitor expressionVisitor) {
this.expressionVisitor = expressionVisitor;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy