001
014
015 package com.liferay.portal.kernel.search;
016
017 import com.liferay.portal.kernel.util.StringUtil;
018 import com.liferay.portal.kernel.util.Validator;
019
020 import java.util.List;
021
022
027 public class SortFactoryImpl implements SortFactory {
028
029 @Override
030 public Sort create(String fieldName, boolean reverse) {
031 return new Sort(fieldName, reverse);
032 }
033
034 @Override
035 public Sort create(String fieldName, int type, boolean reverse) {
036 return new Sort(fieldName, type, reverse);
037 }
038
039 @Override
040 public Sort[] getDefaultSorts() {
041 return _DEFAULT_SORTS;
042 }
043
044 @Override
045 public Sort getSort(
046 Class<?> clazz, int type, String orderByCol, String orderByType) {
047
048 Indexer indexer = IndexerRegistryUtil.getIndexer(clazz);
049
050 String sortField = indexer.getSortField(orderByCol, type);
051
052 if (Validator.isNull(orderByType)) {
053 orderByType = "asc";
054 }
055
056 return new Sort(
057 sortField, type, !StringUtil.equalsIgnoreCase(orderByType, "asc"));
058 }
059
060 @Override
061 public Sort getSort(Class<?> clazz, String orderByCol, String orderByType) {
062 return getSort(clazz, Sort.STRING_TYPE, orderByCol, orderByType);
063 }
064
065 @Override
066 public Sort[] toArray(List<Sort> sorts) {
067 if ((sorts == null) || sorts.isEmpty()) {
068 return new Sort[0];
069 }
070
071 Sort[] sortsArray = new Sort[sorts.size()];
072
073 for (int i = 0; i < sorts.size(); i++) {
074 sortsArray[i] = sorts.get(i);
075 }
076
077 return sortsArray;
078 }
079
080 private static final Sort[] _DEFAULT_SORTS = new Sort[] {
081 new Sort(null, Sort.SCORE_TYPE, false),
082 new Sort(Field.MODIFIED_DATE, Sort.LONG_TYPE, true)
083 };
084
085 }