OnePage.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. /**
  2. * 文件名:@OnePage.java <br/>
  3. * 包名:cn.efunbox.afw.core.domain.page <br/>
  4. * 项目名:afw-core <br/>
  5. * @author xtwin <br/>
  6. */
  7. package cn.efunbox.base.page;
  8. import java.io.Serializable;
  9. import java.util.Collections;
  10. import java.util.List;
  11. /**
  12. * 类名:OnePage <br />
  13. *
  14. * 功能:分页,一页
  15. *
  16. * @author xtwin <br />
  17. * 创建时间:2016年7月28日 上午11:26:12 <br />
  18. * @version 2016年7月28日
  19. */
  20. public class OnePage<E> implements Pageable<List<E>> ,Serializable {
  21. private static final long serialVersionUID = 1L;
  22. // 默认分页数据条数
  23. public final static int DEFAULT_PAGE_SIZE = 10;
  24. // 当前页
  25. private int pageNo = 1;
  26. // 当前页大小
  27. private int pageSize = DEFAULT_PAGE_SIZE;
  28. // 总条数
  29. private long totalSize;
  30. // 数据内容
  31. private List<E> list;
  32. /**
  33. * 构造方法
  34. */
  35. protected OnePage() {
  36. // 默认构造方法
  37. }
  38. /**
  39. * 构造方法
  40. */
  41. public OnePage(Long totalSize) {
  42. this(totalSize, null, null);
  43. }
  44. /**
  45. * 构造方法
  46. */
  47. public OnePage(Long totalSize, Integer pageNo) {
  48. this(totalSize, pageNo, null);
  49. }
  50. /**
  51. * 构造方法
  52. */
  53. public OnePage(Long totalSize, Integer pageNo, Integer pageSize) {
  54. // 总记录数
  55. if (null != totalSize) {
  56. if (totalSize < 0) {
  57. throw new RuntimeException("totalSize must be not less than zero!");
  58. }
  59. this.totalSize = totalSize;
  60. }
  61. // 当前页码
  62. if (null != pageNo) {
  63. if (pageNo < 0) {
  64. throw new RuntimeException("pageNo must be not less than zero!");
  65. }
  66. this.pageNo = pageNo;
  67. }
  68. // 当前页数据条数
  69. if (null != pageSize) {
  70. if (pageSize < 0) {
  71. throw new RuntimeException("pageSize must be not less than zero!");
  72. }
  73. this.pageSize = pageSize;
  74. }
  75. }
  76. /**
  77. * 功能: <br/>
  78. *
  79. * 重写:xtwin <br/>
  80. *
  81. * @version :2016年7月31日 上午9:27:27<br/>
  82. *
  83. * @return <br/>
  84. */
  85. @Override
  86. public int getTotalNo() {
  87. return totalSize == 0 ? 1 : (int) ((totalSize / pageSize) + (totalSize % pageSize == 0 ? 0 : 1));
  88. }
  89. /**
  90. * 功能: <br/>
  91. *
  92. * 重写:xtwin <br/>
  93. *
  94. * @version :2016年7月31日 上午9:27:27<br/>
  95. *
  96. * @return <br/>
  97. */
  98. @Override
  99. public long getTotalSize() {
  100. return totalSize;
  101. }
  102. /**
  103. * 功能: <br/>
  104. *
  105. * 重写:xtwin <br/>
  106. *
  107. * @version :2016年7月31日 上午9:27:27<br/>
  108. *
  109. * @return <br/>
  110. */
  111. @Override
  112. public int getPageNo() {
  113. return pageNo;
  114. }
  115. /**
  116. * 功能: <br/>
  117. *
  118. * 重写:xtwin <br/>
  119. *
  120. * @version :2016年7月31日 上午9:27:27<br/>
  121. *
  122. * @return <br/>
  123. */
  124. @Override
  125. public int getPageSize() {
  126. return pageSize;
  127. }
  128. /**
  129. * 功能: <br/>
  130. *
  131. * 重写:xtwin <br/>
  132. *
  133. * @version :2016年7月31日 上午9:27:27<br/>
  134. *
  135. * @return <br/>
  136. */
  137. @Override
  138. public boolean hasNext() {
  139. return getPageNo() < getTotalNo();
  140. }
  141. /**
  142. * 功能: <br/>
  143. *
  144. * 重写:xtwin <br/>
  145. *
  146. * @version :2016年7月31日 上午9:27:27<br/>
  147. *
  148. * @return <br/>
  149. */
  150. @Override
  151. public boolean hasPrevious() {
  152. return getPageNo() > 1;
  153. }
  154. /**
  155. * @version 2016年7月31日-上午10:57:49
  156. */
  157. public void setPageNo(int pageNo) {
  158. this.pageNo = pageNo;
  159. }
  160. /**
  161. * @version 2016年7月31日-上午10:57:49
  162. */
  163. public void setPageSize(int pageSize) {
  164. this.pageSize = pageSize;
  165. }
  166. /**
  167. * @version 2016年7月31日-上午10:57:49
  168. */
  169. public void setTotalSize(int totalSize) {
  170. /*if (totalSize < 0) {
  171. throw new AfwRuntimeException("totalSize must be not less than zero!");
  172. }*/
  173. this.totalSize = totalSize;
  174. }
  175. /**
  176. * 功能:bean规范 <br/>
  177. *
  178. * @author xtwin <br/>
  179. * @version 2016年7月31日 下午12:54:59 <br/>
  180. */
  181. public boolean isHasNext() {
  182. return hasNext();
  183. }
  184. /**
  185. * 功能:bean规范 <br/>
  186. *
  187. * @author xtwin <br/>
  188. * @version 2016年7月31日 下午12:55:22 <br/>
  189. */
  190. public boolean isHasPrevious() {
  191. return hasPrevious();
  192. }
  193. /**
  194. * @version 2016年8月1日-上午10:00:32
  195. */
  196. public void setList(List<E> list) {
  197. this.list = list;
  198. }
  199. /**
  200. * 功能: <br/>
  201. *
  202. * 重写:xtwin <br/>
  203. *
  204. * @version :2016年8月1日 上午9:49:32<br/>
  205. *
  206. * @return <br/>
  207. * @see Pageable#getList()
  208. */
  209. @Override
  210. public List<E> getList() {
  211. return null == list ? Collections.emptyList() : list;
  212. }
  213. /**
  214. * 功能: <br/>
  215. *
  216. * 重写:xtwin <br/>
  217. *
  218. * @version :2016年8月1日 上午10:05:48<br/>
  219. *
  220. * @return <br/>
  221. * @see Pageable#getStart()
  222. */
  223. @Override
  224. public long getStart() {
  225. return (getPageNo() - 1) * getPageSize();
  226. }
  227. }