public static Query transform(Query query, ElementTransform transform, ExprTransform exprTransform) {
Query q2 = QueryTransformOps.shallowCopy(query);
transformVarExprList(q2.getProject(), exprTransform);
transformVarExprList(q2.getGroupBy(), exprTransform);
transformExprList(q2.getHavingExprs(), exprTransform);
if (q2.getOrderBy() != null) {
transformSortConditions(q2.getOrderBy(), exprTransform);
}
Element el = q2.getQueryPattern();
Element el2 = ElementTransformer.transform(el, transform, exprTransform);
if (!(el2 instanceof ElementGroup)) {
ElementGroup eg = new ElementGroup();
eg.addElement(el2);
el2 = eg;
}
q2.setQueryPattern(el2);
return q2;
}