Skip to content

Package: TypedQueryRunner

TypedQueryRunner

nameinstructionbranchcomplexitylinemethod
TypedQueryRunner(Logger)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
askQueryAgainstTransactionalOntologyContainsUncommittedChangesAsWell()
M: 43 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 13 C: 0
0%
M: 1 C: 0
0%
askQueryReturnsFalse()
M: 0 C: 29
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
askQueryReturnsTrue()
M: 0 C: 26
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
askQueryWithPositionParameter()
M: 0 C: 32
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
lambda$0(OWLClassA, OWLClassD)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$1(List, OWLClassA)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$2(OWLClassA)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$3(OWLClassA)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
testCreateQueryNullClass()
M: 7 C: 6
46%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 2
50%
M: 0 C: 1
100%
testCreateQueryNullQuery()
M: 7 C: 4
36%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 1
33%
M: 0 C: 1
100%
testCreateTypedNamedNativeQuery()
M: 0 C: 30
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
testFindAll()
M: 0 C: 87
100%
M: 1 C: 5
83%
M: 1 C: 3
75%
M: 0 C: 21
100%
M: 0 C: 1
100%
testGetSingleResult()
M: 0 C: 41
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
testGetSingleResultMultiples()
M: 4 C: 16
80%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 5
71%
M: 0 C: 1
100%
testGetSingleResultNoResult()
M: 4 C: 12
75%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 4
67%
M: 0 C: 1
100%
testSelectByObjectProperty()
M: 0 C: 60
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testSelectByTypeAndDataPropertyValue()
M: 0 C: 50
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
testSetMaxResults()
M: 1 C: 54
98%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 15
100%
M: 0 C: 1
100%
testSetMaxResultsNegative()
M: 5 C: 16
76%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 5
71%
M: 0 C: 1
100%
testSetMaxResultsZero()
M: 0 C: 29
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
usingDescriptorAllowsToCustomizeQueryResults()
M: 0 C: 33
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2016 Czech Technical University in Prague
3: *
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: *
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.test.query.runner;
16:
17: import cz.cvut.kbss.jopa.exceptions.NoResultException;
18: import cz.cvut.kbss.jopa.exceptions.NoUniqueResultException;
19: import cz.cvut.kbss.jopa.model.annotations.OWLClass;
20: import cz.cvut.kbss.jopa.model.descriptors.Descriptor;
21: import cz.cvut.kbss.jopa.model.descriptors.EntityDescriptor;
22: import cz.cvut.kbss.jopa.model.query.TypedQuery;
23: import cz.cvut.kbss.jopa.test.*;
24: import cz.cvut.kbss.jopa.test.environment.Generators;
25: import cz.cvut.kbss.jopa.test.query.QueryTestEnvironment;
26: import org.junit.Ignore;
27: import org.junit.Test;
28: import org.slf4j.Logger;
29:
30: import java.net.URI;
31: import java.util.ArrayList;
32: import java.util.List;
33: import java.util.stream.Collectors;
34:
35: import static org.junit.Assert.*;
36:
37: public abstract class TypedQueryRunner extends BaseQueryRunner {
38:
39: protected TypedQueryRunner(Logger logger) {
40: super(logger);
41: }
42:
43: @Test
44: public void testFindAll() {
45: logger.debug("Test: select all entities of a certain type.");
46: final String query = "SELECT ?x WHERE { ?x a ?type .}";
47: final List<OWLClassD> ds = new ArrayList<>();
48: final TypedQuery<OWLClassD> q =
49: getEntityManager().createNativeQuery(query, OWLClassD.class).setParameter("type", URI.create(
50: Vocabulary.C_OWL_CLASS_D));
51: ds.addAll(QueryTestEnvironment.getDataByContext(null, OWLClassD.class));
52: final List<OWLClassD> res = q.getResultList();
53: assertNotNull(res);
54: assertFalse(res.isEmpty());
55: assertEquals(ds.size(), res.size());
56: boolean found;
57:• for (OWLClassD d : ds) {
58: found = false;
59:• for (OWLClassD dd : res) {
60:• if (d.getUri().equals(dd.getUri())) {
61: found = true;
62: assertNotNull(dd.getOwlClassA());
63: assertEquals(d.getOwlClassA().getUri(), dd.getOwlClassA().getUri());
64: break;
65: }
66: }
67: assertTrue(found);
68: }
69: }
70:
71: @Test
72: public void testSelectByTypeAndDataPropertyValue() {
73: logger.debug("Test: select entity by its type and data property value.");
74: final OWLClassB b = QueryTestEnvironment.getData(OWLClassB.class).get(5);
75: final String query =
76: "SELECT ?x WHERE { " +
77: "?x a ?type ; " +
78: "?stringAtt ?bString . }";
79: final TypedQuery<OWLClassB> q = getEntityManager().createNativeQuery(query, OWLClassB.class);
80: q.setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_B))
81: .setParameter("stringAtt", URI.create(Vocabulary.P_B_STRING_ATTRIBUTE))
82: .setParameter("bString", b.getStringAttribute(), "en");
83: final OWLClassB res = q.getSingleResult();
84: assertNotNull(res);
85: assertEquals(b.getUri(), res.getUri());
86: assertEquals(b.getStringAttribute(), res.getStringAttribute());
87: }
88:
89: @Test
90: public void testSelectByObjectProperty() {
91: final String query = "SELECT ?x WHERE { ?x a ?type ; ?hasA ?y . }";
92: final List<OWLClassD> ds = new ArrayList<>();
93: ds.addAll(QueryTestEnvironment.getData(OWLClassD.class));
94: final OWLClassA a = ds.get(Generators.randomPositiveInt(2, ds.size())).getOwlClassA();
95: final TypedQuery<OWLClassD> q = getEntityManager().createNativeQuery(query, OWLClassD.class)
96: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_D))
97: .setParameter("hasA",
98: URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
99: .setParameter("y", a.getUri());
100:
101: final List<OWLClassD> expected = ds.stream().filter(d -> d.getOwlClassA().getUri().equals(a.getUri())).collect(
102: Collectors.toList());
103: final List<OWLClassD> res = q.getResultList();
104: assertEquals(res.toString(), expected.size(), res.size());
105: }
106:
107: @Test
108: public void testSetMaxResults() {
109: logger.debug("Test: set maximum number of results.");
110: final String query =
111: "SELECT ?x WHERE { ?x a ?type . }";
112: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
113: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
114: final int max = 5;
115:• assertTrue(max < QueryTestEnvironment.getData(OWLClassE.class).size());
116: assertEquals(Integer.MAX_VALUE, q.getMaxResults());
117: q.setMaxResults(max);
118: assertEquals(max, q.getMaxResults());
119: final List<OWLClassE> res = q.getResultList();
120: assertNotNull(res);
121: assertFalse(res.isEmpty());
122: assertEquals(max, res.size());
123: }
124:
125: @Test(expected = IllegalArgumentException.class)
126: public void testSetMaxResultsNegative() {
127: logger.debug("Test: set maximum number of results. Negative argument.");
128: final String query =
129: "SELECT ?x WHERE { ?x a ?type . }";
130: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
131: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
132: q.setMaxResults(-1);
133: }
134:
135: @Test
136: public void testSetMaxResultsZero() {
137: logger.debug("Test: set maximum number of results. Zero argument.");
138: final String query =
139: "SELECT ?x WHERE { ?x a ?type. }";
140: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
141: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
142: q.setMaxResults(0);
143: final List<OWLClassE> res = q.getResultList();
144: assertNotNull(res);
145: assertTrue(res.isEmpty());
146: }
147:
148: @Test
149: public void testGetSingleResult() {
150: logger.debug("Test: get single result.");
151: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
152: final String query =
153: "SELECT ?x WHERE { ?x ?stringAtt ?aString .}";
154: final TypedQuery<OWLClassA> q = getEntityManager().createNativeQuery(query, OWLClassA.class);
155: q.setParameter("stringAtt", URI.create(Vocabulary.P_A_STRING_ATTRIBUTE))
156: .setParameter("aString", a.getStringAttribute(), "en");
157: final OWLClassA res = q.getSingleResult();
158: assertNotNull(res);
159: assertEquals(a.getUri(), res.getUri());
160: }
161:
162: @Test(expected = NoUniqueResultException.class)
163: public void testGetSingleResultMultiples() {
164: logger.debug("Test: get single result. No unique result.");
165: final String query =
166: "SELECT ?x WHERE { ?x a ?type . }";
167: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
168: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
169: q.getSingleResult();
170: }
171:
172: @Test(expected = NoResultException.class)
173: public void testGetSingleResultNoResult() {
174: logger.debug("Test: get single result. No result.");
175: final String query =
176: "SELECT ?x WHERE { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassX> . }";
177: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class);
178: q.getSingleResult();
179: }
180:
181: @Test(expected = NullPointerException.class)
182: public void testCreateQueryNullQuery() {
183: logger.debug("Test: create query. Null query passed.");
184: getEntityManager().createNativeQuery(null, OWLClassA.class);
185: }
186:
187: @Test(expected = NullPointerException.class)
188: public void testCreateQueryNullClass() {
189: logger.debug("Test: create query. Null result class passed.");
190: final String query = "SELECT ?x WHERE { ?x ?y ?z .}";
191: getEntityManager().createNativeQuery(query, (Class<OWLClassA>) null);
192: }
193:
194: @Test
195: public void askQueryReturnsTrue() {
196: logger.debug("Test: execute a ASK query which returns true.");
197: final String query = "ASK { ?x a ?type . }";
198: final TypedQuery<Boolean> q = getEntityManager().createNativeQuery(query, Boolean.class)
199: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_A));
200: final Boolean res = q.getSingleResult();
201: assertNotNull(res);
202: assertTrue(res);
203: }
204:
205: @Test
206: public void askQueryReturnsFalse() {
207: logger.debug("Test: execute a ASK query which returns false.");
208: final String query = "ASK { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassX> . }";
209: final TypedQuery<Boolean> q = getEntityManager().createNativeQuery(query, Boolean.class);
210: final List<Boolean> res = q.getResultList();
211: assertNotNull(res);
212: assertEquals(1, res.size());
213: assertFalse(res.get(0));
214: }
215:
216: @Ignore
217: @Test
218: public void askQueryAgainstTransactionalOntologyContainsUncommittedChangesAsWell() throws Exception {
219: logger.debug("Test: execute an ASK query which returns changes yet to be committed in transaction.");
220: final OWLClassE e = new OWLClassE();
221: getEntityManager().getTransaction().begin();
222: try {
223: getEntityManager().persist(e);
224: final TypedQuery<Boolean> query = getEntityManager().createNativeQuery(
225: "ASK { ?individual a ?type . }",
226: Boolean.class).setParameter("individual", e.getUri()).setParameter("type",
227: URI.create(Vocabulary.C_OWL_CLASS_E));
228: final Boolean res = query.getSingleResult();
229: assertTrue(res);
230: } finally {
231: getEntityManager().getTransaction().rollback();
232: }
233: }
234:
235: @Test
236: public void askQueryWithPositionParameter() {
237: logger.debug("Test: execute an ASK query which returns true, query contains positional parameter.");
238: final String query = "ASK { ?x a $1 . }";
239: final URI paramValue = URI.create(OWLClassA.class.getAnnotation(OWLClass.class).iri());
240: final TypedQuery<Boolean> q = getEntityManager().createNativeQuery(query, Boolean.class)
241: .setParameter(1, paramValue);
242: final Boolean res = q.getSingleResult();
243: assertNotNull(res);
244: assertTrue(res);
245: }
246:
247: @Test
248: public void testCreateTypedNamedNativeQuery() {
249: final List<OWLClassA> expected = QueryTestEnvironment.getData(OWLClassA.class);
250: final List<URI> uris = expected.stream().map(OWLClassA::getUri).collect(Collectors.toList());
251: final List<OWLClassA> res = getEntityManager().createNamedQuery("OWLClassA.findAll", OWLClassA.class)
252: .getResultList();
253: assertEquals(expected.size(), res.size());
254: res.forEach(a -> assertTrue(uris.contains(a.getUri())));
255: }
256:
257: @Test
258: public void usingDescriptorAllowsToCustomizeQueryResults() throws Exception {
259: final List<OWLClassA> expected = QueryTestEnvironment.getData(OWLClassA.class);
260: expected.forEach(a -> assertNotNull(a.getStringAttribute()));
261: final Descriptor descriptor = new EntityDescriptor();
262: descriptor.setLanguage("cs");
263: final List<OWLClassA> result = getEntityManager().createNamedQuery("OWLClassA.findAll", OWLClassA.class)
264: .setDescriptor(descriptor).getResultList();
265: assertEquals(expected.size(), result.size());
266: result.forEach(a -> assertNull(a.getStringAttribute())); // Because the data has @en language tag
267: }
268: }