From 839c742423bc000b7e2e672057cc73f9395b9b48 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Tue, 12 Jul 2016 23:44:41 +0800 Subject: [PATCH] --- src/org/redkale/net/http/HttpRequest.java | 2 +- src/org/redkale/source/DataDefaultSource.java | 23 +++++++- src/org/redkale/source/EntityCache.java | 2 +- src/org/redkale/source/Flipper.java | 56 +++++++++---------- 4 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/org/redkale/net/http/HttpRequest.java b/src/org/redkale/net/http/HttpRequest.java index 8fe4ed638..4d8ba1fd8 100644 --- a/src/org/redkale/net/http/HttpRequest.java +++ b/src/org/redkale/net/http/HttpRequest.java @@ -532,7 +532,7 @@ public class HttpRequest extends Request { } /** - * 获取请求URL分段中含prefix段的int值 例如请求URL /pipes/record/query/start:0/size:50 获取page参数: int start = request.getRequstURIPath("start:", 0); 获取size参数: int size = request.getRequstURIPath("size:", 20); + * 获取请求URL分段中含prefix段的int值 例如请求URL /pipes/record/query/offset:0/limit:50 获取limit参数: int offset = request.getRequstURIPath("offset:", 0); 获取size参数: int limit = request.getRequstURIPath("limit:", 20); * * @param prefix prefix段前缀 * @param defvalue 默认int值 diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index 0ee081907..e19559b5f 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -19,6 +19,23 @@ import javax.sql.ConnectionPoolDataSource; import javax.xml.stream.*; import org.redkale.util.*; import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; +import static org.redkale.source.FilterNode.formatToString; /** * @@ -1830,11 +1847,11 @@ public final class DataDefaultSource implements DataSource, Function 0) set.absolute(flipper.getStart()); - final int limit = flipper == null ? Integer.MAX_VALUE : flipper.getSize(); + if (flipper != null && flipper.getOffset() > 0) set.absolute(flipper.getOffset()); + final int limit = flipper == null ? Integer.MAX_VALUE : flipper.getLimit(); int i = 0; while (set.next()) { i++; diff --git a/src/org/redkale/source/EntityCache.java b/src/org/redkale/source/EntityCache.java index 3a2a93b52..e889779e5 100644 --- a/src/org/redkale/source/EntityCache.java +++ b/src/org/redkale/source/EntityCache.java @@ -303,7 +303,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.getStart()).limit(flipper.getSize()); + if (flipper != null) stream = stream.skip(flipper.getOffset()).limit(flipper.getLimit()); 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 2b8f2fff5..f3ca828bb 100644 --- a/src/org/redkale/source/Flipper.java +++ b/src/org/redkale/source/Flipper.java @@ -16,89 +16,89 @@ import java.io.Serializable; */ public final class Flipper implements Serializable, Cloneable { - public static int DEFAULT_PAGESIZE = 20; + public static int DEFAULT_LIMIT = 20; - private int size = DEFAULT_PAGESIZE; + private int limit = DEFAULT_LIMIT; - private int start = 0; + private int offset = 0; private String sort = ""; public Flipper() { } - public Flipper(int pageSize) { - this.size = pageSize; + public Flipper(int limit) { + this.limit = limit; } public Flipper(String sortColumn) { this.sort = sortColumn; } - public Flipper(int pageSize, int startIndex) { - this.size = pageSize > 0 ? pageSize : DEFAULT_PAGESIZE; - this.start = startIndex < 0 ? 0 : startIndex; + public Flipper(int limit, int offset) { + this.limit = limit > 0 ? limit : DEFAULT_LIMIT; + this.offset = offset < 0 ? 0 : offset; } - public Flipper(int pageSize, int startIndex, String sortColumn) { - this.size = pageSize > 0 ? pageSize : DEFAULT_PAGESIZE; - this.start = startIndex < 0 ? 0 : startIndex; + public Flipper(int limit, int offset, String sortColumn) { + this.limit = limit > 0 ? limit : DEFAULT_LIMIT; + this.offset = offset < 0 ? 0 : offset; this.sort = sortColumn; } public void copyTo(Flipper copy) { if (copy == null) return; - copy.start = this.start; - copy.size = this.size; + copy.offset = this.offset; + copy.limit = this.limit; copy.sort = this.sort; } public void copyFrom(Flipper copy) { if (copy == null) return; - this.start = copy.start; - this.size = copy.size; + this.offset = copy.offset; + this.limit = copy.limit; this.sort = copy.sort; } public Flipper next() { - this.start = getStart() + this.size; + this.offset = getOffset() + this.limit; return this; } @Override @SuppressWarnings("CloneDoesntCallSuperClone") public Flipper clone() { - return new Flipper(this.size, this.start, this.sort); + return new Flipper(this.limit, this.offset, this.sort); } - public int getStart() { - return start; + public int getOffset() { + return offset; } @Override public String toString() { - return this.getClass().getSimpleName() + "{start:" + this.start + ", size=" + this.size + ", sort=" + this.sort + "}"; + return this.getClass().getSimpleName() + "{offset:" + this.offset + ", limit:" + this.limit + ", sort:" + this.sort + "}"; } - public int getSize() { - return size; + public int getLimit() { + return limit; } - public void setSize(int size) { - if (size > 0) { - this.size = size; + public void setLimit(int limit) { + if (limit > 0) { + this.limit = limit; } } - public void setStart(int start) { - this.start = start < 0 ? 0 : start; + public void setOffset(int offset) { + this.offset = offset < 0 ? 0 : offset; } public String getSort() { return sort; } - public Flipper sortIfEmpty(String sort) { + public Flipper sortIfAbsent(String sort) { if (this.sort == null || this.sort.isEmpty()) { this.sort = sort; }