1 package com.foxinmy.weixin4j.model.paging;
2
3 import java.io.Serializable;
4 import java.util.Iterator;
5 import java.util.List;
6
7 public class Pagedata<T> implements Serializable, Iterable<T> {
8
9 private static final long serialVersionUID = 163159826528502864L;
10
11 private final int total;
12 private final Pageable pageable;
13 private final List<T> content;
14
15 public Pagedata(Pageable pageable, int total, List<T> content) {
16 this.pageable = pageable;
17 this.total = total;
18 this.content = content;
19 }
20
21 public int getNumber() {
22 return pageable == null ? 0 : pageable.getPageNumber();
23 }
24
25 public int getSize() {
26 return pageable == null ? 0 : pageable.getPageSize();
27 }
28
29 public int getTotalPages() {
30 return getSize() == 0 ? 1 : (int) Math.ceil((double) total
31 / (double) getSize());
32 }
33
34 public int getTotalElements() {
35 return total;
36 }
37
38 public int getNumberOfElements() {
39 return hasContent() ? 0 : content.size();
40 }
41
42 public boolean hasContent() {
43 return content != null && !content.isEmpty();
44 }
45
46 public boolean hasPrevious() {
47 return pageable == null ? false : pageable.hasPrevious();
48 }
49
50 public boolean hasNext() {
51 return getNumber() + 1 < getTotalPages();
52 }
53
54 public Sort getSort() {
55 return pageable == null ? null : pageable.getSort();
56 }
57
58 public List<T> getContent() {
59 return content;
60 }
61
62 @Override
63 public Iterator<T> iterator() {
64 return hasContent() ? content.iterator() : null;
65 }
66
67 @Override
68 public String toString() {
69 return "Pagedata [total=" + total + ", pageable=" + pageable + "]";
70 }
71 }