This commit is contained in:
Looly 2023-03-17 00:06:44 +08:00
parent e611adc884
commit 569512fb56
10 changed files with 134 additions and 21 deletions

View File

@ -8,7 +8,7 @@ import cn.hutool.core.collection.partition.RandomAccessPartition;
import cn.hutool.core.comparator.PinyinComparator;
import cn.hutool.core.comparator.PropertyComparator;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.math.PageInfo;
import cn.hutool.core.lang.page.PageInfo;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;

View File

@ -1,12 +1,13 @@
package cn.hutool.core.math;
package cn.hutool.core.lang.page;
public class NavigatePageInfo extends PageInfo{
public class NavigatePageInfo extends PageInfo {
private final int navigatePages = 8; //导航页码数
private final int navigatePages; //导航页码数
private int[] navigatePageNumbers; //所有导航页号
public NavigatePageInfo(final int total, final int pageSize) {
public NavigatePageInfo(final int total, final int pageSize, int navigatePages) {
super(total, pageSize);
this.navigatePages = navigatePages;
//基本参数设定之后进行导航页面的计算
calcNavigatePageNumbers();
@ -22,17 +23,30 @@ public class NavigatePageInfo extends PageInfo{
}
public String toString() {
final StringBuilder str = new StringBuilder(super.toString());
str.append(", {navigatePageNumbers=");
final int len = navigatePageNumbers.length;
if (len > 0) str.append(navigatePageNumbers[0]);
for (int i = 1; i < len; i++) {
str.append(" ").append(navigatePageNumbers[i]);
final StringBuilder str = new StringBuilder();
if(false == isFirstPage()){
str.append("<< ");
}
if (navigatePageNumbers.length > 0) {
str.append(wrap(navigatePageNumbers[0]));
}
for (int i = 1; i < navigatePageNumbers.length; i++) {
str.append(" ").append(wrap(navigatePageNumbers[i]));
}
if(false == isLastPage()){
str.append(" >>");
}
str.append("}");
return str.toString();
}
private String wrap(final int pageNumber){
if(this.pageNo == pageNumber){
return "[" + pageNumber + "]";
}
return String.valueOf(pageNumber);
}
/**
* 计算导航页
*/

View File

@ -1,4 +1,4 @@
package cn.hutool.core.math;
package cn.hutool.core.lang.page;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.DefaultSegment;
@ -227,7 +227,8 @@ public class PageInfo {
/**
* 设置首页编号即以数字几为第一页标志<br>
* 如设置0则0表示第一页1表示第二页
* 如设置0则0表示第一页1表示第二页<br>
* 设置此参数后须调用{@link #setPageNo(int)} 重新设置当前页的页码
*
* @param firstPageNo 首页编号
* @return this
@ -238,7 +239,9 @@ public class PageInfo {
}
/**
* 设置当前页码
* 设置当前页码具体这个页码代表实际页取决于{@link #setFirstPageNo(int)}设置的值
* 例如当{@link #setFirstPageNo(int)}设置为1时1表示首页设置为0时0表示首页依次类推<br>
* 当设置页码小于{@link #getFirstPageNo()}值时始终为{@link #getFirstPageNo()}
*
* @param pageNo 当前页码
* @return this
@ -251,7 +254,8 @@ public class PageInfo {
}
/**
* 下一页即当前页码+1
* 下一页即当前页码+1<br>
* 当超过末页时此方法指向的页码值始终为{@link #getPages()} + 1即最后一页后的空白页
*
* @return this
*/
@ -264,7 +268,7 @@ public class PageInfo {
*
* @return this
*/
public PageInfo PreviousPage() {
public PageInfo previousPage() {
return setPageNo(this.pageNo - 1);
}

View File

@ -0,0 +1,10 @@
/**
* 提供分页信息封装主要包括
* <ul>
* <li>{@link cn.hutool.core.lang.page.PageInfo}: 提供分页信息</li>
* <li>{@link cn.hutool.core.lang.page.NavigatePageInfo}: 提供分页导航信息</li>
* </ul>
*
* @author looly
*/
package cn.hutool.core.lang.page;

View File

@ -2,7 +2,7 @@ package cn.hutool.core.collection;
import cn.hutool.core.date.StopWatch;
import cn.hutool.core.lang.Console;
import cn.hutool.core.math.PageInfo;
import cn.hutool.core.lang.page.PageInfo;
import cn.hutool.core.util.RandomUtil;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -0,0 +1,37 @@
package cn.hutool.core.lang.page;
import org.junit.Assert;
import org.junit.Test;
public class NavigatePageInfoTest {
@Test
public void naviTest1(){
// 首页
final NavigatePageInfo navigatePageInfo = new NavigatePageInfo(10, 2, 6);
Assert.assertEquals("[1] 2 3 4 5 >>", navigatePageInfo.toString());
// 中间页
navigatePageInfo.nextPage();
Assert.assertEquals("<< 1 [2] 3 4 5 >>", navigatePageInfo.toString());
// 尾页
navigatePageInfo.setPageNo(5);
Assert.assertEquals("<< 1 2 3 4 [5]", navigatePageInfo.toString());
}
@Test
public void naviTest2(){
// 首页
final NavigatePageInfo navigatePageInfo = new NavigatePageInfo(10, 2, 4);
Assert.assertEquals("[1] 2 3 4 >>", navigatePageInfo.toString());
// 中间页
navigatePageInfo.nextPage();
Assert.assertEquals("<< 1 [2] 3 4 >>", navigatePageInfo.toString());
// 尾页
navigatePageInfo.setPageNo(5);
Assert.assertEquals("<< 2 3 4 [5]", navigatePageInfo.toString());
}
}

View File

@ -1,4 +1,4 @@
package cn.hutool.core.math;
package cn.hutool.core.lang.page;
import org.junit.Assert;
import org.junit.Test;

View File

@ -0,0 +1,48 @@
package cn.hutool.core.tree;
import cn.hutool.core.lang.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class IssueI6NR2ZTest {
@Test
public void getNodeTest() {
final List<TreeNode<Integer>> list = new ArrayList<>();
final TreeNode<Integer> treeNode1 = new TreeNode<>();
treeNode1.setId(1);
treeNode1.setParentId(0);
list.add(treeNode1);
final TreeNode<Integer> treeNode2 = new TreeNode<>();
treeNode2.setId(2);
treeNode2.setParentId(1);
list.add(treeNode2);
final TreeNode<Integer> treeNode3 = new TreeNode<>();
treeNode3.setId(3);
treeNode3.setParentId(1);
list.add(treeNode3);
final TreeNode<Integer> treeNode4 = new TreeNode<>();
treeNode4.setId(21);
treeNode4.setParentId(2);
list.add(treeNode4);
final TreeNode<Integer> treeNode5 = new TreeNode<>();
treeNode5.setId(31);
treeNode5.setParentId(3);
list.add(treeNode5);
final TreeNode<Integer> treeNode6 = new TreeNode<>();
treeNode6.setId(211);
treeNode6.setParentId(21);
list.add(treeNode6);
final List<MapTree<Integer>> build = TreeUtil.build(list);
final MapTree<Integer> node = TreeUtil.getNode(build.get(0), 31);
Assert.notNull(node);
}
}

View File

@ -1,7 +1,7 @@
package cn.hutool.db;
import cn.hutool.core.lang.Segment;
import cn.hutool.core.math.PageInfo;
import cn.hutool.core.lang.page.PageInfo;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.db.sql.Order;

View File

@ -1,6 +1,6 @@
package cn.hutool.db;
import cn.hutool.core.math.PageInfo;
import cn.hutool.core.lang.page.PageInfo;
import java.util.ArrayList;