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
27 import java.util.ArrayList;
28 import java.util.HashMap;
29 import java.util.List;
30 import java.util.Map;
31 import java.util.Optional;
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 Optional<Integer> limit;
38 private Optional<Integer> offset;
39 protected Optional<String> sortBy;
40
41 public ResourceListQueryImpl() {
42 limit = Optional.empty();
43 offset = Optional.empty();
44 sortBy = Optional.empty();
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 = Optional.ofNullable(limit);
57 }
58
59 public void setOffset(Integer offset) {
60 this.offset = Optional.ofNullable(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 Optional<Integer> getLimit() {
75 return limit;
76 }
77
78 @Override
79 public Optional<Integer> getOffset() {
80 return offset;
81 }
82
83 @Override
84 public Optional<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> Optional<A> getFilterValue(String name) {
106 if (this.hasFilter(name)) {
107 return (Optional<A>) this.getFilter(name).getValue();
108 }
109
110 return Optional.empty();
111 }
112
113 }