PageUtil.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.shawn.util;
  2. import com.shawn.web.exception.ParameterIllegalException;
  3. /**
  4. * @author 吴洪双
  5. */
  6. public class PageUtil {
  7. /**
  8. * Calculate offset for LIMIT clause in SQL. If page < 1, it will return 0.
  9. *
  10. * @param page page number
  11. * @param perPage size of per page
  12. * @return offset
  13. */
  14. public static int calculateOffset(int page, int perPage) {
  15. return calculateOffset(page, perPage, 0);
  16. }
  17. /**
  18. * Calculate offset for LIMIT clause in SQL. If page < 1, it will return defaultValue.
  19. *
  20. * @param page page number
  21. * @param perPage size of per page
  22. * @param defaultValue default return value, if page < 1
  23. * @return offset
  24. */
  25. public static int calculateOffset(int page, int perPage, int defaultValue) {
  26. return page < 1 ? defaultValue : (page - 1) * perPage;
  27. }
  28. /**
  29. * Calculate total number of pages.
  30. *
  31. * @param rowCount count of rows
  32. * @param perPage size of per page
  33. * @return total number of pages
  34. */
  35. public static int calculateTotalPage(int rowCount, int perPage) {
  36. return (rowCount % perPage == 0) ? (rowCount / perPage) : (rowCount / perPage + 1);
  37. }
  38. /**
  39. * Parse page from String to int.
  40. *
  41. * @param pageString origin
  42. * @param defaultValue default page, if pageString == null
  43. * @return parsed page
  44. */
  45. public static int parsePage(String pageString, int defaultValue) {
  46. return parseParameter(pageString, defaultValue);
  47. }
  48. /**
  49. * Parse size of per page from String to int.
  50. *
  51. * @param perPageString origin
  52. * @param defaultValue default size of per page, if perPageString == null
  53. * @return parsed size of per page
  54. */
  55. public static int parsePerPage(String perPageString, int defaultValue) {
  56. return parsePage(perPageString, defaultValue);
  57. }
  58. public static int parsePerPage(Integer perPageInteger, int defaultValue) {
  59. return parsePage(perPageInteger.toString(), defaultValue);
  60. }
  61. public static int parseOffset(String offsetString, int defaultValue) {
  62. return parsePage(offsetString, defaultValue);
  63. }
  64. public static int parseOffset(Integer offsetInteger, int defaultValue) {
  65. return parsePage(offsetInteger.toString(), defaultValue);
  66. }
  67. /**
  68. * A helper method, parsing parameter about pagination.
  69. * If the string is null, return the default value.
  70. * If the string is not a number or the number < 1,
  71. * throw a parameter illegal exception.
  72. *
  73. * @param parameterString origin
  74. * @param defaultValue default value, if parameterString == null
  75. * @return parsed parameter
  76. */
  77. private static int parseParameter(String parameterString, int defaultValue) {
  78. if (parameterString == null) {
  79. return defaultValue;
  80. }
  81. int parameter;
  82. try {
  83. parameter = Integer.parseInt(parameterString);
  84. } catch (Exception e) {
  85. throw new ParameterIllegalException();
  86. }
  87. if (parameter < 0) {
  88. throw new ParameterIllegalException();
  89. }
  90. return parameter;
  91. }
  92. }