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(Class<?> clazz, String orderByCol, String orderByType) {
046 Indexer indexer = IndexerRegistryUtil.getIndexer(clazz);
047
048 String sortField = indexer.getSortField(orderByCol);
049
050 if (Validator.isNull(orderByType)) {
051 orderByType = "asc";
052 }
053
054 return new Sort(
055 sortField, Sort.STRING_TYPE,
056 !StringUtil.equalsIgnoreCase(orderByType, "asc"));
057 }
058
059 @Override
060 public Sort[] toArray(List<Sort> sorts) {
061 if ((sorts == null) || sorts.isEmpty()) {
062 return new Sort[0];
063 }
064
065 Sort[] sortsArray = new Sort[sorts.size()];
066
067 for (int i = 0; i < sorts.size(); i++) {
068 sortsArray[i] = sorts.get(i);
069 }
070
071 return sortsArray;
072 }
073
074 private static final Sort[] _DEFAULT_SORTS = new Sort[] {
075 new Sort(null, Sort.SCORE_TYPE, false),
076 new Sort(Field.MODIFIED_DATE, Sort.LONG_TYPE, true)
077 };
078
079 }