package cn.org.rapid_framework.page; import java.io.Serializable; import java.util.Collections; import java.util.List; import cn.org.rapid_framework.util.page.PageQuery; /** * 分页请求信息 * 其中范型<T>为filters的类型 * * 已经过时,使用PageQuery替代 * * @see PageQuery * @author badqiu */ public class PageRequest<T> implements Serializable { public static final int DEFAULT_PAGE_SIZE = 10; /** * 过滤参数 */ @Deprecated private T filters; /** * 页号码,页码从1开始 */ private int pageNumber; /** * 分页大小 */ private int pageSize = DEFAULT_PAGE_SIZE; /** * 排序的多个列,如: username desc */ private String sortColumns; public PageRequest() { } @Deprecated public PageRequest(T filters) { setFilters(filters); } public PageRequest(int pageNumber, int pageSize) { this(pageNumber,pageSize,(T)null); } @Deprecated public PageRequest(int pageNumber, int pageSize, T filters) { this(pageNumber,pageSize,filters,null); } public PageRequest(int pageNumber, int pageSize,String sortColumns) { this(pageNumber,pageSize,null,sortColumns); } @Deprecated public PageRequest(int pageNumber, int pageSize, T filters,String sortColumns) { this.pageNumber = pageNumber; this.pageSize = pageSize; setFilters(filters); setSortColumns(sortColumns); } @Deprecated public T getFilters() { return filters; } @Deprecated public void setFilters(T filters) { this.filters = filters; } public int getPageNumber() { return pageNumber; } public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public String getSortColumns() { return sortColumns; } /** * 排序的列,可以同时多列,使用逗号分隔,如 username desc,age asc * @return */ public void setSortColumns(String sortColumns) { checkSortColumnsSqlInjection(sortColumns); if(sortColumns != null && sortColumns.length() > 200) { throw new IllegalArgumentException("sortColumns.length() <= 200 must be true"); } this.sortColumns = sortColumns; } /** * 将sortColumns进行解析以便返回SortInfo以便使用 * @return */ public List<SortInfo> getSortInfos() { return Collections.unmodifiableList(SortInfo.parseSortColumns(sortColumns)); } private void checkSortColumnsSqlInjection(String sortColumns) { if(sortColumns == null) return; if(sortColumns.indexOf("'") >= 0 || sortColumns.indexOf("\\") >= 0) { throw new IllegalArgumentException("sortColumns:"+sortColumns+" has SQL Injection risk"); } } }