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