1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.ibatis.common.util;
17
18 import java.util.ArrayList;
19 import java.util.Collection;
20 import java.util.Iterator;
21 import java.util.List;
22 import java.util.ListIterator;
23
24
25
26
27
28
29 @Deprecated
30 public class PaginatedArrayList implements PaginatedList {
31
32
33 private static final ArrayList EMPTY_LIST = new ArrayList<>(0);
34
35
36 private List list;
37
38
39 private List page;
40
41
42 private int pageSize;
43
44
45 private int index;
46
47
48
49
50
51
52
53 @Deprecated
54 public PaginatedArrayList(int pageSize) {
55 this.pageSize = pageSize;
56 this.index = 0;
57 this.list = new ArrayList<>();
58 repaginate();
59 }
60
61
62
63
64
65
66
67
68
69 @Deprecated
70 public PaginatedArrayList(int initialCapacity, int pageSize) {
71 this.pageSize = pageSize;
72 this.index = 0;
73 this.list = new ArrayList<>(initialCapacity);
74 repaginate();
75 }
76
77
78
79
80
81
82
83
84
85 @Deprecated
86 public PaginatedArrayList(Collection c, int pageSize) {
87 this.pageSize = pageSize;
88 this.index = 0;
89 this.list = new ArrayList<>(c);
90 repaginate();
91 }
92
93
94
95
96 private void repaginate() {
97 if (list.isEmpty()) {
98 page = EMPTY_LIST;
99 } else {
100 int start = index * pageSize;
101 int end = start + pageSize - 1;
102 if (end >= list.size()) {
103 end = list.size() - 1;
104 }
105 if (start >= list.size()) {
106 index = 0;
107 repaginate();
108 } else if (start < 0) {
109 index = list.size() / pageSize;
110 if (list.size() % pageSize == 0) {
111 index--;
112 }
113 repaginate();
114 } else {
115 page = list.subList(start, end + 1);
116 }
117 }
118 }
119
120
121
122 @Deprecated
123 @Override
124 public int size() {
125 return page.size();
126 }
127
128 @Deprecated
129 @Override
130 public boolean isEmpty() {
131 return page.isEmpty();
132 }
133
134 @Deprecated
135 @Override
136 public boolean contains(Object o) {
137 return page.contains(o);
138 }
139
140 @Deprecated
141 @Override
142 public Iterator iterator() {
143 return page.iterator();
144 }
145
146 @Deprecated
147 @Override
148 public Object[] toArray() {
149 return page.toArray();
150 }
151
152 @Deprecated
153 @Override
154 public Object[] toArray(Object a[]) {
155 return page.toArray(a);
156 }
157
158 @Deprecated
159 @Override
160 public boolean containsAll(Collection c) {
161 return page.containsAll(c);
162 }
163
164 @Deprecated
165 @Override
166 public Object get(int index) {
167 return page.get(index);
168 }
169
170 @Deprecated
171 @Override
172 public int indexOf(Object o) {
173 return page.indexOf(o);
174 }
175
176 @Deprecated
177 @Override
178 public int lastIndexOf(Object o) {
179 return page.lastIndexOf(o);
180 }
181
182 @Deprecated
183 @Override
184 public ListIterator listIterator() {
185 return page.listIterator();
186 }
187
188 @Deprecated
189 @Override
190 public ListIterator listIterator(int index) {
191 return page.listIterator(index);
192 }
193
194 @Deprecated
195 @Override
196 public List subList(int fromIndex, int toIndex) {
197 return page.subList(fromIndex, toIndex);
198 }
199
200
201
202 @Deprecated
203 @Override
204 public boolean add(Object o) {
205 boolean b = list.add(o);
206 repaginate();
207 return b;
208 }
209
210 @Deprecated
211 @Override
212 public boolean remove(Object o) {
213 boolean b = list.remove(o);
214 repaginate();
215 return b;
216 }
217
218 @Deprecated
219 @Override
220 public boolean addAll(Collection c) {
221 boolean b = list.addAll(c);
222 repaginate();
223 return b;
224 }
225
226 @Deprecated
227 @Override
228 public boolean addAll(int index, Collection c) {
229 boolean b = list.addAll(index, c);
230 repaginate();
231 return b;
232 }
233
234 @Deprecated
235 @Override
236 public boolean removeAll(Collection c) {
237 boolean b = list.removeAll(c);
238 repaginate();
239 return b;
240 }
241
242 @Deprecated
243 @Override
244 public boolean retainAll(Collection c) {
245 boolean b = list.retainAll(c);
246 repaginate();
247 return b;
248 }
249
250 @Deprecated
251 @Override
252 public void clear() {
253 list.clear();
254 repaginate();
255 }
256
257 @Deprecated
258 @Override
259 public Object set(int index, Object element) {
260 Object o = list.set(index, element);
261 repaginate();
262 return o;
263 }
264
265 @Deprecated
266 @Override
267 public void add(int index, Object element) {
268 list.add(index, element);
269 repaginate();
270 }
271
272 @Deprecated
273 @Override
274 public Object remove(int index) {
275 Object o = list.remove(index);
276 repaginate();
277 return o;
278 }
279
280
281
282 @Deprecated
283 @Override
284 public int getPageSize() {
285 return pageSize;
286 }
287
288 @Deprecated
289 @Override
290 public boolean isFirstPage() {
291 return index == 0;
292 }
293
294 @Deprecated
295 @Override
296 public boolean isMiddlePage() {
297 return !isFirstPage() && !isLastPage();
298 }
299
300 @Deprecated
301 @Override
302 public boolean isLastPage() {
303 return list.size() - (index + 1) * pageSize < 1;
304 }
305
306 @Deprecated
307 @Override
308 public boolean isNextPageAvailable() {
309 return !isLastPage();
310 }
311
312 @Deprecated
313 @Override
314 public boolean isPreviousPageAvailable() {
315 return !isFirstPage();
316 }
317
318 @Deprecated
319 @Override
320 public boolean nextPage() {
321 if (isNextPageAvailable()) {
322 index++;
323 repaginate();
324 return true;
325 }
326 return false;
327 }
328
329 @Deprecated
330 @Override
331 public boolean previousPage() {
332 if (isPreviousPageAvailable()) {
333 index--;
334 repaginate();
335 return true;
336 }
337 return false;
338 }
339
340 @Deprecated
341 @Override
342 public void gotoPage(int pageNumber) {
343 index = pageNumber;
344 repaginate();
345 }
346
347 @Deprecated
348 @Override
349 public int getPageIndex() {
350 return index;
351 }
352
353 }