package cn.org.rapid_framework.extremecomponents; import java.sql.Timestamp; import java.util.HashMap; import java.util.Map; import org.extremecomponents.table.limit.Filter; import org.extremecomponents.table.limit.Limit; import org.extremecomponents.table.limit.Sort; import cn.org.rapid_framework.beanutils.BeanUtils; import cn.org.rapid_framework.page.PageRequest; /** * @author badqiu */ public class ExtremeTablePageRequestFactory { /** * 通过ExtremeTable的Limit对象创建PageRequest对象 * @param limit * @param defaultSortColumns 默认的排序字段s,如 username desc,age asc * @return * @deprecated 使用bindPageRequest()替换 */ public static PageRequest<Map> createFromLimit(Limit limit,String defaultSortColumns) { PageRequest result = new PageRequest(); return bindPageRequest(result,limit, defaultSortColumns); } /** * @deprecated 使用bindPageRequest()替换 */ public static PageRequest createFromLimit(Limit limit) { return createFromLimit(limit,null); } /** * 绑定PageRequest的属性值 */ public static PageRequest<Map> bindPageRequest(PageRequest pageRequest,Limit limit,String defaultSortColumns) { Map filters = getFilters(limit); pageRequest.setFilters(filters); BeanUtils.copyProperties(pageRequest, filters); pageRequest.setPageNumber(limit.getPage()); pageRequest.setPageSize(limit.getCurrentRowsDisplayed()); pageRequest.setSortColumns(getSortingColumns(limit, defaultSortColumns)); return pageRequest; } private static Map getFilters(Limit limit) { Filter[] filters = limit.getFilterSet().getFilters(); Map result = new HashMap(); for(int i = 0; i < filters.length; i++) { Filter filter = filters[i]; result.put(filter.getAlias(), filter.getValue()); } return result; } private static String getSortingColumns(Limit limit, String defaultSortColumns) { Sort sort = limit.getSort(); if(sort.getProperty() == null) { return defaultSortColumns; } String sortOrder = sort.getSortOrder() == null ? "" : " " + sort.getSortOrder(); String column = sort.isAliased() ? sort.getAlias() : sort.getProperty(); String sortColumns = column + sortOrder; return sortColumns; } }