package cn.com.countrygarden.bi.main.util;

import cn.com.countrygarden.bi.main.model.PageData;
import cn.com.countrygarden.bi.main.util.entity.BaseDto;
import com.github.pagehelper.PageRowBounds;

import java.util.ArrayList;

/**
 * 分页工具类
 * 用于手动分页
 */
public class PageUtil {

    /**
     * 获取数据库分页起始页面
     * @author ferren
     * @param pageIndex 页面页码
     * @param pageSize  页面容量
     * @return          用于数据库分页的起始点
     */
    public static int getPageOffset(int pageIndex, int pageSize) {
        return pageSize*(pageIndex-1);
    }

    /**
     * 设置偏移值
     * @param dto
     * @return
     */
    public static BaseDto setPageOffset(BaseDto dto){
        int pageIndex = dto.getPageIndex();
        int pageSize = dto.getPageSize();
        dto.setPageIndex(pageIndex == 0 ? 1 : pageIndex);
        dto.setPageSize(pageSize== 0 ? 10 : pageSize);
        int pageOffset = PageUtil.getPageOffset(dto.getPageIndex(),dto.getPageSize());
        dto.setPageOffset(pageOffset);
        return dto;
    }

    /**
     * 设置实体
     * @param dto
     * @param total
     * @param object
     * @return
     */
    public static PageData setPageData(BaseDto dto, Long total, Object object){
        PageRowBounds pageRowBounds = new PageRowBounds(dto.getPageIndex(), dto.getPageSize());
        if (total == null) {
            total = 0L;
        }
        if (object == null) {
            object = new ArrayList();
        }
        pageRowBounds.setTotal(total);
        pageRowBounds.setCount(true);
        PageData pageData = new PageData(object, pageRowBounds);
        return pageData;
    }
}
