public MultiSortState(SortMeta sortMeta) { sortKey = sortMeta.getColumn().getColumnKey(); sortField = sortMeta.getSortField(); sortOrder = sortMeta.getSortOrder(); sortFunction = sortMeta.getSortFunction(); }
public List<SortMeta> getMultiSortMeta() { if (multiSortMeta != null) { return multiSortMeta; } List<MultiSortState> multiSortStateList = getMultiSortState(); if (multiSortStateList != null && !multiSortStateList.isEmpty()) { multiSortMeta = new ArrayList<>(); for (int i = 0; i < multiSortStateList.size(); i++) { MultiSortState multiSortState = multiSortStateList.get(i); UIColumn column = findColumn(multiSortState.getSortKey()); if (column != null) { SortMeta sortMeta = new SortMeta(); sortMeta.setSortBy(column); sortMeta.setSortField(multiSortState.getSortField()); sortMeta.setSortOrder(multiSortState.getSortOrder()); sortMeta.setSortFunction(multiSortState.getSortFunction()); multiSortMeta.add(sortMeta); } } } else { ValueExpression ve = getValueExpression(PropertyKeys.sortBy.toString()); if (ve != null) { multiSortMeta = (List<SortMeta>) ve.getValue(getFacesContext().getELContext()); } } return multiSortMeta; }
protected String resolveDefaultSortIcon(UIColumn column, SortMeta sortMeta) { SortOrder sortOrder = sortMeta.getSortOrder(); String sortIcon = null; if (column.getColumnKey().equals(sortMeta.getColumn().getColumnKey())) { if (sortOrder.equals(SortOrder.ASCENDING)) { sortIcon = DataTable.SORTABLE_COLUMN_ASCENDING_ICON_CLASS; } else if (sortOrder.equals(SortOrder.DESCENDING)) { sortIcon = DataTable.SORTABLE_COLUMN_DESCENDING_ICON_CLASS; } } return sortIcon; }
String[] sortField = sortMeta.getSortField().split("\\.", 2); Path<Object> path = sortField.length == 1 ? root.get(sortField[0]) : join.get(sortField[1]); orders.add(sortMeta.getSortOrder() == SortOrder.ASCENDING ? criteriaBuilder.asc(path) : criteriaBuilder.desc(path));
new SortMeta( sortColumn, sortField,
public void multiSort(FacesContext context, DataTable table) { Object value = table.getValue(); if (value == null) { return; } List<SortMeta> sortMeta = table.getMultiSortMeta(); List list = resolveList(value); boolean caseSensitiveSort = table.isCaseSensitiveSort(); Locale locale = table.resolveDataLocale(); int nullSortOrder = table.getNullSortOrder(); ChainedBeanPropertyComparator chainedComparator = new ChainedBeanPropertyComparator(); for (SortMeta meta : sortMeta) { BeanPropertyComparator comparator; UIColumn sortColumn = meta.getColumn(); ValueExpression sortByVE = sortColumn.getValueExpression(Column.PropertyKeys.sortBy.toString()); if (sortColumn.isDynamic()) { ((DynamicColumn) sortColumn).applyStatelessModel(); comparator = new DynamicChainedPropertyComparator( (DynamicColumn) sortColumn, sortByVE, table.getVar(), meta.getSortOrder(), sortColumn.getSortFunction(), caseSensitiveSort, locale, nullSortOrder); } else { comparator = new BeanPropertyComparator(sortByVE, table.getVar(), meta.getSortOrder(), sortColumn.getSortFunction(), caseSensitiveSort, locale, nullSortOrder); } chainedComparator.addComparator(comparator); } Collections.sort(list, chainedComparator); context.getApplication().publishEvent(context, PostSortEvent.class, table); }
new SortMeta( sortColumn, sortField,
public MultiSortState(SortMeta sortMeta) { this.sortKey = sortMeta.getColumn().getColumnKey(); this.sortField = sortMeta.getSortField(); this.sortOrder = sortMeta.getSortOrder(); this.sortFunction = sortMeta.getSortFunction(); }
UIColumn column = this.findColumn(multiSortState.getSortKey()); if (column != null) { SortMeta sortMeta = new SortMeta(); sortMeta.setSortBy(column); sortMeta.setSortField(multiSortState.getSortField()); sortMeta.setSortOrder(multiSortState.getSortOrder()); sortMeta.setSortFunction(multiSortState.getSortFunction());
protected String resolveDefaultSortIcon(UIColumn column, SortMeta sortMeta) { SortOrder sortOrder = sortMeta.getSortOrder(); String sortIcon = null; if (column.getColumnKey().equals(sortMeta.getColumn().getColumnKey())) { if (sortOrder.equals(SortOrder.ASCENDING)) { sortIcon = DataTable.SORTABLE_COLUMN_ASCENDING_ICON_CLASS; } else if (sortOrder.equals(SortOrder.DESCENDING)) { sortIcon = DataTable.SORTABLE_COLUMN_DESCENDING_ICON_CLASS; } } return sortIcon; }
for (SortMeta meta : sortMeta) { BeanPropertyComparator comparator; UIColumn sortColumn = meta.getColumn(); ValueExpression sortByVE = sortColumn.getValueExpression(Column.PropertyKeys.sortBy.toString()); comparator = new DynamicChainedPropertyComparator( (DynamicColumn) sortColumn, sortByVE, table.getVar(), meta.getSortOrder(), sortColumn.getSortFunction(), caseSensitiveSort, locale, nullSortOrder); meta.getSortOrder(), sortColumn.getSortFunction(), caseSensitiveSort, locale, nullSortOrder);