You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2013/10/11 13:41:57 UTC
svn commit: r1531262 -
/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
Author: mfranklin
Date: Fri Oct 11 11:41:57 2013
New Revision: 1531262
URL: http://svn.apache.org/r1531262
Log:
Created conversion utility RAVE-1065
Added:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
Added: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java?rev=1531262&view=auto
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java (added)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java Fri Oct 11 11:41:57 2013
@@ -0,0 +1,139 @@
+package org.apache.rave.portal.util;
+
+
+import org.apache.rave.model.*;
+import org.apache.rave.portal.model.impl.PageImpl;
+import org.apache.rave.portal.model.impl.PageUserImpl;
+import org.apache.rave.portal.model.impl.RegionImpl;
+import org.apache.rave.portal.model.impl.RegionWidgetImpl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PageUtil {
+ private PageUtil() {}
+
+ /**
+ * Converts a PageTemplate to an instance of a Page
+ *
+ * @param template template
+ * @param owner owner of the new page
+ * @param createIds optionally set a negative ID as a relative reference
+ * @return
+ */
+ public static Page convert(PageTemplate template, User owner, boolean createIds) {
+ Page p = new PageImpl();
+ if(createIds) {
+ p.setId(String.valueOf(-1L));
+ }
+ p.setName(template.getName());
+ p.setPageType(template.getPageType());
+ p.setOwnerId(owner.getId());
+ PageUser pageUser = new PageUserImpl(owner.getId(), p, template.getRenderSequence());
+ pageUser.setPageStatus(PageInvitationStatus.OWNER);
+ pageUser.setEditor(true);
+ List<PageUser> members = new ArrayList<PageUser>();
+ members.add(pageUser);
+ p.setMembers(members);
+
+ p.setPageLayout(template.getPageLayout());
+ p.setRegions(convertRegions(template.getPageTemplateRegions(), p, createIds));
+ p.setSubPages(convertPages(template.getSubPageTemplates(), p, createIds));
+ return p;
+
+ }
+
+ /**
+ * convertRegions: List of PageTemplateRegion, Page -> List of Regions
+ * Converts the JpaRegion Templates of the Page Template to Regions for the page
+ *
+ * @param pageTemplateRegions List of PageTemplateRegion
+ * @param page Page
+ * @param createIds
+ * @return list of JpaRegion
+ */
+ private static List<Region> convertRegions(List<PageTemplateRegion> pageTemplateRegions, Page page, boolean createIds){
+ List<Region> regions = new ArrayList<Region>();
+ int idx = 0;
+ for (PageTemplateRegion ptr : pageTemplateRegions){
+ RegionImpl region = new RegionImpl();
+ if(createIds) {
+ region.setId(String.valueOf(--idx));
+ }
+ region.setRenderOrder((int) ptr.getRenderSequence());
+ region.setPage(page);
+ region.setLocked(ptr.isLocked());
+ region.setRegionWidgets(convertWidgets(ptr.getPageTemplateWidgets(), region, createIds));
+ regions.add(region);
+ }
+ return regions;
+ }
+
+ /**
+ * convertWidgets: List of PageTemplateWidget, JpaRegion -> List of RegionWidget
+ * Converts the Page Template Widgets to RegionWidgets for the given JpaRegion
+ *
+ * @param pageTemplateWidgets List of PageTemplateWidget
+ * @param region JpaRegion
+ * @param createIds
+ * @return List of RegionWidget
+ */
+ private static List<RegionWidget> convertWidgets(List<PageTemplateWidget> pageTemplateWidgets, Region region, boolean createIds){
+ List<RegionWidget> widgets = new ArrayList<RegionWidget>();
+ int idx=100 * Integer.parseInt(region.getId());
+ for (PageTemplateWidget ptw : pageTemplateWidgets){
+ RegionWidgetImpl regionWidget = new RegionWidgetImpl();
+ if(createIds) {
+ regionWidget.setId(String.valueOf(--idx));
+ }
+ regionWidget.setRegion(region);
+ regionWidget.setCollapsed(false);
+ regionWidget.setLocked(ptw.isLocked());
+ regionWidget.setHideChrome(ptw.isHideChrome());
+ regionWidget.setRenderOrder((int) ptw.getRenderSeq());
+ regionWidget.setWidgetId(ptw.getWidgetId());
+ widgets.add(regionWidget);
+ }
+ return widgets;
+ }
+
+ /**
+ * convertPages: List of PageTemplate, Page -> List of Page
+ * Converts the template subpages in to a list of Pages for the given page object
+ * This is a recursive function. A sub page could have a list of sub pages.
+ *
+ * @param pageTemplates List of PageTemplate
+ * @param page Page
+ * @param createIds
+ * @return list of Page
+ */
+ private static List<Page> convertPages(List<PageTemplate> pageTemplates, Page page, boolean createIds){
+ List<Page> pages = new ArrayList<Page>();
+ //Start at -1 since the first page is already set
+ int idx=-1;
+ for(PageTemplate pt : pageTemplates){
+ PageImpl lPage = new PageImpl();
+ if(createIds) {
+ lPage.setId(String.valueOf(--idx));
+ }
+ lPage.setName(pt.getName());
+ lPage.setPageType(pt.getPageType());
+ lPage.setOwnerId(page.getOwnerId());
+ lPage.setPageLayout(pt.getPageLayout());
+ lPage.setParentPage(page);
+ lPage.setRegions(convertRegions(pt.getPageTemplateRegions(), lPage, createIds));
+
+ // create new pageUser tuple
+ PageUser pageUser = new PageUserImpl(lPage.getOwnerId(), lPage, pt.getRenderSequence());
+ pageUser.setPageStatus(PageInvitationStatus.OWNER);
+ pageUser.setEditor(true);
+ List<PageUser> members = new ArrayList<PageUser>();
+ members.add(pageUser);
+ lPage.setMembers(members);
+ // recursive call
+ lPage.setSubPages((pt.getSubPageTemplates() == null || pt.getSubPageTemplates().isEmpty()) ? null : convertPages(pt.getSubPageTemplates(), lPage, createIds));
+ pages.add(lPage);
+ }
+ return pages;
+ }
+}