/** * Handles the results pagination * * @author Coni * @param request * @param command * @return * @throws BusinessException */ private ModelAndView handlePagination( HttpServletRequest request, ArrayList<String> errorMessages, Object command) throws BusinessException { logger.debug("handlePagination - START"); ModelAndView mav = new ModelAndView(getSuccessView()); SearchExchangeBean searchExchangeBean = (SearchExchangeBean) command; UserAuth userAuth = (UserAuth) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); try { if (request.getParameter(PAGE) != null) { if (NEXT.equals(request.getParameter(PAGE))) { searchExchangeBean.setCurrentPage(searchExchangeBean.getCurrentPage() + 1); } if (PREV.equals(request.getParameter(PAGE))) { searchExchangeBean.setCurrentPage(searchExchangeBean.getCurrentPage() - 1); } if (FIRST.equals(request.getParameter(PAGE))) { searchExchangeBean.setCurrentPage(1); } if (LAST.equals(request.getParameter(PAGE))) { searchExchangeBean.setCurrentPage(searchExchangeBean.getNbrOfPages()); } if (NUMBER.equals(request.getParameter(PAGE))) { if (request.getParameter(PAGE_NBR) != null && !"".equals(request.getParameter(PAGE_NBR))) { searchExchangeBean.setCurrentPage(Integer.parseInt(request.getParameter(PAGE_NBR))); } else { // something is wrong // I will show the first page searchExchangeBean.setCurrentPage(-1); } } } } catch (Exception e) { // something is wrong // I will show the first page logger.error(PAGINATION_ERROR, e); searchExchangeBean.setCurrentPage(-1); } List<Exchange> res = null; try { res = BLExchange.getInstance().getResultsForSearch(searchExchangeBean, false); DecimalFormat dfReal = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH); dfReal.applyPattern("# ### ### ##0.0000"); DecimalFormat dfInt = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH); dfInt.applyPattern("# ### ### ###"); // set the exchange info panel header name for (Exchange exchange : res) { String headerName = exchange .getFirstCurrency() .getInitials() .concat(" - ") .concat(exchange.getSecondCurrency().getInitials()); String panelHeaderName = ControllerUtils.getInstance().truncateName(headerName, NR_CHARS_PANEL_HEADER); exchange.setPanelHeaderName(panelHeaderName); if ((exchange.getRate() * 10) % 10 != 0) { exchange.setFormattedRate(dfReal.format(exchange.getRate())); } else { exchange.setFormattedRate(dfInt.format(exchange.getRate())); } } mav.addObject(SEARCH_RESULTS, res); } catch (BusinessException be) { logger.error(be.getMessage(), be); mav = new ModelAndView(IConstant.FORM_VIEW_MESSAGES); errorMessages.add( messageSource.getMessage( SEARCH_ERROR, new Object[] {be.getCode(), ControllerUtils.getInstance().getFormattedCurrentTime()}, RequestContextUtils.getLocale(request))); } catch (Exception e) { logger.error("", e); mav = new ModelAndView(IConstant.FORM_VIEW_MESSAGES); errorMessages.add( messageSource.getMessage( SEARCH_ERROR, new Object[] {ControllerUtils.getInstance().getFormattedCurrentTime()}, RequestContextUtils.getLocale(request))); } mav.addObject(SEARCH_RESULTS, res); // find the number of pages shown in pagination area ControllerUtils.getInstance().findPagesLimit(searchExchangeBean, PAGES); mav.addObject(SEARCH_EXCHANGE_BEAN, searchExchangeBean); mav.addObject(COMMAND, command); logger.debug("handlePagination - END"); return mav; }