package com.itheima.po;

// 导入 Serializable 接口，用于支持序列化
import java.io.Serializable;
// 导入集合类，用于存储分页数据
import java.util.ArrayList;
import java.util.List;

// 通用分页信息类，支持泛型 T，用于表示分页数据
public class PageInfo<T> implements Serializable {
    // 序列化版本号，用于保证序列化和反序列化的一致性
    private static final long serialVersionUID = 1L;

    // 当前页码，默认值为 1
    private Integer pageIndex = 1;
    // 每页显示的数据条数，默认值为 3
    private Integer pageSize = 3;
    // 数据总条数，默认值为 0
    private Integer totalCount = 0;
    // 总页数，默认值为 0
    private Integer pageTotalCount = 0;
    // 每页显示的数据集合，使用泛型 T，并初始化为空列表
    private List<T> list = new ArrayList<T>();

    // 获取当前页码的方法
    public Integer getPageIndex() {
        return pageIndex;
    }

    // 设置当前页码的方法，若页码小于 1，则默认设置为 1
    public void setPageIndex(Integer pageIndex) {
        this.pageIndex = pageIndex;
        if (pageIndex == null || pageIndex < 1) {
            this.pageIndex = 1;
        }
    }

    // 获取每页显示数据条数的方法
    public Integer getPageSize() {
        return pageSize;
    }

    // 设置每页显示数据条数的方法，若小于 1，则默认设置为 3
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
        if (pageSize == null || pageSize < 1) {
            this.pageSize = 3;
        }
    }

    // 获取数据总条数的方法
    public Integer getTotalCount() {
        return totalCount;
    }

    // 设置数据总条数的方法
    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    // 获取总页数的方法，根据总条数和每页条数计算
    public Integer getPageTotalCount() {
        this.pageTotalCount = totalCount / pageSize;
        // 如果总条数不能被每页条数整除，则总页数加 1
        if (totalCount % pageSize != 0) {
            this.pageTotalCount++;
        }
        return pageTotalCount;
    }

    // 设置总页数的方法（通常不需要手动设置）
    public void setPageTotalCount(Integer pageTotalCount) {
        this.pageTotalCount = pageTotalCount;
    }

    // 获取每页数据集合的方法
    public List<T> getList() {
        return list;
    }

    // 设置每页数据集合的方法
    public void setList(List<T> list) {
        this.list = list;
    }
}
