@RequestMapping(value = "/admin/blogsearch", method = RequestMethod.GET) public String blogSearch( @RequestParam(value = "keyword", defaultValue = "") String keyword, @RequestParam(value = "page", defaultValue = "1") Integer pageNum, ModelMap model) { if (keyword.equals("")) { ListResult<Blog> listResult = getBlogsByPage(1, 3); model.addAttribute("listOfBlogs", listResult.getFetchedList()); model.addAttribute("totalPage", listResult.getTotalPage()); model.addAttribute("currentPage", listResult.getCurrentPage()); return "admin"; } else { logger.info("enter blog search"); SearchResult<Blog> searchResult = blogService.searchBlogByPage((pageNum - 1) * 5, 5, keyword); int totalCount = searchResult.getTotalCount(); int totalPage = totalCount / 5 + (((totalCount % 5) == 0) ? 0 : 1); int currentPage = pageNum; List<Blog> listOfBlogs = searchResult.getFetchedList(); model.addAttribute("totalPage", totalPage); model.addAttribute("currentPage", currentPage); model.addAttribute("listOfBlogs", listOfBlogs); model.addAttribute("keyword", keyword); return "blogresult"; } }
@RequestMapping(value = "/admin", method = RequestMethod.GET) public String admin( @RequestParam(value = "page", defaultValue = "1") Integer pageNum, ModelMap model) { ListResult<Blog> listResult = getBlogsByPage(pageNum, 3); model.addAttribute("listOfBlogs", listResult.getFetchedList()); model.addAttribute("totalPage", listResult.getTotalPage()); model.addAttribute("currentPage", listResult.getCurrentPage()); return "admin"; }
@RequestMapping(value = "/admin/addblogaction", method = RequestMethod.POST) public String addblogaction(@ModelAttribute("blog") Blog blog, ModelMap model) { // TODO how to get blog from url?? Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String name = auth.getName(); logger.debug("name: " + name); blog.setInsertDate(new Timestamp(System.currentTimeMillis())); blog.setAuthor(name); blogService.insertBlog(blog); ListResult<Blog> listResult = getBlogsByPage(1, 3); model.addAttribute("listOfBlogs", listResult.getFetchedList()); model.addAttribute("totalPage", listResult.getTotalPage()); model.addAttribute("currentPage", listResult.getCurrentPage()); return "admin"; }
private ListResult<Blog> getBlogsByPage(int pageNum, int pageSize) { // List<Blog> listOfBlogs = blogService.listAllBlog(); int currentPage, totalPage, totalCount; // 1. get total count // 2. totalPage = total count / 3 + ((total count % 3) == 0) ? 0 : 1 // 3. currentPage = page, currentPage -> items?? // 4. select blog_id from blog order by insertDate desc => list // 5. list ( [currentPage-1)*3 + 1, (currentPage)*3 ] ) => (set of blog_id) // 6. select * from blog where blog_id in (set of blog_id) |||| in (?) a = ? List<Integer> orderedIdList = blogService.listAllBlogIds(); for (int id : orderedIdList) { logger.debug("order id: " + id); } totalCount = orderedIdList.size(); logger.info("total count: " + totalCount); totalPage = totalCount / pageSize + (((totalCount % pageSize) == 0) ? 0 : 1); currentPage = pageNum; List<Integer> selectedIdList = new ArrayList<Integer>(); for (int k = ((currentPage - 1) * 3); k < (currentPage) * 3; ++k) { selectedIdList.add(orderedIdList.get(k)); logger.debug("added id: " + orderedIdList.get(k)); } List<Blog> listOfBlogs = blogService.getSelectedBlogs(selectedIdList); for (Blog b : listOfBlogs) { logger.debug("returned id: " + b.getBlogId()); } logger.info("totalPage:" + totalPage); logger.info("currentPage: " + currentPage); logger.info("list of blogs size: " + listOfBlogs.size()); ListResult<Blog> listResult = new ListResult<>(); listResult.setTotalPage(totalPage); listResult.setFetchedList(listOfBlogs); listResult.setCurrentPage(currentPage); return listResult; }