123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package com.shawn.util;
- import com.shawn.web.exception.ParameterIllegalException;
- /**
- * @author 吴洪双
- */
- public class PageUtil {
- /**
- * Calculate offset for LIMIT clause in SQL. If page < 1, it will return 0.
- *
- * @param page page number
- * @param perPage size of per page
- * @return offset
- */
- public static int calculateOffset(int page, int perPage) {
- return calculateOffset(page, perPage, 0);
- }
- /**
- * Calculate offset for LIMIT clause in SQL. If page < 1, it will return defaultValue.
- *
- * @param page page number
- * @param perPage size of per page
- * @param defaultValue default return value, if page < 1
- * @return offset
- */
- public static int calculateOffset(int page, int perPage, int defaultValue) {
- return page < 1 ? defaultValue : (page - 1) * perPage;
- }
- /**
- * Calculate total number of pages.
- *
- * @param rowCount count of rows
- * @param perPage size of per page
- * @return total number of pages
- */
- public static int calculateTotalPage(int rowCount, int perPage) {
- return (rowCount % perPage == 0) ? (rowCount / perPage) : (rowCount / perPage + 1);
- }
- /**
- * Parse page from String to int.
- *
- * @param pageString origin
- * @param defaultValue default page, if pageString == null
- * @return parsed page
- */
- public static int parsePage(String pageString, int defaultValue) {
- return parseParameter(pageString, defaultValue);
- }
- /**
- * Parse size of per page from String to int.
- *
- * @param perPageString origin
- * @param defaultValue default size of per page, if perPageString == null
- * @return parsed size of per page
- */
- public static int parsePerPage(String perPageString, int defaultValue) {
- return parsePage(perPageString, defaultValue);
- }
- public static int parsePerPage(Integer perPageInteger, int defaultValue) {
- return parsePage(perPageInteger.toString(), defaultValue);
- }
-
- public static int parseOffset(String offsetString, int defaultValue) {
- return parsePage(offsetString, defaultValue);
- }
- public static int parseOffset(Integer offsetInteger, int defaultValue) {
- return parsePage(offsetInteger.toString(), defaultValue);
- }
- /**
- * A helper method, parsing parameter about pagination.
- * If the string is null, return the default value.
- * If the string is not a number or the number < 1,
- * throw a parameter illegal exception.
- *
- * @param parameterString origin
- * @param defaultValue default value, if parameterString == null
- * @return parsed parameter
- */
- private static int parseParameter(String parameterString, int defaultValue) {
- if (parameterString == null) {
- return defaultValue;
- }
- int parameter;
- try {
- parameter = Integer.parseInt(parameterString);
- } catch (Exception e) {
- throw new ParameterIllegalException();
- }
- if (parameter < 0) {
- throw new ParameterIllegalException();
- }
- return parameter;
- }
- }
|