From 41c1ea32d171bd66b94d4438a3ee685402c63b8d Mon Sep 17 00:00:00 2001 From: RedKale <22250530@qq.com> Date: Tue, 28 Jun 2016 16:24:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86Flipper=E4=B8=AD=E7=9A=84page=E9=A1=B5?= =?UTF-8?q?=E5=8F=B7=E6=8D=A2=E6=88=90start=E8=AE=B0=E5=BD=95=E5=8F=B7?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E5=BD=B1=E5=93=8D=E5=88=B0HttpServlet?= =?UTF-8?q?=E4=B8=ADfindFlipper=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/source/DataDefaultSource.java | 5 +-- src/org/redkale/source/EntityCache.java | 2 +- src/org/redkale/source/Flipper.java | 34 ++++++++----------- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index a50954028..fa8b4e1bc 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -19,6 +19,7 @@ import javax.sql.ConnectionPoolDataSource; import javax.xml.stream.*; import static org.redkale.source.FilterNode.formatToString; import org.redkale.util.*; +import static org.redkale.source.FilterNode.formatToString; /** * @@ -1697,10 +1698,10 @@ public final class DataDefaultSource implements DataSource, Function 0) set.absolute(flipper.index()); + if (flipper != null && flipper.getStart() > 0) set.absolute(flipper.getStart()); final int limit = flipper == null ? Integer.MAX_VALUE : flipper.getSize(); int i = 0; while (set.next()) { diff --git a/src/org/redkale/source/EntityCache.java b/src/org/redkale/source/EntityCache.java index 6d6ba2c46..1b2712f21 100644 --- a/src/org/redkale/source/EntityCache.java +++ b/src/org/redkale/source/EntityCache.java @@ -302,7 +302,7 @@ public final class EntityCache { Stream stream = this.list.stream(); if (filter != null) stream = stream.filter(filter); if (comparator != null) stream = stream.sorted(comparator); - if (flipper != null) stream = stream.skip(flipper.index()).limit(flipper.getSize()); + if (flipper != null) stream = stream.skip(flipper.getStart()).limit(flipper.getSize()); final List rs = new ArrayList<>(); if (selects == null) { Consumer action = x -> rs.add(needcopy ? newReproduce.copy(creator.create(), x) : x); diff --git a/src/org/redkale/source/Flipper.java b/src/org/redkale/source/Flipper.java index c379012f8..2b8f2fff5 100644 --- a/src/org/redkale/source/Flipper.java +++ b/src/org/redkale/source/Flipper.java @@ -20,7 +20,7 @@ public final class Flipper implements Serializable, Cloneable { private int size = DEFAULT_PAGESIZE; - private int page = 1; + private int start = 0; private String sort = ""; @@ -35,49 +35,49 @@ public final class Flipper implements Serializable, Cloneable { this.sort = sortColumn; } - public Flipper(int pageSize, int pageNo) { + public Flipper(int pageSize, int startIndex) { this.size = pageSize > 0 ? pageSize : DEFAULT_PAGESIZE; - this.page = pageNo > 0 ? pageNo : 1; + this.start = startIndex < 0 ? 0 : startIndex; } - public Flipper(int pageSize, int pageNo, String sortColumn) { + public Flipper(int pageSize, int startIndex, String sortColumn) { this.size = pageSize > 0 ? pageSize : DEFAULT_PAGESIZE; - this.page = pageNo > 0 ? pageNo : 1; + this.start = startIndex < 0 ? 0 : startIndex; this.sort = sortColumn; } public void copyTo(Flipper copy) { if (copy == null) return; - copy.page = this.page; + copy.start = this.start; copy.size = this.size; copy.sort = this.sort; } public void copyFrom(Flipper copy) { if (copy == null) return; - this.page = copy.page; + this.start = copy.start; this.size = copy.size; this.sort = copy.sort; } public Flipper next() { - this.page++; + this.start = getStart() + this.size; return this; } @Override @SuppressWarnings("CloneDoesntCallSuperClone") public Flipper clone() { - return new Flipper(this.size, this.page, this.sort); + return new Flipper(this.size, this.start, this.sort); } - public int index() { - return (getPage() - 1) * getSize(); + public int getStart() { + return start; } @Override public String toString() { - return this.getClass().getSimpleName() + "{page:" + this.page + ", size=" + this.size + ", sort=" + this.sort + "}"; + return this.getClass().getSimpleName() + "{start:" + this.start + ", size=" + this.size + ", sort=" + this.sort + "}"; } public int getSize() { @@ -90,14 +90,8 @@ public final class Flipper implements Serializable, Cloneable { } } - public int getPage() { - return page; - } - - public void setPage(int page) { - if (page >= 0) { - this.page = page; - } + public void setStart(int start) { + this.start = start < 0 ? 0 : start; } public String getSort() {