Author: mfranklin
Date: Fri Oct 11 12:17:00 2013
New Revision: 1531267

URL: http://svn.apache.org/r1531267
Log:
Updated page service to create instances of pages by page template id RAVE-1066

Modified:
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
    
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java

Modified: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java?rev=1531267&r1=1531266&r2=1531267&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
 Fri Oct 11 12:17:00 2013
@@ -53,7 +53,7 @@ public interface PagesResource {
     @Path("/")
     @Produces(MediaType.APPLICATION_JSON)
     @Consumes(MediaType.APPLICATION_JSON)
-    Page createPage(Page page);
+    Page createPage(@DefaultValue("") @QueryParam("templateId") String 
pageTemplateId, Page page);
 
     /**
      * Deletes the given page

Modified: 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java?rev=1531267&r1=1531266&r2=1531267&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
 (original)
+++ 
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
 Fri Oct 11 12:17:00 2013
@@ -39,6 +39,7 @@ public class PageTemplate implements Res
         this.description = source.getDescription();
         this.pageType = source.getPageType();
         this.pageLayoutCode = source.getPageLayout().getCode();
+        this.defaultTemplate = source.isDefaultTemplate();
     }
 
     public String getId() {

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java?rev=1531267&r1=1531266&r2=1531267&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
 Fri Oct 11 12:17:00 2013
@@ -19,7 +19,6 @@
 package org.apache.rave.portal.service;
 
 import org.apache.rave.model.Page;
-import org.apache.rave.model.PageType;
 import org.apache.rave.model.Region;
 import org.apache.rave.model.RegionWidget;
 import org.apache.rave.rest.model.SearchResult;
@@ -121,6 +120,17 @@ public interface PageService {
     /**
      * Creates a new user page with the supplied pageName and pageLayoutCode
      *
+     *
+     * @param pageName       the name of the new page
+     * @param contextId      the ID to set for the context of the page
+     * @param pageTemplateId the ID of the PageTemplate to create from  
@return the new Page object
+     */
+    @PostAuthorize("hasPermission(returnObject, 'create')")
+    Page addNewPage(String pageName, String contextId, String pageTemplateId);
+
+    /**
+     * Creates a new user page with the supplied pageName and pageLayoutCode
+     *
      * @param pageName       the name of the new page
      * @param pageLayoutCode the page layout code
      * @return the new Page object

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1531267&r1=1531266&r2=1531267&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
 Fri Oct 11 12:17:00 2013
@@ -19,6 +19,7 @@
 
 package org.apache.rave.portal.service.impl;
 
+import org.apache.rave.portal.util.PageUtil;
 import org.apache.rave.rest.model.SearchResult;
 import org.apache.rave.repository.Repository;
 import org.apache.rave.model.*;
@@ -137,6 +138,17 @@ public class DefaultPageService implemen
 
     @Override
     @Transactional
+    public Page addNewPage(String pageName, String contextId, String 
pageTemplateId) {
+        PageTemplate template = pageTemplateRepository.get(pageTemplateId);
+        if(template == null) {
+            throw new IllegalArgumentException("No page template found for the 
specified id " + pageTemplateId);
+        }
+        Page newInstance = PageUtil.convert(template, 
userService.getAuthenticatedUser(), false);
+        return pageRepository.save(newInstance);
+    }
+
+    @Override
+    @Transactional
     public Page addNewUserPage(String pageName, String pageLayoutCode) {
         return addNewUserPage(userService.getAuthenticatedUser(), pageName, 
pageLayoutCode);
     }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java?rev=1531267&r1=1531266&r2=1531267&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
 Fri Oct 11 12:17:00 2013
@@ -20,9 +20,9 @@
 package org.apache.rave.rest.impl;
 
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.rave.rest.PageUsersResource;
 import org.apache.rave.rest.exception.ResourceNotFoundException;
-import org.apache.rave.model.PageType;
 import org.apache.rave.portal.service.PageService;
 import org.apache.rave.rest.PagesResource;
 import org.apache.rave.rest.RegionsResource;
@@ -32,7 +32,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
-import javax.ws.rs.PathParam;
 import javax.ws.rs.core.Response;
 import java.util.ArrayList;
 import java.util.List;
@@ -73,23 +72,25 @@ public class DefaultPageResource impleme
 
 
     @Override
-    public Page createPage(Page page) {
+    public Page createPage(String pageTemplateId, Page page) {
+        if (page.getName() == null) {
+            throw new BadRequestException("Page name property must be 
defined.");
+        }
+        org.apache.rave.model.Page fromDb;
+        if(StringUtils.isNotBlank(pageTemplateId)) {
+            fromDb = pageService.addNewPage(page.getName(), null, 
pageTemplateId);
         //TODO: RAVE-977 - when Page type enum is deprecated escape from this 
logic
-        if (page.getPageType().equals("user")) {
-            if (page.getName() == null) {
-                throw new BadRequestException("Page name property must be 
defined.");
-            }
+        } else if (page.getPageType().equals("user")) {
             if (page.getPageLayoutCode() == null) {
                 throw new BadRequestException("Page pageLayoutCode property 
must be defined.");
             }
-            org.apache.rave.model.Page fromDb = 
pageService.addNewUserPage(page.getName(), page.getPageLayoutCode());
-            Page responsePage = new Page(fromDb);
-
-            return responsePage;
+            fromDb = pageService.addNewUserPage(page.getName(), 
page.getPageLayoutCode());
         } else {
             //TODO: RAVE-977 this will change
             throw new BadRequestException("Page pageType property must equal 
'user'.");
         }
+
+        return new Page(fromDb);
     }
 
     @Override


Reply via email to