mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix code
This commit is contained in:
parent
569512fb56
commit
ed512e3377
@ -1,13 +1,31 @@
|
||||
package cn.hutool.core.lang.page;
|
||||
|
||||
/**
|
||||
* 导航分页信息类<br>
|
||||
* 根据提供的总页数、每页记录数、导航页码数等信息,生成导航数组。
|
||||
* <pre>
|
||||
* [1] 2 3 4 5 >>
|
||||
* << 1 [2] 3 4 5 >>
|
||||
* << 1 2 3 4 [5]
|
||||
* </pre>
|
||||
*
|
||||
* @author 莫取网名
|
||||
*/
|
||||
public class NavigatePageInfo extends PageInfo {
|
||||
|
||||
private final int navigatePages; //导航页码数
|
||||
private final int navigatePageCount; //导航页码数
|
||||
private int[] navigatePageNumbers; //所有导航页号
|
||||
|
||||
public NavigatePageInfo(final int total, final int pageSize, int navigatePages) {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param total 总记录数
|
||||
* @param pageSize 每页显示记录数
|
||||
* @param navigatePageCount 导航页码数
|
||||
*/
|
||||
public NavigatePageInfo(final int total, final int pageSize, final int navigatePageCount) {
|
||||
super(total, pageSize);
|
||||
this.navigatePages = navigatePages;
|
||||
this.navigatePageCount = navigatePageCount;
|
||||
|
||||
//基本参数设定之后进行导航页面的计算
|
||||
calcNavigatePageNumbers();
|
||||
@ -22,26 +40,50 @@ public class NavigatePageInfo extends PageInfo {
|
||||
return navigatePageNumbers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NavigatePageInfo setFirstPageNo(final int firstPageNo) {
|
||||
super.setFirstPageNo(firstPageNo);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NavigatePageInfo setPageNo(final int pageNo) {
|
||||
super.setPageNo(pageNo);
|
||||
// 重新计算导航
|
||||
calcNavigatePageNumbers();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder str = new StringBuilder();
|
||||
|
||||
if(false == isFirstPage()){
|
||||
if (false == isFirstPage()) {
|
||||
str.append("<< ");
|
||||
}
|
||||
if (navigatePageNumbers.length > 0) {
|
||||
str.append(wrap(navigatePageNumbers[0]));
|
||||
str.append(wrapForDisplay(navigatePageNumbers[0]));
|
||||
}
|
||||
for (int i = 1; i < navigatePageNumbers.length; i++) {
|
||||
str.append(" ").append(wrap(navigatePageNumbers[i]));
|
||||
str.append(" ").append(wrapForDisplay(navigatePageNumbers[i]));
|
||||
}
|
||||
if(false == isLastPage()){
|
||||
if (false == isLastPage()) {
|
||||
str.append(" >>");
|
||||
}
|
||||
return str.toString();
|
||||
}
|
||||
|
||||
private String wrap(final int pageNumber){
|
||||
if(this.pageNo == pageNumber){
|
||||
// region ----- private methods
|
||||
|
||||
/**
|
||||
* 用于显示的包装<br>
|
||||
* 当前页显示'[pageNumber]',否则直接显示
|
||||
*
|
||||
* @param pageNumber 页码
|
||||
* @return 包装的页码
|
||||
*/
|
||||
private String wrapForDisplay(final int pageNumber) {
|
||||
if (this.pageNo == pageNumber) {
|
||||
return "[" + pageNumber + "]";
|
||||
}
|
||||
return String.valueOf(pageNumber);
|
||||
@ -51,35 +93,36 @@ public class NavigatePageInfo extends PageInfo {
|
||||
* 计算导航页
|
||||
*/
|
||||
private void calcNavigatePageNumbers() {
|
||||
//当总页数小于或等于导航页码数时
|
||||
if (pages <= navigatePages) {
|
||||
navigatePageNumbers = new int[pages];
|
||||
for (int i = 0; i < pages; i++) {
|
||||
//当总页数小于或等于导航页码数时,全部显示
|
||||
if (pageCount <= navigatePageCount) {
|
||||
navigatePageNumbers = new int[pageCount];
|
||||
for (int i = 0; i < pageCount; i++) {
|
||||
navigatePageNumbers[i] = i + 1;
|
||||
}
|
||||
} else { //当总页数大于导航页码数时
|
||||
navigatePageNumbers = new int[navigatePages];
|
||||
int startNum = pageNo - navigatePages / 2;
|
||||
int endNum = pageNo + navigatePages / 2;
|
||||
} else { //当总页数大于导航页码数时,部分显示
|
||||
navigatePageNumbers = new int[navigatePageCount];
|
||||
int startNum = pageNo - navigatePageCount / 2;
|
||||
int endNum = pageNo + navigatePageCount / 2;
|
||||
|
||||
if (startNum < 1) {
|
||||
startNum = 1;
|
||||
//(最前navPageCount页
|
||||
for (int i = 0; i < navigatePages; i++) {
|
||||
for (int i = 0; i < navigatePageCount; i++) {
|
||||
navigatePageNumbers[i] = startNum++;
|
||||
}
|
||||
} else if (endNum > pages) {
|
||||
endNum = pages;
|
||||
} else if (endNum > pageCount) {
|
||||
endNum = pageCount;
|
||||
//最后navPageCount页
|
||||
for (int i = navigatePages - 1; i >= 0; i--) {
|
||||
for (int i = navigatePageCount - 1; i >= 0; i--) {
|
||||
navigatePageNumbers[i] = endNum--;
|
||||
}
|
||||
} else {
|
||||
//所有中间页
|
||||
for (int i = 0; i < navigatePages; i++) {
|
||||
for (int i = 0; i < navigatePageCount; i++) {
|
||||
navigatePageNumbers[i] = startNum++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ public class PageInfo {
|
||||
/**
|
||||
* 总页数
|
||||
*/
|
||||
int pages;
|
||||
int pageCount;
|
||||
/**
|
||||
* 首页标识
|
||||
*/
|
||||
@ -74,7 +74,7 @@ public class PageInfo {
|
||||
this.pageSize = pageSize;
|
||||
// 因为总条数除以页大小的最大余数是页大小数-1,
|
||||
// 因此加一个最大余数,保证舍弃的余数与最大余数凑1.x,就是一旦有余数则+1页
|
||||
this.pages = (total + pageSize - 1) / pageSize;
|
||||
this.pageCount = (total + pageSize - 1) / pageSize;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -100,8 +100,8 @@ public class PageInfo {
|
||||
*
|
||||
* @return {int}
|
||||
*/
|
||||
public int getPages() {
|
||||
return pages;
|
||||
public int getPageCount() {
|
||||
return pageCount;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -129,7 +129,7 @@ public class PageInfo {
|
||||
* @return 是否尾页
|
||||
*/
|
||||
public boolean isLastPage() {
|
||||
return getPageIndexBase1() == this.pages;
|
||||
return getPageIndexBase1() == this.pageCount;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,7 +147,7 @@ public class PageInfo {
|
||||
* @return 是否有下一页
|
||||
*/
|
||||
public boolean hasNextPage() {
|
||||
return getBeginIndex() < this.pages;
|
||||
return getBeginIndex() < this.pageCount;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -155,7 +155,7 @@ public class PageInfo {
|
||||
* @return 是否可用
|
||||
*/
|
||||
public boolean isValidPage(){
|
||||
return this.getPageIndexBase1() <= this.pages;
|
||||
return this.getPageIndexBase1() <= this.pageCount;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -255,7 +255,7 @@ public class PageInfo {
|
||||
|
||||
/**
|
||||
* 下一页,即当前页码+1<br>
|
||||
* 当超过末页时,此方法指向的页码值始终为{@link #getPages()} + 1,即最后一页后的空白页。
|
||||
* 当超过末页时,此方法指向的页码值始终为{@link #getPageCount()} + 1,即最后一页后的空白页。
|
||||
*
|
||||
* @return this
|
||||
*/
|
||||
@ -275,7 +275,7 @@ public class PageInfo {
|
||||
public String toString() {
|
||||
return "{" +
|
||||
"total=" + total +
|
||||
",pages=" + pages +
|
||||
",pages=" + pageCount +
|
||||
",pageNumber=" + pageNo +
|
||||
",limit=" + pageSize +
|
||||
",isFirstPage=" + isFirstPage() +
|
||||
|
@ -7,10 +7,10 @@ public class PageInfoTest {
|
||||
@Test
|
||||
public void pagesTest() {
|
||||
PageInfo pageInfo = new PageInfo(20, 3);
|
||||
Assert.assertEquals(7, pageInfo.getPages());
|
||||
Assert.assertEquals(7, pageInfo.getPageCount());
|
||||
|
||||
pageInfo = new PageInfo(20, 4);
|
||||
Assert.assertEquals(5, pageInfo.getPages());
|
||||
Assert.assertEquals(5, pageInfo.getPageCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -65,7 +65,7 @@ public class PageResult<T> extends ArrayList<T> {
|
||||
this(page, pageSize);
|
||||
|
||||
this.total = total;
|
||||
this.totalPage = PageInfo.of(total, pageSize).getPages();
|
||||
this.totalPage = PageInfo.of(total, pageSize).getPageCount();
|
||||
}
|
||||
//---------------------------------------------------------- Constructor end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user