package org.hepx.jgt.common.datatable;
import org.hepx.jgt.common.datatable.type.JpaPageable;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import java.util.ArrayList;
import java.util.List;
/**
* 针对JQUERY DATATABLE控件封装的JAVABEAN
*
* @author: Koala
* @Date: 14-8-28 下午1:58
* @Version: 1.0
*/
public class RequestParams implements JpaPageable {
private static final int DEFAULT_PAGE_SIZE = 20;
private static final int DEFAULT_START = 0;
private static final int DEFAULT_PAGE = 0;
/**
* 请求次数
*/
private Integer draw;
/**
* 分页起点
*/
private Integer start;
/**
* 每页显示数量
*/
private Integer length;
/**
* 页码,第几页
*/
private Integer page;
/**
* 查询过滤内容
*/
private Search search;
/**
* 列字段
*/
private List<Column> columns;
/**
* 排序字段
*/
private List<Order> orders;
@Override
public Pageable buildPageable() {
Pageable pageable=new PageRequest(getPage(),getLength(),buildSort());
return pageable;
}
@Override
public Sort buildSort() {
if (orders != null && orders.size() > 0) {
List<Sort.Order>s_orders=new ArrayList<Sort.Order>();
for(Order o:orders){
Sort.Order s_o=new Sort.Order(Sort.Direction.fromString(o.getDir()),this.columns.get(o.getColumn()).getData());
s_orders.add(s_o);
}
return new Sort(s_orders);
} else {
return null;
}
}
public Integer getDraw() {
return draw;
}
public void setDraw(Integer draw) {
this.draw = draw;
}
public Integer getStart() {
if (start == null) {
return DEFAULT_START;
} else {
return start;
}
}
public void setStart(Integer start) {
this.start = start;
}
public Integer getLength() {
if (length == null) {
return DEFAULT_PAGE_SIZE;
} else {
return length;
}
}
public void setLength(Integer length) {
this.length = length;
}
public Search getSearch() {
return search;
}
public void setSearch(Search search) {
this.search = search;
}
public List<Column> getColumns() {
return columns;
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
public List<Order> getOrders() {
return orders;
}
public void setOrders(List<Order> orders) {
this.orders = orders;
}
public Integer getPage() {
if (this.start == 0) {
return DEFAULT_PAGE;
} else {
return this.length / this.start;
}
}
public void setPage(Integer page) {
this.page = page;
}
}