-
Notifications
You must be signed in to change notification settings - Fork 14
/
QueryHolder.java
152 lines (134 loc) · 4.89 KB
/
QueryHolder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/**
* Copyright (C) 2019 Czech Technical University in Prague
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details. You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cz.cvut.kbss.jopa.query;
import cz.cvut.kbss.jopa.model.query.Parameter;
import java.util.Set;
/**
* Represents a caretaker of a query, enabling parameter setting and final assembly of the query.
*/
public interface QueryHolder {
/**
* Gets the original query string.
*
* @return Gets the original unparsed query
*/
String getQuery();
/**
* Gets a collection of parameters in the query.
*
* @return Parameter names
*/
Set<Parameter<?>> getParameters();
/**
* Gets a parameter with the specified name.
*
* @param name Parameter name
* @return Parameter object
* @throws IllegalArgumentException If the parameter of the specified name does not exist
*/
Parameter<?> getParameter(String name);
/**
* Gets a parameter with the specified position.
*
* @param position Parameter position
* @return Parameter object
* @throws IllegalArgumentException If the parameter at the specified position does not exist
*/
Parameter<?> getParameter(int position);
/**
* Gets value bound to the specified parameter.
*
* @param parameter Parameter
* @return parameter value
* @throws IllegalArgumentException If there is no parameter with the specified name
*/
Object getParameterValue(Parameter<?> parameter);
/**
* Sets value of the specified parameter in the query.
* <p>
* If a value was already specified for the parameter, it is overwritten by the new one. This version expresses the
* value type information using XSD datatype in the query string.
*
* @param parameter Parameter object
* @param value Value to use
* @throws IllegalArgumentException If there is no such parameter in the query
* @see #setUntypedParameter(Parameter, Object)
*/
<T> void setParameter(Parameter<T> parameter, Object value);
/**
* Sets value of the specified parameter in the query.
* <p>
* If a value was already specified for the parameter, it is overwritten by the new one.
*
* @param parameter Parameter object
* @param value String value to use
* @param language Parameter language
* @throws IllegalArgumentException If there is no such parameter in the query
*/
<T> void setParameter(Parameter<T> parameter, String value, String language);
/**
* Sets value of the specified parameter in the query.
* <p>
* If a value was already specified for the parameter, it is overwritten by the new one. This version inserts the
* string representation of the value directly into the query, without any type information.
*
* @param parameter Parameter object
* @param value Value to use
* @throws IllegalArgumentException If there is no such parameter in the query
* @see #setParameter(Parameter, Object)
*/
<T> void setUntypedParameter(Parameter<T> parameter, Object value);
/**
* Sets the position of the first result to retrieve.
*
* @param startPosition The position to set, starting at 0
*/
void setFirstResult(int startPosition);
/**
* Gets the currently set first result position.
*
* @return the first result position, 0 if none was set
*/
int getFirstResult();
/**
* Sets the maximum number of results the query should retrieve.
*
* @param maxResults The maximum number of results
*/
void setMaxResults(int maxResults);
/**
* Gets the currently set maximum number of results to retrieve
*
* @return Maximum results value, {@code Integer.MAX_VALUE} when none was set
*/
int getMaxResults();
/**
* Clears any previously set value of the specified parameter.
*
* @param parameter Parameter object
* @throws IllegalArgumentException If there is no such parameter in the query
*/
void clearParameter(Parameter<?> parameter);
/**
* Clears any previously set parameter values in this query.
*/
void clearParameters();
/**
* Assembles the query, using any parameter values specified, and returns it as a string.
*
* @return Assembled query
*/
String assembleQuery();
}