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");
}
}
}