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.ResourceListFilter.SourceType;
27 import org.opencastproject.list.common.provider.ContributorsListProvider;
28 import org.opencastproject.list.common.provider.SeriesListProvider;
29 import org.opencastproject.list.util.FiltersUtils;
30 import org.opencastproject.util.data.Tuple;
31
32 import java.util.Date;
33 import java.util.Optional;
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public class SeriesListQuery extends DefaultResourceListQuery {
50
51 public static final String FILTER_ACL_NAME = "managedAcl";
52 private static final String FILTER_ACL_LABEL = "FILTERS.SERIES.ACCESS_POLICY.LABEL";
53
54 public static final String FILTER_ACL_PERMISSION_READ_NAME = "acl_permission_read";
55 private static final String FILTER_ACL_PERMISSION_READ_LABEL = "FILTERS.SERIES.ACL_PREMISSION_READ.LABEL";
56
57 public static final String FILTER_ACL_PERMISSION_WRITE_NAME = "acl_permission_write";
58 private static final String FILTER_ACL_PERMISSION_WRITE_LABEL = "FILTERS.SERIES.ACL_PREMISSION_WRITE.LABEL";
59
60 public static final String FILTER_CONTRIBUTORS_NAME = "contributors";
61 private static final String FILTER_CONTRIBUTORS_LABEL = "FILTERS.SERIES.CONTRIBUTORS.LABEL";
62
63 public static final String FILTER_CREATIONDATE_NAME = "CreationDate";
64 private static final String FILTER_CREATIONDATE_LABEL = "FILTERS.SERIES.CREATION_DATE.LABEL";
65
66 public static final String FILTER_CREATOR_NAME = "Creator";
67 private static final String FILTER_CREATOR_LABEL = "FILTERS.SERIES.CREATOR.LABEL";
68
69 public static final String FILTER_TEXT_NAME = "textFilter";
70
71 public static final String FILTER_LANGUAGE_NAME = "language";
72 private static final String FILTER_LANGUAGE_LABEL = "FILTERS.SERIES.LANGUAGE.LABEL";
73
74 public static final String FILTER_LICENSE_NAME = "license";
75 private static final String FILTER_LICENSE_LABEL = "FILTERS.SERIES.LICENSE.LABEL";
76
77 public static final String FILTER_ORGANIZERS_NAME = "organizers";
78 private static final String FILTER_ORGANIZERS_LABEL = "FILTERS.SERIES.ORGANIZERS.LABEL";
79
80 public static final String FILTER_SUBJECT_NAME = "subject";
81 private static final String FILTER_SUBJECT_LABEL = "FILTERS.SERIES.SUBJECT.LABEL";
82
83 public static final String FILTER_TITLE_NAME = "title";
84 private static final String FILTER_TITLE_LABEL = "FILTERS.SERIES.TITLE.LABEL";
85
86 public static final String FILTER_READ_ACCESS_NAME = "readAccess";
87 public static final String FILTER_READ_ACCESS_LABEL = "FILTERS.SERIES.READ_ACCESS.LABEL";
88
89 public static final String FILTER_WRITE_ACCESS_NAME = "writeAccess";
90 public static final String FILTER_WRITE_ACCESS_LABEL = "FILTERS.SERIES.WRITE_ACCESS.LABEL";
91
92
93 public SeriesListQuery() {
94 super();
95 this.availableFilters.add(createCreationDateFilter(Optional.<Tuple<Date, Date>> empty()));
96 this.availableFilters.add(createOrganizersFilter(Optional.empty()));
97 this.availableFilters.add(createContributorsFilter(Optional.empty()));
98 this.availableFilters.add(createReadAccessFilter(Optional.empty()));
99 this.availableFilters.add(createWriteAccessFilter(Optional.empty()));
100 }
101
102 public void withoutPermissions() {
103 ResourceListFilter filter = this.getFilter(FILTER_ACL_PERMISSION_READ_NAME);
104 if (filter != null) {
105 this.removeFilter(filter);
106 }
107 filter = this.getFilter(FILTER_ACL_PERMISSION_WRITE_NAME);
108 if (filter != null) {
109 this.removeFilter(filter);
110 }
111 }
112
113 public void withReadPermission(boolean value) {
114 this.addFilter(createReadPermissionFilter(Optional.ofNullable(value)));
115 }
116
117 public void withWritePermission(boolean value) {
118 this.addFilter(createWritePermissionFilter(Optional.ofNullable(value)));
119 }
120
121 public Optional<Boolean> getReadPermission() {
122 return this.getFilterValue(FILTER_ACL_PERMISSION_READ_NAME);
123 }
124
125 public Optional<Boolean> getWritePermission() {
126 return this.getFilterValue(FILTER_ACL_PERMISSION_WRITE_NAME);
127 }
128
129
130
131
132
133
134
135 public void withContributor(String contributor) {
136 this.addFilter(createContributorsFilter(Optional.ofNullable(contributor)));
137 }
138
139
140
141
142
143
144 public Optional<String> getContributor() {
145 return this.getFilterValue(FILTER_CONTRIBUTORS_NAME);
146 }
147
148
149
150
151
152
153
154 public void withCreationDate(Tuple<Date, Date> creationDate) {
155 this.addFilter(createCreationDateFilter(Optional.ofNullable(creationDate)));
156 }
157
158
159
160
161
162
163 public Optional<Tuple<Date, Date>> getCreationDate() {
164 return this.getFilterValue(FILTER_CREATIONDATE_NAME);
165 }
166
167
168
169
170
171
172
173 public void withCreator(String creator) {
174 this.addFilter(createCreatorFilter(Optional.ofNullable(creator)));
175 }
176
177
178
179
180
181
182 public Optional<String> getCreator() {
183 return this.getFilterValue(FILTER_CREATOR_NAME);
184 }
185
186
187
188
189
190
191
192 public void withLanguage(String language) {
193 this.addFilter(createLanguageFilter(Optional.ofNullable(language)));
194 }
195
196
197
198
199
200
201 public Optional<String> getLanguage() {
202 return this.getFilterValue(FILTER_LANGUAGE_NAME);
203 }
204
205
206
207
208
209
210
211 public void withLicense(String license) {
212 this.addFilter(createLicenseFilter(Optional.ofNullable(license)));
213 }
214
215
216
217
218
219
220 public Optional<String> getLicense() {
221 return this.getFilterValue(FILTER_LICENSE_NAME);
222 }
223
224
225
226
227
228
229
230 public void withOrganizer(String organizer) {
231 this.addFilter(createOrganizersFilter(Optional.ofNullable(organizer)));
232 }
233
234
235
236
237
238
239 public Optional<String> getOrganizer() {
240 return this.getFilterValue(FILTER_ORGANIZERS_NAME);
241 }
242
243
244
245
246
247
248
249 public void withSubject(String subject) {
250 this.addFilter(createSubjectFilter(Optional.ofNullable(subject)));
251 }
252
253
254
255
256
257
258 public Optional<String> getSubject() {
259 return this.getFilterValue(FILTER_SUBJECT_NAME);
260 }
261
262
263
264
265
266
267
268 public void withTitle(String title) {
269 this.addFilter(createTitleFilter(Optional.ofNullable(title)));
270 }
271
272
273
274
275
276
277 public Optional<String> getTitle() {
278 return this.getFilterValue(FILTER_TITLE_NAME);
279 }
280
281 public static ResourceListFilter<Boolean> createReadPermissionFilter(Optional<Boolean> value) {
282 return FiltersUtils.generateFilter(value, FILTER_ACL_PERMISSION_READ_NAME, FILTER_ACL_PERMISSION_READ_LABEL,
283 SourceType.SELECT, Optional.empty());
284 }
285
286 public static ResourceListFilter<Boolean> createWritePermissionFilter(Optional<Boolean> value) {
287 return FiltersUtils.generateFilter(value, FILTER_ACL_PERMISSION_WRITE_NAME, FILTER_ACL_PERMISSION_WRITE_LABEL,
288 SourceType.SELECT, Optional.empty());
289 }
290
291
292
293
294
295
296
297
298 public static ResourceListFilter<String> createContributorsFilter(Optional<String> contributor) {
299 return FiltersUtils.generateFilter(contributor, FILTER_CONTRIBUTORS_NAME, FILTER_CONTRIBUTORS_LABEL,
300 SourceType.SELECT, Optional.of(ContributorsListProvider.DEFAULT));
301 }
302
303
304
305
306
307
308
309
310 public static ResourceListFilter<String> createCreatorFilter(Optional<String> creator) {
311 return FiltersUtils.generateFilter(creator, FILTER_CREATOR_NAME, FILTER_CREATOR_LABEL, SourceType.SELECT,
312 Optional.of(ContributorsListProvider.DEFAULT));
313 }
314
315
316
317
318
319
320
321
322 public static ResourceListFilter<Tuple<Date, Date>> createCreationDateFilter(Optional<Tuple<Date, Date>> period) {
323 return FiltersUtils.generateFilter(period, FILTER_CREATIONDATE_NAME, FILTER_CREATIONDATE_LABEL, SourceType.PERIOD,
324 Optional.empty());
325 }
326
327
328
329
330
331
332
333
334 public static ResourceListFilter<String> createLanguageFilter(Optional<String> language) {
335 return FiltersUtils.generateFilter(language, FILTER_LANGUAGE_NAME, FILTER_LANGUAGE_LABEL, SourceType.SELECT,
336 Optional.of("LANGUAGES"));
337 }
338
339
340
341
342
343
344
345
346 public static ResourceListFilter<String> createLicenseFilter(Optional<String> license) {
347 return FiltersUtils.generateFilter(license, FILTER_LICENSE_NAME, FILTER_LICENSE_LABEL, SourceType.SELECT,
348 Optional.of("LICENSES"));
349 }
350
351
352
353
354
355
356
357
358 public static ResourceListFilter<String> createOrganizersFilter(Optional<String> organizer) {
359 return FiltersUtils.generateFilter(organizer, FILTER_ORGANIZERS_NAME, FILTER_ORGANIZERS_LABEL, SourceType.SELECT,
360 Optional.of(ContributorsListProvider.DEFAULT));
361 }
362
363
364
365
366
367
368
369
370 public static ResourceListFilter<String> createSubjectFilter(Optional<String> subject) {
371 return FiltersUtils.generateFilter(subject, FILTER_SUBJECT_NAME, FILTER_SUBJECT_LABEL, SourceType.SELECT,
372 Optional.of(SeriesListProvider.SUBJECT));
373 }
374
375
376
377
378
379
380
381
382 public static ResourceListFilter<String> createTitleFilter(Optional<String> title) {
383 return FiltersUtils.generateFilter(title, FILTER_TITLE_NAME, FILTER_TITLE_LABEL, SourceType.SELECT,
384 Optional.of(SeriesListProvider.TITLE));
385 }
386
387
388
389
390
391
392
393
394 public static ResourceListFilter<String> createReadAccessFilter(Optional<String> readAccess) {
395 return FiltersUtils.generateFilter(readAccess, FILTER_READ_ACCESS_NAME, FILTER_READ_ACCESS_LABEL,
396 SourceType.FREETEXT, Optional.of("ROLES.TARGET.ACL"));
397 }
398
399
400
401
402
403
404
405
406 public static ResourceListFilter<String> createWriteAccessFilter(Optional<String> writeAccess) {
407 return FiltersUtils.generateFilter(writeAccess, FILTER_WRITE_ACCESS_NAME, FILTER_WRITE_ACCESS_LABEL,
408 SourceType.FREETEXT, Optional.of("ROLES.TARGET.ACL"));
409 }
410
411 }