Skip to content

Package: CriteriaParameterFiller

CriteriaParameterFiller

nameinstructionbranchcomplexitylinemethod
CriteriaParameterFiller()
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
generateParameterName()
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
registerParameter(ExpressionLiteralImpl)
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
registerParameter(ParameterExpression)
M: 0 C: 14
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
setValuesToRegisteredParameters(TypedQueryImpl)
M: 0 C: 48
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 6
100%
M: 0 C: 1
100%

Coverage

1: /*
2: * Copyright (C) 2023 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.query.criteria;
16:
17: import cz.cvut.kbss.jopa.model.TypedQueryImpl;
18: import cz.cvut.kbss.jopa.model.query.criteria.ParameterExpression;
19: import cz.cvut.kbss.jopa.query.criteria.expressions.ExpressionLiteralImpl;
20: import cz.cvut.kbss.jopa.query.criteria.expressions.ParameterExpressionImpl;
21: import cz.cvut.kbss.jopa.query.soql.SoqlConstants;
22:
23: import java.util.HashMap;
24: import java.util.Map;
25:
26: public class CriteriaParameterFiller {
27: private final HashMap<String, ExpressionLiteralImpl> literalParameters;
28: private int counter;
29:
30: public CriteriaParameterFiller() {
31: this.literalParameters = new HashMap<>();
32: this.counter = 0;
33: }
34:
35: /**
36: * Register literal expression as query parameter and return generated name for query.
37: *
38: * @param parameter - literal expression
39: * @return String - generated name for query
40: */
41: public String registerParameter(ExpressionLiteralImpl parameter) {
42: String name = generateParameterName();
43: literalParameters.put(name, parameter);
44: return SoqlConstants.VARIABLE_PREFIX + name;
45: }
46:
47: /**
48: * Register parameter expression as query parameter. Return real name if exists, generated name otherwise.
49: *
50: * @param parameter - parameter expression
51: * @return String - real name for query if exists, generated name for query otherwise
52: */
53: public String registerParameter(ParameterExpression parameter) {
54:• if (parameter.getName() == null) {
55: String name = generateParameterName();
56: ((ParameterExpressionImpl) parameter).setNameIfUnnamed(name);
57: }
58: return SoqlConstants.VARIABLE_PREFIX + parameter.getName();
59: }
60:
61: /**
62: * Sets value from literal expressions registered as parameters to query parameters.
63: *
64: * @param query - TypedQuery fom setting parameters value
65: */
66: public <T> void setValuesToRegisteredParameters(TypedQueryImpl<T> query) {
67:• for (Map.Entry<String, ExpressionLiteralImpl> e : literalParameters.entrySet()) {
68:• if (e.getValue().getLanguageTag() != null) {
69: query.setParameter(e.getKey(), (String) e.getValue().getValue(), e.getValue().getLanguageTag());
70: } else {
71: query.setParameter(e.getKey(), literalParameters.get(e.getKey()).getValue());
72: }
73: }
74: }
75:
76: private String generateParameterName() {
77: return "generatedName" + this.counter++;
78: }
79: }