package cn.devil.utils;

import cn.devil.pojo.Admin;

import java.util.ArrayList;
import java.util.List;

public class PageUtil {

//数据库开始下标0开始
private int startIndex;
//数据库结束下标
private int endIndex;
//页面存放数据数
private int pageSize;
//总页数
private int totalPage;
//数据总条数
private int dataQuantity;
//分页导航条开始
private int navBarStart;
//分页导航条结束
private int navBarEnd;
//当前页
private int currentPage;
// 当前查询数据
private List<Admin> currentData;
//是否可以上一页
private boolean preview = false;
//是否可以下一页
private boolean next = false;

public List<Admin> getCurrentData() {
return currentData;
}

public void setCurrentData(List<Admin> currentData) {
this.currentData = currentData;
}

public int getStartIndex() {
if (startIndex < 0){
this.startIndex = 0;
}else{
this.startIndex = (this.currentPage-1) * this.pageSize;
}
return startIndex;
}

public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}

public int getEndIndex() {
this.endIndex = this.startIndex + this.pageSize;
if(this.endIndex > this.dataQuantity){
this.endIndex = this.dataQuantity;
}
return endIndex;
}

public int getPageSize() {
if(pageSize < 1){
this.pageSize = 1;
}
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public int getTotalPage() {
if(this.dataQuantity % this.pageSize == 0){
this.totalPage = this.dataQuantity / this.pageSize;
}else{
this.totalPage = this.dataQuantity / this.pageSize + 1;
}
return totalPage;
}

public int getDataQuantity() {
return dataQuantity;
}

public void setDataQuantity(int dataQuantity) {
this.dataQuantity = dataQuantity;
}

public int getNavBarStart() {
if(currentPage <= 6){
this.navBarStart = 1;
}else{
this.navBarStart = this.currentPage-6;
}
return navBarStart;
}

public int getNavBarEnd() {
if(this.navBarStart+9 < this.totalPage){
this.navBarEnd = this.navBarStart+9;
}else if (this.navBarEnd == 0 ){
this.navBarEnd = this.navBarStart;
}else{
this.navBarEnd = this.totalPage;
}
return navBarEnd;
}

public void setNavBarEnd(int navBarEnd) {
this.navBarEnd = navBarEnd;
}

public int getCurrentPage() {
if(currentPage < 1){
this.currentPage = 1;
}else if(currentPage > this.totalPage){
this.currentPage = this.totalPage;
}
return currentPage;
}

public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

public static void main(String[] args) {
List<Admin> admins = new ArrayList<>();
for(int i = 0; i <= 20000; i++){
Admin admin = new Admin();
Long j = 1L;
j++;
admin.setAdminId(j);
admins.add(admin);
}
PageUtil pageUtil = new PageUtil(admins,3,10);
System.out.println("总页数:"+pageUtil.getTotalPage());
System.out.println("当前页第一条数据的下标:"+pageUtil.getStartIndex());
System.out.println("当前页最后一条数据的下标:"+pageUtil.getEndIndex());
System.out.println("导航条开始数:"+pageUtil.getNavBarStart());
System.out.println("导航条结束数:"+pageUtil.getNavBarEnd());
System.out.println("总页数:"+pageUtil.getTotalPage());
}

public PageUtil(List<Admin> currentData, int currentPage, int pageSize) {
this.dataQuantity = currentData.size();
this.pageSize = pageSize;
this.currentPage = currentPage;
this.currentData = currentData;
this.totalPage = this.getTotalPage();
this.startIndex = this.getStartIndex();
this.endIndex = this.getEndIndex();
this.navBarStart = this.getNavBarStart();
this.navBarEnd = this.getNavBarEnd();
this.preview = this.isPreview();
this.next = this.isNext();
}

public PageUtil(int startIndex, int pageSize, int dataQuantity, int currentPage, List<Admin> currentData) {
this.startIndex = startIndex;
this.pageSize = pageSize;
this.dataQuantity = dataQuantity;
this.currentPage = currentPage;
this.currentData = currentData;
this.totalPage = this.getTotalPage();
this.startIndex = startIndex;
this.endIndex = this.getEndIndex();
this.navBarStart = this.getNavBarStart();
this.navBarEnd = this.getNavBarEnd();
this.preview = this.isPreview();
this.next = this.isNext();
}

public boolean isPreview() {
if(currentPage > 1){
preview = true;
}
return preview;
}

public boolean isNext() {
if(this.currentPage < this.totalPage ){
next = true;
}
return next;
}

}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄