001
014
015 package com.liferay.portal.kernel.search;
016
017 import com.liferay.portal.kernel.search.geolocation.GeoLocationPoint;
018 import com.liferay.portal.kernel.util.ArrayUtil;
019 import com.liferay.portal.kernel.util.StringPool;
020
021 import java.io.Serializable;
022
023 import java.util.ArrayList;
024 import java.util.LinkedList;
025 import java.util.List;
026 import java.util.Locale;
027 import java.util.Map;
028
029
035 public class Field implements Serializable {
036
037 public static final String ANY = StringPool.STAR;
038
039 public static final String ARTICLE_ID = "articleId";
040
041 public static final String ASSET_CATEGORY_ID = "assetCategoryId";
042
043 public static final String ASSET_CATEGORY_IDS = "assetCategoryIds";
044
045 public static final String ASSET_CATEGORY_TITLE = "assetCategoryTitle";
046
047 public static final String ASSET_CATEGORY_TITLES = "assetCategoryTitles";
048
049 public static final String ASSET_PARENT_CATEGORY_ID = "parentCategoryId";
050
051 public static final String ASSET_PARENT_CATEGORY_IDS = "parentCategoryIds";
052
053 public static final String ASSET_TAG_IDS = "assetTagIds";
054
055 public static final String ASSET_TAG_NAMES = "assetTagNames";
056
057 public static final String ASSET_VOCABULARY_ID = "assetVocabularyId";
058
059 public static final String ASSET_VOCABULARY_IDS = "assetVocabularyIds";
060
061 public static final String CAPTION = "caption";
062
063 public static final String CATEGORY_ID = "categoryId";
064
065 public static final String CLASS_NAME_ID = "classNameId";
066
067 public static final String CLASS_PK = "classPK";
068
069 public static final String CLASS_TYPE_ID = "classTypeId";
070
071 public static final String COMMENTS = "comments";
072
073 public static final String COMPANY_ID = "companyId";
074
075 public static final String CONTENT = "content";
076
077 public static final String CREATE_DATE = "createDate";
078
079 public static final String DEFAULT_LANGUAGE_ID = "defaultLanguageId";
080
081 public static final String DESCRIPTION = "description";
082
083 public static final String ENTRY_CLASS_NAME = "entryClassName";
084
085 public static final String ENTRY_CLASS_PK = "entryClassPK";
086
087 public static final String EXPIRATION_DATE = "expirationDate";
088
089 public static final String FOLDER_ID = "folderId";
090
091 public static final String GEO_LOCATION = "geoLocation";
092
093 public static final String GROUP_ID = "groupId";
094
095 public static final String GROUP_ROLE_ID = "groupRoleId";
096
097 public static final String HIDDEN = "hidden";
098
099 public static final String KEYWORD_SEARCH = "keywordSearch";
100
101 public static final String[] KEYWORDS = {
102 Field.ASSET_CATEGORY_TITLES, Field.ASSET_TAG_NAMES, Field.COMMENTS,
103 Field.CONTENT, Field.DESCRIPTION, Field.PROPERTIES, Field.TITLE,
104 Field.URL, Field.USER_NAME
105 };
106
107 public static final String LANGUAGE_ID = "languageId";
108
109 public static final String LAYOUT_UUID = "layoutUuid";
110
111 public static final String MODIFIED_DATE = "modified";
112
113 public static final String NAME = "name";
114
115 public static final String NODE_ID = "nodeId";
116
117 public static final String ORGANIZATION_ID = "organizationId";
118
119
122 @Deprecated
123 public static final String PORTLET_ID = "portletId";
124
125 public static final String PRIORITY = "priority";
126
127 public static final String PROPERTIES = "properties";
128
129 public static final String PUBLISH_DATE = "publishDate";
130
131 public static final String RATINGS = "ratings";
132
133 public static final String RELATED_ENTRY = "relatedEntry";
134
135 public static final String REMOVED_BY_USER_NAME = "removedByUserName";
136
137 public static final String REMOVED_DATE = "removedDate";
138
139 public static final String ROLE_ID = "roleId";
140
141 public static final String ROOT_ENTRY_CLASS_NAME = "rootEntryClassName";
142
143 public static final String ROOT_ENTRY_CLASS_PK = "rootEntryClassPK";
144
145 public static final String SCOPE_GROUP_ID = "scopeGroupId";
146
147 public static final String SNIPPET = "snippet";
148
149 public static final String SPELL_CHECK_WORD = "spellCheckWord";
150
151 public static final String STAGING_GROUP = "stagingGroup";
152
153 public static final String STATUS = "status";
154
155 public static final String SUBTITLE = "subtitle";
156
157 public static final String TITLE = "title";
158
159 public static final String TREE_PATH = "treePath";
160
161 public static final String TYPE = "type";
162
163 public static final String UID = "uid";
164
165 public static final String[] UNSCORED_FIELD_NAMES = {
166 Field.ASSET_CATEGORY_IDS, Field.COMPANY_ID, Field.ENTRY_CLASS_NAME,
167 Field.ENTRY_CLASS_PK, Field.FOLDER_ID, Field.GROUP_ID,
168 Field.GROUP_ROLE_ID, Field.ROLE_ID, Field.SCOPE_GROUP_ID, Field.USER_ID
169 };
170
171 public static final String URL = "url";
172
173 public static final String USER_GROUP_ID = "userGroupId";
174
175 public static final String USER_ID = "userId";
176
177 public static final String USER_NAME = "userName";
178
179 public static final String VERSION = "version";
180
181 public static final String VIEW_COUNT = "viewCount";
182
183 public Field(String name) {
184 _name = name;
185 }
186
187 public Field(String name, Map<Locale, String> localizedValues) {
188 _name = name;
189 _localizedValues = localizedValues;
190 }
191
192 public Field(String name, String value) {
193 this(name, new String[] {value});
194 }
195
196 public Field(String name, String[] values) {
197 _name = name;
198 _values = values;
199 }
200
201 public void addField(Field field) {
202 _fields.add(field);
203 }
204
205
208 @Deprecated
209 public float getBoost() {
210 return _boost;
211 }
212
213 public List<Field> getFields() {
214 return _fields;
215 }
216
217 public GeoLocationPoint getGeoLocationPoint() {
218 return _geoLocationPoint;
219 }
220
221 public Map<Locale, String> getLocalizedValues() {
222 return _localizedValues;
223 }
224
225 public String getName() {
226 return _name;
227 }
228
229 public Class<? extends Number> getNumericClass() {
230 return _numericClass;
231 }
232
233 public Field getParentField() {
234 return _parentField;
235 }
236
237 public String getValue() {
238 if (ArrayUtil.isNotEmpty(_values)) {
239 return _values[0];
240 }
241 else {
242 return null;
243 }
244 }
245
246 public String[] getValues() {
247 return _values;
248 }
249
250 public boolean hasChildren() {
251 return !getFields().isEmpty();
252 }
253
254 public boolean isArray() {
255 return false;
256 }
257
258 public boolean isLocalized() {
259 if (_localizedValues != null) {
260 return true;
261 }
262 else {
263 return false;
264 }
265 }
266
267 public boolean isNested() {
268 if (getParentField() != null) {
269 return true;
270 }
271
272 return false;
273 }
274
275 public boolean isNumeric() {
276 return _numeric;
277 }
278
279 public boolean isSortable() {
280 return _sortable;
281 }
282
283 public boolean isTokenized() {
284 return _tokenized;
285 }
286
287
290 @Deprecated
291 public void setBoost(float boost) {
292 _boost = boost;
293 }
294
295 public void setGeoLocationPoint(GeoLocationPoint geoLocationPoint) {
296 _geoLocationPoint = geoLocationPoint;
297 }
298
299 public void setLocalizedValues(Map<Locale, String> localizedValues) {
300 _localizedValues = localizedValues;
301 }
302
303 public void setName(String name) {
304 _name = name;
305 }
306
307 public void setNumeric(boolean numeric) {
308 _numeric = numeric;
309 }
310
311 public void setNumericClass(Class<? extends Number> numericClass) {
312 _numericClass = numericClass;
313 }
314
315 public void setParentField(Field parentField) {
316 _parentField = parentField;
317 }
318
319 public void setSortable(boolean sortable) {
320 _sortable = sortable;
321 }
322
323 public void setTokenized(boolean tokenized) {
324 _tokenized = tokenized;
325 }
326
327 public void setValue(String value) {
328 setValues(new String[] {value});
329 }
330
331 public void setValues(String[] values) {
332 _values = values;
333 }
334
335 public static class NestedFieldBuilder {
336
337 public NestedFieldBuilder addNestedField(
338 String name, String... values) {
339
340 Field field = new Field(name);
341
342 field.addField(new Field("value", values));
343
344 _addField(field);
345
346 return this;
347 }
348
349 public NestedFieldBuilder endArray() {
350 return endField();
351 }
352
353 public NestedFieldBuilder endField() {
354 if (_nestedFieldsBuilderFields.size() > 1) {
355 _nestedFieldsBuilderFields.removeLast();
356 }
357
358 return this;
359 }
360
361 public Field getField() {
362 if (!_nestedFieldsBuilderFields.isEmpty()) {
363 return _nestedFieldsBuilderFields.getLast();
364 }
365
366 return null;
367 }
368
369 public NestedFieldBuilder startArray(String name) {
370 FieldArray fieldArray = new FieldArray(name);
371
372 return _startField(fieldArray);
373 }
374
375 public NestedFieldBuilder startField() {
376 return startField(null);
377 }
378
379 public NestedFieldBuilder startField(String name) {
380 Field field = new Field(name);
381
382 return _startField(field);
383 }
384
385 private void _addField(Field field) {
386 Field lastField = _nestedFieldsBuilderFields.getLast();
387
388 lastField.addField(field);
389 }
390
391 private NestedFieldBuilder _startField(Field field) {
392 if (!_nestedFieldsBuilderFields.isEmpty()) {
393 _addField(field);
394 }
395
396 _nestedFieldsBuilderFields.add(field);
397
398 return this;
399 }
400
401 private final LinkedList<Field> _nestedFieldsBuilderFields =
402 new LinkedList<>();
403
404 }
405
406 private float _boost = 1;
407 private final List<Field> _fields = new ArrayList<>();
408 private GeoLocationPoint _geoLocationPoint;
409 private Map<Locale, String> _localizedValues;
410 private String _name;
411 private boolean _numeric;
412 private Class<? extends Number> _numericClass;
413 private Field _parentField;
414 private boolean _sortable;
415 private boolean _tokenized;
416 private String[] _values;
417
418 }