package org.molgenis.data.rsql; import cz.jirutka.rsql.parser.ast.Node; import org.molgenis.data.aggregation.AggregateQuery; import org.molgenis.data.Entity; import org.molgenis.data.Query; import org.molgenis.data.meta.model.EntityType; import static com.google.common.base.Preconditions.checkNotNull; /** * Create MOLGENIS aggregation query from RSQL node. * * @see <a href="https://github.com/jirutka/rsql-parser">https://github.com/jirutka/rsql-parser</a> */ public class AggregateQueryRsql { private final Node rootNode; public AggregateQueryRsql(Node rootNode) { this.rootNode = checkNotNull(rootNode); } public AggregateQuery createAggregateQuery(EntityType entityType, Query<Entity> query) { AggregateQueryRsqlVisitor rsqlVisitor = new AggregateQueryRsqlVisitor(entityType, query); return rootNode.accept(rsqlVisitor); } }