
com.sap.cds.adapter.odata.v4.query.apply.GroupByConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cds-adapter-odata-v4 Show documentation
Show all versions of cds-adapter-odata-v4 Show documentation
OData V4 adapter for CDS Services Java
/**************************************************************************
* (C) 2019-2024 SAP SE or an SAP affiliate company. All rights reserved. *
**************************************************************************/
package com.sap.cds.adapter.odata.v4.query.apply;
import java.util.ArrayList;
import java.util.List;
import org.apache.olingo.server.api.uri.queryoption.apply.GroupBy;
import org.apache.olingo.server.api.uri.queryoption.apply.GroupByItem;
import com.sap.cds.adapter.odata.v4.query.ExpressionParser;
import com.sap.cds.ql.CQL;
import com.sap.cds.ql.ElementRef;
import com.sap.cds.ql.cqn.CqnElementRef;
import com.sap.cds.ql.cqn.transformation.CqnTransformation;
import com.sap.cds.ql.impl.transformations.GroupByTrafo;
public class GroupByConverter {
private GroupByConverter() {
// empty
}
public static CqnTransformation of(GroupBy gBy, ExpressionParser expressionParser) {
List dimensions = new ArrayList<>(gBy.getGroupByItems().size());
List transformations = new ArrayList<>();
// group by dimensions
for (GroupByItem gByItem : gBy.getGroupByItems()) {
ElementRef> ref = CQL.get(expressionParser.toSegmentList(gByItem.getPath()));
dimensions.add(ref.as(ref.path()));
}
if (gBy.getApplyOption() != null) {
// handle aggregations
ApplyHandler applyHandler = ApplyHandler.create(gBy.getApplyOption(), expressionParser);
transformations.addAll(applyHandler.getTransformations(0));
}
return GroupByTrafo.groupBy(dimensions).transformations(transformations);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy