Package: SoqlQueryParser
SoqlQueryParser
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SoqlQueryParser(QueryParser, MetamodelImpl) |
|
|
|
|
|
||||||||||||||||||||
parseQuery(String) |
|
|
|
|
|
Coverage
1: /*
2: * JOPA
3: * Copyright (C) 2023 Czech Technical University in Prague
4: *
5: * This library is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public
7: * License as published by the Free Software Foundation; either
8: * version 3.0 of the License, or (at your option) any later version.
9: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library.
17: */
18: package cz.cvut.kbss.jopa.query.soql;
19:
20: import cz.cvut.kbss.jopa.model.MetamodelImpl;
21: import cz.cvut.kbss.jopa.query.QueryHolder;
22: import cz.cvut.kbss.jopa.query.QueryParser;
23: import org.antlr.v4.runtime.CharStream;
24: import org.antlr.v4.runtime.CharStreams;
25: import org.antlr.v4.runtime.CommonTokenStream;
26: import org.antlr.v4.runtime.tree.ParseTree;
27: import org.antlr.v4.runtime.tree.ParseTreeWalker;
28:
29: public class SoqlQueryParser implements QueryParser {
30:
31: private final QueryParser sparqlParser;
32: private final MetamodelImpl metamodel;
33:
34: public SoqlQueryParser(QueryParser sparqlParser, MetamodelImpl metamodel) {
35: this.sparqlParser = sparqlParser;
36: this.metamodel = metamodel;
37: }
38:
39:
40: @Override
41: public QueryHolder parseQuery(String query) {
42: CharStream cs = CharStreams.fromString(query);
43: SoqlLexer lexer = new SoqlLexer(cs);
44: final CommonTokenStream tokens = new CommonTokenStream(lexer);
45: SoqlParser parser = new SoqlParser(tokens);
46:
47: final ParseTree tree = parser.querySentence();
48: final SoqlQueryListener listener = new SoqlQueryListener(this.metamodel);
49:
50: final ParseTreeWalker walker = new ParseTreeWalker();
51: walker.walk(listener, tree);
52:
53: return sparqlParser.parseQuery(listener.getSparqlQuery());
54: }
55: }