Added method for pages by context (RAVE-1083)

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

Branch: refs/heads/angular
Commit: 9b7ed63b146a48b4a06e148f08b6edfcdc86b907
Parents: 3909e6e
Author: Matthew B. Franklin <[email protected]>
Authored: Fri Dec 13 00:51:41 2013 +0000
Committer: Matthew B. Franklin <[email protected]>
Committed: Fri Dec 13 00:51:41 2013 +0000

----------------------------------------------------------------------
 .../org/apache/rave/rest/PagesResource.java     | 12 +++++
 .../rave/rest/impl/DefaultPageResource.java     | 49 ++++++++++++++++----
 2 files changed, 52 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/rave/blob/9b7ed63b/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 2fb255f..4dd3cba 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
@@ -44,6 +44,18 @@ public interface PagesResource {
     SearchResult<Page> getPages();
 
     /**
+     * Returns a list of pages in the context that the specified user has 
access to
+     *
+     * @param context the context to query
+     * @param identifier the id or keyword (ie @self)
+     * @return a list of pages
+     */
+    @GET
+    @Path("/{context}/{identifier}")
+    @Produces(MediaType.APPLICATION_JSON)
+    SearchResult<Page> getContextPages(@PathParam("context") String context, 
@PathParam("identifier") String identifier);
+
+    /**
      * Creates a new page
      *
      * @param page the definition of the new page

http://git-wip-us.apache.org/repos/asf/rave/blob/9b7ed63b/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 79a40e1..06b0ede 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,7 +20,9 @@
 package org.apache.rave.rest.impl;
 
 
+import com.google.common.collect.Lists;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.rave.portal.service.UserService;
 import org.apache.rave.rest.PageUsersResource;
 import org.apache.rave.rest.exception.ResourceNotFoundException;
 import org.apache.rave.portal.service.PageService;
@@ -34,30 +36,48 @@ import org.slf4j.LoggerFactory;
 import javax.inject.Inject;
 import javax.ws.rs.core.Response;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 public class DefaultPageResource implements PagesResource {
 
+    public static final String SELF = "@self";
+
     private Logger logger = LoggerFactory.getLogger(getClass());
     private PageService pageService;
 
     private DefaultRegionsResource regionsResouce;
     private DefaultPageUsersResource pageUsersResource;
+    private UserService userService;
 
     @Override
     public SearchResult<Page> getPages() {
         SearchResult<org.apache.rave.model.Page> fromDb = pageService.getAll();
-        List<Page> pages = new ArrayList<Page>();
+        return convert(fromDb.getResultSet(), fromDb.getTotalResults());
+    }
 
-        for (org.apache.rave.model.Page page : fromDb.getResultSet()) {
-            pages.add(new Page(page));
+    @Override
+    public SearchResult<Page> getContextPages(String context, String 
identifier) {
+        String contextId = identifier.equals(SELF) ? 
userService.getAuthenticatedUser().getId() : identifier;
+        //TODO Replace when handling supports page member handling as a 
special case RAVE-1044
+        List<org.apache.rave.model.Page> pages;
+        try {
+            if ("portal".equals(context)) {
+                pages = pageService.getAllUserPages(contextId);
+            } else if ("profile".equals(context)) {
+                pages = 
Arrays.asList(pageService.getPersonProfilePage(contextId));
+            } else {
+                pages = pageService.getPages(context, contextId);
+            }
+        } catch (Exception e) {
+            throw new ResourceNotFoundException(contextId);
         }
-
-        SearchResult<Page> returnPages = new SearchResult<Page>(pages, 
fromDb.getTotalResults());
-        return returnPages;
+        if (pages == null) {
+            throw new ResourceNotFoundException(contextId);
+        }
+        return convert(pages, pages.size());
     }
 
-
     @Override
     public Page getPage(String id) {
         logger.debug("Retrieving page for export: " + id);
@@ -65,9 +85,8 @@ public class DefaultPageResource implements PagesResource {
         if (fromDb == null) {
             throw new ResourceNotFoundException(id);
         }
-        Page responsePage = new Page(fromDb);
 
-        return responsePage;
+        return new Page(fromDb);
     }
 
 
@@ -138,6 +157,14 @@ public class DefaultPageResource implements PagesResource {
         return pageUsersResource;
     }
 
+    private SearchResult<Page> convert(List<org.apache.rave.model.Page> 
fromDb, int total) {
+        List<Page> pages = Lists.newArrayList();
+        for (org.apache.rave.model.Page page : fromDb) {
+            pages.add(new Page(page));
+        }
+        return new SearchResult<Page>(pages, total);
+    }
+
     @Inject
     public void setPageService(PageService pageService) {
         this.pageService = pageService;
@@ -152,4 +179,8 @@ public class DefaultPageResource implements PagesResource {
     public void setPageUsersResource(DefaultPageUsersResource 
pageUsersResource) {
         this.pageUsersResource = pageUsersResource;
     }
+    @Inject
+    public void setUserService(UserService userService) {
+        this.userService = userService;
+    }
 }

Reply via email to