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