Skip to content

Package: SparqlQueryFactory

SparqlQueryFactory

nameinstructionbranchcomplexitylinemethod
SparqlQueryFactory(UnitOfWorkImpl, ConnectionWrapper)
M: 8 C: 33
80%
M: 2 C: 2
50%
M: 2 C: 1
33%
M: 0 C: 8
100%
M: 0 C: 1
100%
createNamedQuery(String)
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createNamedQuery(String, Class)
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createNativeQuery(String)
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createNativeQuery(String, Class)
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createNativeQuery(String, String)
M: 0 C: 29
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
createQuery(String)
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createQuery(String, Class)
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createQueryImpl(String, Class, QueryParser)
M: 0 C: 23
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
static {...}
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

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.sparql;
19:
20: import cz.cvut.kbss.jopa.model.QueryImpl;
21: import cz.cvut.kbss.jopa.model.ResultSetMappingQuery;
22: import cz.cvut.kbss.jopa.model.TypedQueryImpl;
23: import cz.cvut.kbss.jopa.query.QueryParser;
24: import cz.cvut.kbss.jopa.query.mapper.SparqlResultMapper;
25: import cz.cvut.kbss.jopa.query.parameter.ParameterValueFactory;
26: import cz.cvut.kbss.jopa.query.soql.SoqlQueryParser;
27: import cz.cvut.kbss.jopa.sessions.ConnectionWrapper;
28: import cz.cvut.kbss.jopa.sessions.QueryFactory;
29: import cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl;
30: import cz.cvut.kbss.jopa.utils.ErrorUtils;
31:
32: import java.util.Objects;
33:
34: public class SparqlQueryFactory implements QueryFactory {
35:
36: private final UnitOfWorkImpl uow;
37: private final ConnectionWrapper connection;
38:
39: private final QueryParser queryParser;
40: private final SoqlQueryParser soqlQueryParser;
41:
42: public SparqlQueryFactory(UnitOfWorkImpl uow, ConnectionWrapper connection) {
43:• assert uow != null;
44:• assert connection != null;
45: this.uow = uow;
46: this.connection = connection;
47: this.queryParser = new SparqlQueryParser(new ParameterValueFactory(uow));
48: this.soqlQueryParser = new SoqlQueryParser(queryParser, uow.getMetamodel());
49: }
50:
51: @Override
52: public QueryImpl createNativeQuery(String sparql) {
53: Objects.requireNonNull(sparql);
54:
55: return new QueryImpl(queryParser.parseQuery(sparql), connection);
56: }
57:
58: @Override
59: public <T> TypedQueryImpl<T> createNativeQuery(String sparql, Class<T> resultClass) {
60: Objects.requireNonNull(sparql, ErrorUtils.getNPXMessageSupplier("sparql"));
61:
62: return createQueryImpl(sparql, resultClass, queryParser);
63: }
64:
65: private <T> TypedQueryImpl<T> createQueryImpl(String query, Class<T> resultClass, QueryParser parser) {
66: Objects.requireNonNull(resultClass, ErrorUtils.getNPXMessageSupplier("resultClass"));
67:
68: final TypedQueryImpl<T> tq = new TypedQueryImpl<>(parser.parseQuery(query), resultClass, connection, uow);
69: tq.setUnitOfWork(uow);
70: return tq;
71: }
72:
73: @Override
74: public QueryImpl createNativeQuery(String sparql, String resultSetMapping) {
75: Objects.requireNonNull(sparql, ErrorUtils.getNPXMessageSupplier("sparql"));
76: Objects.requireNonNull(resultSetMapping, ErrorUtils.getNPXMessageSupplier("resultSetMapping"));
77:
78: final SparqlResultMapper mapper = uow.getResultSetMappingManager().getMapper(resultSetMapping);
79: return new ResultSetMappingQuery(queryParser.parseQuery(sparql), connection, mapper, uow);
80: }
81:
82: @Override
83: public QueryImpl createQuery(String query) {
84: Objects.requireNonNull(query);
85:
86: return new QueryImpl(soqlQueryParser.parseQuery(query), connection);
87: }
88:
89: @Override
90: public <T> TypedQueryImpl<T> createQuery(String query, Class<T> resultClass) {
91: Objects.requireNonNull(query, ErrorUtils.getNPXMessageSupplier("query"));
92: return createQueryImpl(query, resultClass, soqlQueryParser);
93: }
94:
95: @Override
96: public QueryImpl createNamedQuery(String name) {
97: final String query = uow.getNamedQueryManager().getQuery(name);
98: return createNativeQuery(query);
99: }
100:
101: @Override
102: public <T> TypedQueryImpl<T> createNamedQuery(String name, Class<T> resultClass) {
103: final String query = uow.getNamedQueryManager().getQuery(name);
104: return createNativeQuery(query, resultClass);
105: }
106: }