private void replacePageReferences(Page source, JpaPage converted) { if (source.getMembers() != null) { for (PageUser user : source.getMembers()) { user.setPage(converted); } } } }
private List<PageUser> createPageUsers(org.apache.rave.model.Page source) { List<PageUser> created =null; List<org.apache.rave.model.PageUser> members = source.getMembers(); if(members != null) { created = new ArrayList<PageUser>(); for(org.apache.rave.model.PageUser member : members) { created.add(new PageUser(member)); } } return created; } }
@Override public int compare(Page o1, Page o2) { if (o1 == null || o1.getMembers() == null || o1.getMembers().isEmpty()) { return 1; } if (o2 == null || o2.getMembers() == null || o2.getMembers().isEmpty()) { return -1; } Long o1RenderSequence = null; Long o2RenderSequence = null; // find the PageUser object representing the sub page owned by the user for (PageUser pageUser : o1.getMembers()) { if (pageUser.getUserId().equals(o1.getOwnerId())) { o1RenderSequence = pageUser.getRenderSequence(); break; } } // find the PageUser object representing the sub page owned by the user for (PageUser pageUser : o2.getMembers()) { if (pageUser.getUserId().equals(o2.getOwnerId())) { o2RenderSequence = pageUser.getRenderSequence(); break; } } // compare the renderSequences of these two PageUser objects to determine the sort order return o1RenderSequence.compareTo(o2RenderSequence); } }
@Override public int deletePages(String userId, String pageType) { List<Page> pages = getAllPagesForUserType(userId, pageType); int pageCount = pages.size(); for(Page page : pages) { if(page.getOwnerId().equals(userId)){ delete(page); }else{ // remove any pageUser entries for this user on // this page as it is a shared page PageUser pageUserToRemove = null; for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(userId)){ pageUserToRemove = pageUser; break; } } if(pageUserToRemove != null){ page.getMembers().remove(pageUserToRemove); save(page); } } } return pageCount; }
@Transactional public Boolean removeMemberFromPage(String pageId, String userId){ Page page = this.getPage(pageId); if(page.getOwnerId().equals(userId)){ // If I am the owner, this page has been cloned // Declining a cloned page means there is no need to strip // out this users pageUser object, instead remove the page itself // which also removes the pageUser object further down the stack pageRepository.delete(page); return true; } PageUser pageUserToRemove = null; for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(userId)){ pageUserToRemove = pageUser; break; } } if(pageUserToRemove != null){ page.getMembers().remove(pageUserToRemove); if(pageRepository.save(page) != null){ return Boolean.TRUE; }else{ return Boolean.FALSE; } } return false; }
@Override @Transactional public Boolean updateSharedPageStatus(String pageId, String userId, String shareStatus) { Page page = this.getPage(pageId); for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(userId)){ pageUser.setPageStatus(PageInvitationStatus.get(shareStatus)); } } if(pageRepository.save(page) != null){ return Boolean.TRUE; }else{ return Boolean.FALSE; } }
@Override @Transactional public Boolean updatePageEditingStatus(String pageId, String userId, boolean isEditor) { Page page = this.getPage(pageId); for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(userService.getUserById(userId).getId())){ pageUser.setEditor(isEditor); } } if(pageRepository.save(page) != null){ return Boolean.TRUE; }else{ return Boolean.FALSE; } }
@Override @Transactional public Boolean updateSharedPageStatus(String pageId, String shareStatus) { Page page = this.getPage(pageId); for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(userService.getAuthenticatedUser().getId())){ pageUser.setPageStatus(PageInvitationStatus.get(shareStatus)); } } if(pageRepository.save(page) != null){ return Boolean.TRUE; }else{ return Boolean.FALSE; } }
private boolean isRegionMember(Authentication authentication, Region region, List<Region> trustedRegionContainer, boolean trustedDomainObject, boolean checkEditorStatus) { Region trustedRegion = null; if (trustedDomainObject) { trustedRegion = region; } else { trustedRegion = getTrustedRegion(region.getId(), trustedRegionContainer); } Page containerPage = trustedRegion.getPage(); if (containerPage.getMembers() == null){ return false; } // // Check that the viewer is a member // String viewer = ((User)authentication.getPrincipal()).getUsername(); for (PageUser pageUser:containerPage.getMembers()){ if (userRepository.get(pageUser.getUserId()).getUsername().equals(viewer)){ log.info("User "+viewer+" is a member of page "+containerPage.getId()); if(checkEditorStatus){ return pageUser.isEditor(); } return true; } } return false; }
private List<Page> getAllPagesForAuthenticatedUser() { User user = userService.getAuthenticatedUser(); String userId = user.getId(); List<Page> pages = pageService.getAllUserPages(userId); // we add pages to this list which the corresponding pageUser object is not set to "refused" List<Page> viewablePages = new ArrayList<Page>(); for(Page page : pages){ for(PageUser pageUser : page.getMembers()){ if(pageUser != null && pageUser.getUserId().equals(user.getId()) && !pageUser.getPageStatus().equals(PageInvitationStatus.REFUSED)){ viewablePages.add(page); } } } if (viewablePages.isEmpty()) { // create a new default page for the user logger.info("User {} does not have any pages - creating default page", user.getUsername()); pageService.addNewDefaultUserPage(userId); // refresh the pages list which will now have the new page viewablePages = pageService.getAllUserPages(userId); } return viewablePages; }
if (trustedPage.getMembers() == null){ return false; List<PageUser> members = trustedPage.getMembers(); if (members != null) { for (PageUser pageUser : members){
if (containerPage.getMembers() == null){ return false; for (PageUser pageUser:containerPage.getMembers()){ if (userRepository.get(pageUser.getUserId()).getUsername().equals(viewer)){ log.info("User "+viewer+" is a member of page "+containerPage.getId());
@Transactional public Boolean addMemberToPage(String pageId, String userId){ Page page = getPage(pageId); PageUser pageUser = new PageUserImpl(); pageUser.setUserId(userService.getUserById(userId).getId()); pageUser.setPage(page); pageUser.setPageStatus(PageInvitationStatus.PENDING); List<PageUser> thisUsersPages = pageRepository.getPagesForUser(userService.getUserById(userId).getId(), PageType.USER.toString()); pageUser.setRenderSequence(new Long(thisUsersPages.size() + 1)); page.getMembers().add(pageUser); if(pageRepository.save(page) != null){ return Boolean.TRUE; }else{ return Boolean.FALSE; } }
@Transactional public Boolean clonePageForUser(String pageId, String userId, String pageName) { Page page = getPage(pageId); if(pageName == null || pageName.equals("null")){ // try to use the original page name if none supplied pageName = page.getName(); } Page clonedPage = addNewUserPage(userService.getUserById(userId), pageName, page.getPageLayout().getCode()); // populate all the widgets in cloned page from original for(int i=0; i<page.getRegions().size(); i++){ for(int j=0; j<page.getRegions().get(i).getRegionWidgets().size(); j++){ String widgetId = page.getRegions().get(i).getRegionWidgets().get(j).getWidgetId(); addWidgetToPageRegion(clonedPage.getId(), widgetId, clonedPage.getRegions().get(i).getId()); } } clonedPage = getFromRepository(clonedPage.getId(), pageRepository); // newly created page - so only one pageUser PageUser pageUser = clonedPage.getMembers().get(0); // update status to pending pageUser.setPageStatus(PageInvitationStatus.PENDING); if(pageRepository.save(clonedPage) != null){ return Boolean.TRUE; }else{ return Boolean.FALSE; } }
@RequestMapping(value = "/page/view/{pageId}", method = RequestMethod.GET) public String view(@PathVariable String pageId, Model model, HttpServletRequest request) { try { List<Page> pages = getAllPagesForAuthenticatedUser(); Page page = pageService.getPageFromList(pageId, pages); PageUser currentPageUser = null; User thisUser = userService.getAuthenticatedUser(); for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(thisUser.getId())){ currentPageUser = pageUser; } } List<PageLayout> pageLayouts = pageLayoutService.getAllUserSelectable(); addAttributesToModel(model, page, currentPageUser, pages, pageLayouts); String view = ControllerUtils.getDeviceAppropriateView(request, ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME); ControllerUtils.addNavItemsToModel(view, model, page.getId(), thisUser, currentPageUser.isEditor()); return view; } catch (Exception e) { logger.info("unable to get page - possibly because a shared page was revoked by its owner"); } // Page could not be found or a shared page was removed, in which case return to default view return viewDefault(model, request); }
@RequestMapping(value = {"/page/view", "/index.html"}, method = RequestMethod.GET) public String viewDefault(Model model, HttpServletRequest request) { List<Page> pages = getAllPagesForAuthenticatedUser(); Page page = pageService.getDefaultPageFromList(pages); PageUser currentPageUser = null; User thisUser = userService.getAuthenticatedUser(); for(PageUser pageUser : page.getMembers()){ if(pageUser.getUserId().equals(thisUser.getId())){ currentPageUser = pageUser; } } List<PageLayout> pageLayouts = pageLayoutService.getAllUserSelectable(); addAttributesToModel(model, page, currentPageUser, pages, pageLayouts); String view = ControllerUtils.getDeviceAppropriateView(request, ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME); ControllerUtils.addNavItemsToModel(view, model, page.getId(), userService.getAuthenticatedUser(), currentPageUser.isEditor()); return view; }
private void updatePage(Map<String, User> usersByOriginalId, Map<String, Widget> widgetsById, Page page) { for (Region region : page.getRegions()) { region.setPage(page); setIdViaReflection(region, null); for (RegionWidget widget : region.getRegionWidgets()) { widget.setRegion(region); Widget fromDb = widgetsById.get(widget.getId()); if (fromDb != null) { widget.setWidgetId(fromDb.getId()); } setIdViaReflection(widget, null); } } for (PageUser user : page.getMembers()) { user.setPage(page); setIdViaReflection(user, null); User fromDb = usersByOriginalId.get(user.getUserId()); if (fromDb != null) { user.setUserId(fromDb.getId()); } } User user = usersByOriginalId.get(page.getOwnerId()); page.setOwnerId(user.getId()); }
private void updateProperties(Page source, JpaPage converted) { replacePageReferences(source, converted); converted.setId(source.getId()); converted.setMembers(source.getMembers()); converted.setName(source.getName()); converted.setOwnerId(source.getOwnerId()); converted.setContextId(source.getContextId()); converted.setPageLayout(source.getPageLayout()); converted.setPageType(source.getPageType()); converted.setParentPage(source.getParentPage()); converted.setRegions(source.getRegions()); converted.setSubPages(source.getSubPages()); converted.setProperties(source.getProperties()); }