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.impl;
23
24 import org.opencastproject.list.api.ResourceListFilter;
25 import org.opencastproject.list.api.ResourceListQuery;
26 import org.opencastproject.util.data.Option;
27
28 import java.util.ArrayList;
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32
33 public class ResourceListQueryImpl implements ResourceListQuery {
34
35 protected final List<ResourceListFilter<?>> availableFilters = new ArrayList<>();
36 private final Map<String, ResourceListFilter<?>> filters = new HashMap<>();
37 private Option<Integer> limit;
38 private Option<Integer> offset;
39 protected Option<String> sortBy;
40
41 public ResourceListQueryImpl() {
42 limit = Option.none();
43 offset = Option.none();
44 sortBy = Option.none();
45 }
46
47 public void addFilter(ResourceListFilter<?> filter) {
48 this.filters.put(filter.getName(), filter);
49 }
50
51 public void removeFilter(ResourceListFilter<?> filter) {
52 this.filters.remove(filter.getName());
53 }
54
55 public void setLimit(Integer limit) {
56 this.limit = Option.option(limit);
57 }
58
59 public void setOffset(Integer offset) {
60 this.offset = Option.option(offset);
61 }
62
63 @Override
64 public List<ResourceListFilter<?>> getFilters() {
65 return new ArrayList<>(filters.values());
66 }
67
68 @Override
69 public ResourceListFilter<?> getFilter(String name) {
70 return filters.get(name);
71 }
72
73 @Override
74 public Option<Integer> getLimit() {
75 return limit;
76 }
77
78 @Override
79 public Option<Integer> getOffset() {
80 return offset;
81 }
82
83 @Override
84 public Option<String> getSortBy() {
85 return sortBy;
86 }
87
88 @Override
89 public Boolean hasFilter(String name) {
90 return filters.containsKey(name);
91 }
92
93 @Override
94 public List<ResourceListFilter<?>> getAvailableFilters() {
95 return availableFilters;
96 }
97
98
99
100
101
102
103
104
105 public <A> Option<A> getFilterValue(String name) {
106 if (this.hasFilter(name)) {
107 return (Option<A>) this.getFilter(name).getValue();
108 }
109
110 return Option.none();
111 }
112
113 }