Updated page service to create instances of pages by page template id RAVE-1066

git-svn-id: https://svn.apache.org/repos/asf/rave/trunk@1531267 
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/e3f7f4c6
Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/e3f7f4c6
Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/e3f7f4c6

Branch: refs/heads/angular
Commit: e3f7f4c6034697b476db9e7ca8e6021fcf4395b4
Parents: b9a2f4e
Author: Matthew B. Franklin <[email protected]>
Authored: Fri Oct 11 12:17:00 2013 +0000
Committer: Matthew B. Franklin <[email protected]>
Committed: Fri Oct 11 12:17:00 2013 +0000

----------------------------------------------------------------------
 .../org/apache/rave/rest/PagesResource.java     |  2 +-
 .../apache/rave/rest/model/PageTemplate.java    |  1 +
 .../apache/rave/portal/service/PageService.java | 12 +++++++++-
 .../portal/service/impl/DefaultPageService.java | 12 ++++++++++
 .../rave/rest/impl/DefaultPageResource.java     | 23 ++++++++++----------
 5 files changed, 37 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
----------------------------------------------------------------------
diff --git 
a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
 
b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
index 259b22a..2fb255f 100644
--- 
a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
+++ 
b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
@@ -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

http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
----------------------------------------------------------------------
diff --git 
a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
 
b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
index 72b1383..1f25688 100644
--- 
a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
+++ 
b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/PageTemplate.java
@@ -39,6 +39,7 @@ public class PageTemplate implements RestEntity {
         this.description = source.getDescription();
         this.pageType = source.getPageType();
         this.pageLayoutCode = source.getPageLayout().getCode();
+        this.defaultTemplate = source.isDefaultTemplate();
     }
 
     public String getId() {

http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
----------------------------------------------------------------------
diff --git 
a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
 
b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
index ca05159..a073bc8 100644
--- 
a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
+++ 
b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
@@ -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

http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
----------------------------------------------------------------------
diff --git 
a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
 
b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
index a62b7ac..3585bb7 100644
--- 
a/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
+++ 
b/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
@@ -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 implements PageService {
 
     @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);
     }

http://git-wip-us.apache.org/repos/asf/rave/blob/e3f7f4c6/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
----------------------------------------------------------------------
diff --git 
a/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
 
b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
index c9554fe..1c4ad9e 100644
--- 
a/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
+++ 
b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
@@ -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 implements PagesResource {
 
 
     @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