-
-
Notifications
You must be signed in to change notification settings - Fork 302
/
DevPage.java
267 lines (231 loc) · 5.74 KB
/
DevPage.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
package dev.base;
/**
* detail: Page 实体类
* @author Ttt
*/
public class DevPage<T>
extends DevObject<T> {
// 页数配置
private final PageConfig config;
// 当前页数 ( 已成功 )
private int mPage;
// 是否最后一页
private boolean mLastPage;
public DevPage(final PageConfig pageConfig) {
this(pageConfig.page, pageConfig.pageSize);
}
public DevPage(
final int page,
final int pageSize
) {
config = new PageConfig(page, pageSize);
// 设置页数信息
mPage = config.page;
}
/**
* detail: 页数配置信息
* @author Ttt
*/
public static class PageConfig {
// 页数配置
public final int page;
// 每页请求条数配置
public final int pageSize;
public PageConfig(
final int page,
final int pageSize
) {
this.page = page;
this.pageSize = pageSize;
}
}
/**
* 重置操作
* @return {@link DevPage}
*/
public DevPage<T> reset() {
return setPage(config.page).setLastPage(false);
}
/**
* 重置操作
* @param reset 是否进行重置 ( 方便判断是否刷新进行调用 )
* @return {@link DevPage}
*/
public DevPage<T> reset(final boolean reset) {
if (reset) reset();
return this;
}
// =============
// = 对外公开方法 =
// =============
/**
* 获取当前页数
* @return 当前页数
*/
public int getPage() {
return mPage;
}
/**
* 设置当前页数
* @param page 当前页数
* @return {@link DevPage}
*/
public DevPage<T> setPage(final int page) {
mPage = page;
return this;
}
/**
* 判断当前页数是否一致
* @param page 待校验当前页数
* @return {@code true} yes, {@code false} no
*/
public boolean equalsPage(final int page) {
return mPage == page;
}
// =
/**
* 获取页数配置信息
* @return {@link PageConfig}
*/
public PageConfig getConfig() {
return config;
}
/**
* 获取配置初始页页数
* @return 初始页页数
*/
public int getConfigPage() {
return config.page;
}
/**
* 获取配置每页请求条数
* @return 每页请求条数
*/
public int getConfigPageSize() {
return config.pageSize;
}
// =
/**
* 获取每页请求条数
* @return 每页请求条数
*/
public int getPageSize() {
return config.pageSize;
}
/**
* 判断每页请求条数是否一致
* @param pageSize 待校验每页请求条数
* @return {@code true} yes, {@code false} no
*/
public boolean equalsPageSize(final int pageSize) {
return config.pageSize == pageSize;
}
// =
/**
* 判断是否最后一页
* @return {@code true} yes, {@code false} no
*/
public boolean isLastPage() {
return mLastPage;
}
/**
* 设置是否最后一页
* @param lastPage 是否最后一页
* @return {@link DevPage}
*/
public DevPage<T> setLastPage(final boolean lastPage) {
mLastPage = lastPage;
return this;
}
/**
* 计算是否最后一页 ( 并同步更新 )
* @param size 数据条数
* @return {@link DevPage}
*/
public DevPage<T> calculateLastPage(final int size) {
return setLastPage(isLessThanPageSize(size));
}
// ==========
// = 快捷方法 =
// ==========
/**
* 判断是否第一页
* @return {@code true} yes, {@code false} no
*/
public boolean isFirstPage() {
return mPage == config.page;
}
/**
* 判断是否允许请求下一页
* @return {@code true} yes, {@code false} no
*/
public boolean canNextPage() {
return !mLastPage; // 非最后一页则可以请求
}
/**
* 获取下一页页数
* @return 下一页页数
*/
public int getNextPage() {
return mPage + 1;
}
/**
* 累加当前页数 ( 下一页 )
* @return {@link DevPage}
*/
public DevPage<T> nextPage() {
return setPage(mPage + 1);
}
/**
* 判断是否小于每页请求条数
* <pre>
* 如果小于每页请求条数, 也表明已经没有下一页
* </pre>
* @param size 数据条数
* @return {@code true} yes, {@code false} no
*/
public boolean isLessThanPageSize(final int size) {
return size < config.pageSize;
}
// =
/**
* 请求响应处理
* @param refresh 是否刷新操作
* @return {@link DevPage}
*/
public DevPage<T> response(final boolean refresh) {
// 刷新重置操作
if (refresh) reset();
// 累加当前页数 ( 下一页 )
return nextPage();
}
/**
* 请求响应处理
* @param refresh 是否刷新操作
* @param lastPage 是否最后一页
* @return {@link DevPage}
*/
public DevPage<T> response(
final boolean refresh,
final boolean lastPage
) {
return response(refresh).setLastPage(lastPage);
}
// ===========
// = Default =
// ===========
// 默认页数配置
public static final int DEF_PAGE = 1;
// 默认每页请求条数配置
public static final int DEF_PAGE_SIZE = 10;
/**
* 获取默认配置 Page 实体类
* @param <T> 泛型
* @return {@link DevPage}
*/
public static <T> DevPage<T> getDefault() {
return new DevPage<>(
DEF_PAGE, DEF_PAGE_SIZE
);
}
}