1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.opencastproject.list.common.query;
23
24 import org.opencastproject.list.api.DefaultResourceListQuery;
25 import org.opencastproject.list.api.ResourceListFilter;
26 import org.opencastproject.list.api.ResourceListQuery;
27 import org.opencastproject.list.common.provider.BooleanListProvider;
28 import org.opencastproject.list.common.provider.ServersListProvider;
29 import org.opencastproject.list.common.provider.ServicesListProvider;
30 import org.opencastproject.list.util.FiltersUtils;
31
32 import java.util.Optional;
33
34
35
36
37
38
39
40
41
42
43
44
45 public class ServicesListQuery extends DefaultResourceListQuery {
46
47
48 private static final String FILTER_PREFIX = "FILTERS.SERVICES";
49
50 public static final String FILTER_NAME_NAME = "name";
51
52 public static final String FILTER_LABEL_NAME = FILTER_PREFIX + ".NAME.LABEL";
53
54 public static final String FILTER_NAME_HOSTNAME = "hostname";
55
56 public static final String FILTER_LABEL_HOSTNAME = FILTER_PREFIX + ".HOSTNAME.LABEL";
57
58 public static final String FILTER_NAME_NODE_NAME = "nodeName";
59
60 public static final String FILTER_LABEL_NODE_NAME = FILTER_PREFIX + ".NODE_NAME.LABEL";
61
62 public static final String FILTER_NAME_STATUS = "status";
63
64 public static final String FILTER_LABEL_STATUS = FILTER_PREFIX + ".STATUS.LABEL";
65
66 public static final String FILTER_NAME_ACTIONS = "actions";
67
68 public static final String FILTER_LABEL_ACTIONS = FILTER_PREFIX + ".ACTIONS.LABEL";
69
70
71 public ServicesListQuery() {
72 super();
73 this.availableFilters.add(createNameFilter(Optional.<String> empty()));
74 this.availableFilters.add(createHostnameFilter(Optional.<String> empty()));
75 this.availableFilters.add(createNodeNameFilter(Optional.<String> empty()));
76 this.availableFilters.add(createStatusFilter(Optional.<String> empty()));
77 this.availableFilters.add(createActionsFilter(Optional.<Boolean> empty()));
78 }
79
80
81
82
83
84
85 public ServicesListQuery(ResourceListQuery query) {
86 this();
87 availableFilters.addAll(query.getAvailableFilters());
88
89 for (ResourceListFilter filter : query.getFilters()) {
90 addFilter(filter);
91 }
92
93 sortBy = query.getSortBy();
94 if (query.getOffset().isPresent()) {
95 setOffset(query.getOffset().get());
96 }
97 if (query.getLimit().isPresent()) {
98 setLimit(query.getLimit().get());
99 }
100 }
101
102
103
104
105
106
107 public void withName(Optional<String> name) {
108 addFilter(createNameFilter(name));
109 }
110
111
112
113
114
115
116 public void withHostname(Optional<String> hostname) {
117 addFilter(createHostnameFilter(hostname));
118 }
119
120
121
122
123
124
125 public void withNodeName(String nodeName) {
126 addFilter(createNodeNameFilter(Optional.ofNullable(nodeName)));
127 }
128
129
130
131
132
133
134 public void withStatus(Optional<String> status) {
135 addFilter(createStatusFilter(status));
136 }
137
138
139
140
141
142
143 public void withActions(Optional<Boolean> hasActions) {
144 addFilter(createActionsFilter(hasActions));
145 }
146
147
148
149
150
151
152 public void withFreeText(Optional<String> freeText) {
153 addFilter(createFreeTextFilter(freeText));
154 }
155
156
157
158
159
160
161
162 public Optional<String> getName() {
163 return getFilterValue(FILTER_NAME_NAME);
164 }
165
166
167
168
169
170
171
172 public Optional<String> getHostname() {
173 return getFilterValue(FILTER_NAME_HOSTNAME);
174 }
175
176
177
178
179
180
181
182 public Optional<String> getNodeName() {
183 return getFilterValue(FILTER_NAME_NODE_NAME);
184 }
185
186
187
188
189
190
191
192 public Optional<String> getStatus() {
193 return getFilterValue(FILTER_NAME_STATUS);
194 }
195
196
197
198
199
200
201
202 public Optional<Boolean> getActions() {
203 Optional result = getFilterValue(FILTER_NAME_ACTIONS);
204 if (result.isPresent()) {
205 if (result.get() instanceof String) {
206 return BooleanListProvider.parseValue((String)result.get());
207 }
208 }
209 return result;
210 }
211
212
213
214
215
216
217
218 public Optional<String> getFreeText() {
219 return getFilterValue(ResourceListFilter.FREETEXT);
220 }
221
222
223
224
225
226
227
228 public static <String> ResourceListFilter<String> createNameFilter(Optional<String> value) {
229 return FiltersUtils.generateFilter(
230 value,
231 FILTER_NAME_NAME,
232 FILTER_LABEL_NAME,
233 ResourceListFilter.SourceType.SELECT,
234 Optional.of(ServicesListProvider.LIST_NAME));
235 }
236
237
238
239
240
241
242
243 public static <String> ResourceListFilter<String> createHostnameFilter(Optional<String> value) {
244 return FiltersUtils.generateFilter(
245 value,
246 FILTER_NAME_HOSTNAME,
247 FILTER_LABEL_HOSTNAME,
248 ResourceListFilter.SourceType.SELECT,
249 Optional.of(ServersListProvider.LIST_HOSTNAME));
250 }
251
252
253
254
255
256
257
258 public static ResourceListFilter<String> createNodeNameFilter(Optional<String> value) {
259 return FiltersUtils.generateFilter(
260 value,
261 FILTER_NAME_NODE_NAME,
262 FILTER_LABEL_NODE_NAME,
263 ResourceListFilter.SourceType.SELECT,
264 Optional.of(ServersListProvider.LIST_NODE_NAME));
265 }
266
267
268
269
270
271
272
273 public static <String> ResourceListFilter<String> createStatusFilter(Optional<String> value) {
274 return FiltersUtils.generateFilter(
275 value,
276 FILTER_NAME_STATUS,
277 FILTER_LABEL_STATUS,
278 ResourceListFilter.SourceType.SELECT,
279 Optional.of(ServicesListProvider.LIST_STATUS));
280 }
281
282
283
284
285
286
287
288
289 public static <Boolean> ResourceListFilter<Boolean> createActionsFilter(Optional<Boolean> value) {
290 return FiltersUtils.generateFilter(
291 value,
292 FILTER_NAME_ACTIONS,
293 FILTER_LABEL_ACTIONS,
294 ResourceListFilter.SourceType.SELECT,
295 Optional.of(BooleanListProvider.YES_NO));
296 }
297
298
299
300
301
302
303
304 public static <String> ResourceListFilter<String> createFreeTextFilter(Optional<String> value) {
305 return FiltersUtils.generateFilter(
306 value,
307 ResourceListFilter.FREETEXT,
308 ResourceListFilter.FREETEXT,
309 ResourceListFilter.SourceType.FREETEXT,
310 null);
311 }
312 }