private void replaceRegionWidget(String regionWidgetId, int newPosition, Region target, Region source) { RegionWidget widget = findRegionWidgetById(regionWidgetId, source.getRegionWidgets()); source.getRegionWidgets().remove(widget); target.getRegionWidgets().add(newPosition, widget); }
private List<RegionWidget> createRegionWidgets(org.apache.rave.model.Region source) { List<RegionWidget> created = null; List<org.apache.rave.model.RegionWidget> widgets = source.getRegionWidgets(); if(widgets != null) { created = new ArrayList<RegionWidget>(); for(org.apache.rave.model.RegionWidget widget : widgets) { created.add(new RegionWidget(widget)); } } return created; } }
private static void modifyForExport(Region r) { for(RegionWidget w : r.getRegionWidgets()) { w.setPreferences(null); } } }
/** * Utility function to move a RegionWidget to a new Region * * @param regionWidget the RegionWidget to move * @param moveToRegion the new Region to move it to */ private void moveRegionWidgetToNewRegion(RegionWidget regionWidget, Region moveToRegion) { List<RegionWidget> regionWidgets = moveToRegion.getRegionWidgets(); int renderOrder = regionWidgets.isEmpty() ? 1 : regionWidgets.get(regionWidgets.size()-1).getRenderOrder() + 1; regionWidget.setRegion(moveToRegion); regionWidget.setRenderOrder(renderOrder); moveToRegion.getRegionWidgets().add(regionWidget); }
private void moveWithinRegion(String regionWidgetId, int newPosition, Region target) { replaceRegionWidget(regionWidgetId, newPosition, target, target); updateRenderSequences(target.getRegionWidgets()); }
private void moveBetweenRegions(String regionWidgetId, int newPosition, String fromRegion, Region target) { Region source = getFromRepository(fromRegion, regionRepository); replaceRegionWidget(regionWidgetId, newPosition, target, source); updateRenderSequences(source.getRegionWidgets()); updateRenderSequences(target.getRegionWidgets()); regionRepository.save(source); }
/*** * Utility function to reduce the regions for a page and move any RegionWidgets * in the Regions getting removed into the region with the largest * remaining render sequence value * * @param page the Page to remove Regions from * @param numberOfRegionsInNewLayout the number of regions in the new layout */ private void reduceRegionsForPage(Page page, long numberOfRegionsInNewLayout) { List<Region> regions = page.getRegions(); Region lastValidRegion = regions.get((int) (numberOfRegionsInNewLayout-1)); //remove all of the extra regions for this new layout and append the widgets while (regions.size() > numberOfRegionsInNewLayout) { Region deletedRegion = regions.remove(regions.size()-1); //append the regions widgets to to last valid region in the new layout for (RegionWidget widget : deletedRegion.getRegionWidgets()) { moveRegionWidgetToNewRegion(widget, lastValidRegion); } regionRepository.delete(deletedRegion); } regionRepository.save(lastValidRegion); }
private RegionWidget createWidgetInstance(Widget widget, Region region, int position) { RegionWidget regionWidget = new RegionWidgetImpl(); regionWidget.setRenderOrder(position); regionWidget.setWidgetId(widget.getId()); // TODO: setLocked and setHideChrome are hard-coded to false for new widgets manually added by users // which makes sense for most default cases. However should we change them to a customizable property // to allow for more flexibility? regionWidget.setLocked(false); regionWidget.setHideChrome(false); regionWidget.setRegion(region); region.getRegionWidgets().add(position, regionWidget); updateRenderSequences(region.getRegionWidgets()); Region persistedRegion = regionRepository.save(region); return persistedRegion.getRegionWidgets().get(position); }
@Override @Transactional public RegionWidget moveRegionWidgetToPage(String regionWidgetId, String toPageId) { // Get the new page Page toPage = getFromRepository(toPageId, pageRepository); // Get the region widget RegionWidget regionWidget = getFromRepository(regionWidgetId, regionWidgetRepository); Region moveFromRegion = regionWidget.getRegion(); // Move it to first position of the first region Region moveToRegion = toPage.getRegions().get(0); // verify the region widget, source, and target regions not locked verifyRegionWidgetIsNotLocked(regionWidget); verifyRegionIsNotLocked(moveToRegion); regionWidget.setRenderOrder(0); regionWidget.setRegion(moveToRegion); moveToRegion.getRegionWidgets().add(0, regionWidget); //remove it from the old region moveFromRegion.getRegionWidgets().remove(regionWidget); // update the rendersequences of the widgets in this region updateRenderSequences(moveToRegion.getRegionWidgets()); updateRenderSequences(moveFromRegion.getRegionWidgets()); // persist it regionRepository.save(moveToRegion); regionRepository.save(moveFromRegion); return getFromRepository(regionWidgetId, regionWidgetRepository); }
@Override @Transactional public RegionWidget moveRegionWidget(String regionWidgetId, int newPosition, String toRegionId, String fromRegionId) { Region target = getFromRepository(toRegionId, regionRepository); // verify that the target Region and the RegionWidget are not locked and can be modified RegionWidget regionWidget = regionWidgetRepository.get(regionWidgetId); verifyRegionWidgetIsNotLocked(regionWidget); verifyRegionIsNotLocked(target); if (toRegionId.equals(fromRegionId)) { moveWithinRegion(regionWidgetId, newPosition, target); } else { moveBetweenRegions(regionWidgetId, newPosition, fromRegionId, target); } target = regionRepository.save(target); return findRegionWidgetById(regionWidgetId, target.getRegionWidgets()); }
@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; } }
public void buildModel(Page page, String omdlUrl, String wookieUrl) { this.wookieUrl = wookieUrl; OmdlWidget omdlWidget = null; this.status = new Status(OmdlModelUtils.getDate(), DEFAULT_STATUS); this.page = page; this.identifier = omdlUrl; this.title = page.getName(); this.description = DEFAULT_DESCRIPTION; this.creator = getCreator(page); this.date = OmdlModelUtils.getDate(); this.layout = OmdlModelUtils.getOmdlLayoutForExport(page.getPageLayout().getCode()); widgetsList = new ArrayList<OmdlWidget>(); for(int i=0;i<page.getRegions().size(); i++){ for(int j=0;j<page.getRegions().get(i).getRegionWidgets().size();j++){ Widget widget = widgetService.getWidget(page.getRegions().get(i).getRegionWidgets().get(j).getWidgetId()); omdlWidget = new OmdlWidget(); omdlWidget.setUrl(widget.getUrl()); omdlWidget.setLink(createLinkElement(widget.getType(), widget.getUrl())); // figure out what positioning to use for this widget String position = OmdlModelUtils.getPositionString(i+1, page.getRegions().size(), j+1, page.getRegions().get(i).getRegionWidgets().size()); if(position != null && position !=""){ omdlWidget.setPosition(position); } omdlWidget.setWidgetType(UNKNOWN_VALUE); widgetsList.add(omdlWidget); } } }
private void updateProperties(Region source, JpaRegion converted) { converted.setEntityId(source.getId() == null ? null : Long.parseLong(source.getId())); converted.setLocked(source.isLocked()); converted.setPage(source.getPage()); converted.setRegionWidgets(source.getRegionWidgets()); converted.setRenderOrder(source.getRenderOrder()); } }
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()); }