private void updatePageRenderSequences(List<PageUser> pages) { if (pages != null && !pages.isEmpty()) { for (int i = 0; i < pages.size(); i++) { PageUser p = pages.get(i); p.setRenderSequence((long)i+1); } for (PageUser page : pages) { pageRepository.save(page.getPage()); } } }
private void updateProperties(PageUser source, JpaPageUser converted) { converted.setEntityId(source.getId() == null ? null : Long.parseLong(source.getId())); converted.setPage(source.getPage()); converted.setPageStatus(source.getPageStatus()); converted.setRenderSequence(source.getRenderSequence()); converted.setUserId(source.getUserId()); converted.setEditor(source.isEditor()); } }
private Page doMovePage(String pageId, String moveAfterPageId) { // get the logged in user User user = userService.getAuthenticatedUser(); // get the page to move and the page to move after PageUser movingPageUser = pageRepository.getSingleRecord(user.getId(), pageId); PageUser afterPageUser = null; int newIndex = 0; // check to see if we should move the page to beginning if (moveAfterPageId != MOVE_PAGE_DEFAULT_POSITION_INDEX) { afterPageUser = pageRepository.getSingleRecord(user.getId(), moveAfterPageId); } // get all of the user's pages // the pageRepository returns an un-modifiable list // so we need to create a modifyable arraylist List<PageUser> thisUsersPages = new ArrayList<PageUser>(pageRepository.getPagesForUser(user.getId(), PageType.USER.toString())); // first remove it from the list if (!thisUsersPages.remove(movingPageUser)) { throw new RuntimeException("unable to find pageId " + pageId + " attempted to be moved for user " + user); } if (afterPageUser != null) { newIndex = thisUsersPages.indexOf(afterPageUser) + 1; } thisUsersPages.add(newIndex, movingPageUser); // persist the new page order updatePageRenderSequences(thisUsersPages); return movingPageUser.getPage(); }