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()); } }
@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; } }
@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; } }
public PageUser(org.apache.rave.model.PageUser member) { this.editor = member.isEditor(); this.personId = member.getUserId(); this.status = member.getPageStatus().getPageStatus(); }
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()); } } }
if (members != null) { for (PageUser pageUser : members){ if (userRepository.get(pageUser.getUserId()).getUsername().equals(viewer)){ log.info("User "+viewer+" is a member of page "+trustedPage.getId()); if(checkEditorStatus){ log.info("checking editor:"+trustedPage.getId()+"@"+viewer+"@"+pageUser.isEditor()); return pageUser.isEditor();
pageUser.setPageStatus(PageInvitationStatus.OWNER); pageUser.setEditor(true); List<PageUser> members = new ArrayList<PageUser>(); members.add(pageUser);
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()); }
@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; } }
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; }
@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 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; } }
private void replacePageReferences(Page source, JpaPage converted) { if (source.getMembers() != null) { for (PageUser user : source.getMembers()) { user.setPage(converted); } } } }
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(); }
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; }
page.setPageLayout(pageLayout); PageUser pageUser = new PageUserImpl(page.getOwnerId(), page, renderSequence); pageUser.setPageStatus(PageInvitationStatus.OWNER); pageUser.setEditor(true);
@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; } }
@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; }