1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.opencastproject.elasticsearch.impl;
24
25 import org.opencastproject.elasticsearch.api.Language;
26 import org.opencastproject.elasticsearch.api.SearchMetadata;
27
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.HashMap;
31 import java.util.List;
32 import java.util.Map;
33
34
35
36
37 public class SearchMetadataImpl<T> implements SearchMetadata<T> {
38
39
40 protected String name = null;
41
42
43 protected List<T> values = new ArrayList<T>();
44
45
46 protected Map<Language, List<T>> localizedValues = new HashMap<Language, List<T>>();
47
48
49 protected boolean addToText = false;
50
51
52
53
54
55
56
57 public SearchMetadataImpl(String name) {
58 this.name = name;
59 }
60
61
62
63
64
65
66 public String getName() {
67 return name;
68 }
69
70
71
72
73
74
75 public boolean isLocalized() {
76 return localizedValues != null && localizedValues.size() > 0;
77 }
78
79
80
81
82
83
84
85
86
87 public void addLocalizedValue(Language language, T v) {
88 if (localizedValues == null) {
89 localizedValues = new HashMap<Language, List<T>>();
90 }
91 List<T> values = localizedValues.get(language);
92 if (values == null) {
93 values = new ArrayList<T>();
94 }
95 if (!values.contains(v)) {
96 values.add(v);
97 }
98 localizedValues.put(language, values);
99 }
100
101
102
103
104
105
106 public Map<Language, List<T>> getLocalizedValues() {
107 if (localizedValues == null) {
108 return Collections.emptyMap();
109 }
110 return localizedValues;
111 }
112
113
114
115
116
117
118 public void addValue(T v) {
119 if (values == null) {
120 values = new ArrayList<T>();
121 }
122 if (!values.contains(v)) {
123 values.add(v);
124 }
125 }
126
127
128
129
130
131
132 public List<T> getValues() {
133 if (values == null) {
134 return Collections.emptyList();
135 }
136 return values;
137 }
138
139
140
141
142
143
144 @Override
145 public T getValue() {
146 if (values == null || values.size() == 0) {
147 return null;
148 }
149 return values.get(0);
150 }
151
152
153
154
155
156
157 public void setAddToText(boolean addToText) {
158 this.addToText = addToText;
159 }
160
161
162
163
164 public boolean addToText() {
165 return addToText;
166 }
167
168
169
170
171
172
173 public void clear() {
174 if (values != null) {
175 values.clear();
176 }
177 if (localizedValues != null) {
178 localizedValues.clear();
179 }
180 }
181
182
183
184
185
186
187 @Override
188 public int hashCode() {
189 return name.hashCode();
190 }
191
192
193
194
195
196
197 @Override
198 public boolean equals(Object obj) {
199 if (!(obj instanceof SearchMetadata<?>)) {
200 return false;
201 }
202 return name.equals(((SearchMetadata<?>) obj).getName());
203 }
204
205
206
207
208
209
210 @Override
211 public String toString() {
212 return name;
213 }
214
215 }