Created conversion utility RAVE-1065

git-svn-id: https://svn.apache.org/repos/asf/rave/trunk@1531262 
13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/rave/repo
Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/b7ded920
Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/b7ded920
Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/b7ded920

Branch: refs/heads/angular
Commit: b7ded920b76f7255675ee33f2efd17992a513fd3
Parents: 98feb34
Author: Matthew B. Franklin <[email protected]>
Authored: Fri Oct 11 11:41:57 2013 +0000
Committer: Matthew B. Franklin <[email protected]>
Committed: Fri Oct 11 11:41:57 2013 +0000

----------------------------------------------------------------------
 .../org/apache/rave/portal/util/PageUtil.java   | 139 +++++++++++++++++++
 1 file changed, 139 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/rave/blob/b7ded920/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
----------------------------------------------------------------------
diff --git 
a/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
 
b/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
new file mode 100644
index 0000000..c88e387
--- /dev/null
+++ 
b/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/PageUtil.java
@@ -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;
+    }
+}

Reply via email to