package org.molgenis.data.rsql; import cz.jirutka.rsql.parser.RSQLParser; import cz.jirutka.rsql.parser.RSQLParserException; import cz.jirutka.rsql.parser.ast.Node; import org.molgenis.data.Entity; import org.molgenis.data.Query; import org.molgenis.data.meta.model.EntityType; import org.springframework.stereotype.Service; /** * Rsql/fiql parser * <p> * Creates a Query object from a rsql/fiql query string. * * @see <a href="https://github.com/jirutka/rsql-parser">https://github.com/jirutka/rsql-parser</a> */ @Service public class MolgenisRSQL { private final RSQLParser rsqlParser = new RSQLParser(); public Query<Entity> createQuery(String rsql, EntityType entityType) throws RSQLParserException { Node rootNode = rsqlParser.parse(rsql); MolgenisRSQLVisitor visitor = new MolgenisRSQLVisitor(entityType); return rootNode.accept(visitor); } }