From a8bd2bd7ce24d51e956baf9dabd7f7cbcc3e7aad Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 12 Oct 2011 18:03:28 +0000 Subject: [PATCH] ALF-10413 Have BlogPostInfo used more, and implement more methods on it git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31185 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/blog/BlogPostInfoImpl.java | 21 ++++-- .../alfresco/repo/blog/BlogServiceImpl.java | 71 +++++++++++++++---- .../AbstractBlogPostsCannedQueryFactory.java | 2 +- ...raftsAndPublishedBlogPostsCannedQuery.java | 18 ++--- ...dPublishedBlogPostsCannedQueryFactory.java | 7 +- .../GetBlogPostsCannedQuery.java | 18 ++--- .../GetBlogPostsCannedQueryFactory.java | 10 +-- .../service/cmr/blog/BlogPostInfo.java | 6 ++ 8 files changed, 97 insertions(+), 56 deletions(-) diff --git a/source/java/org/alfresco/repo/blog/BlogPostInfoImpl.java b/source/java/org/alfresco/repo/blog/BlogPostInfoImpl.java index 495fe021a7..e458e429d4 100644 --- a/source/java/org/alfresco/repo/blog/BlogPostInfoImpl.java +++ b/source/java/org/alfresco/repo/blog/BlogPostInfoImpl.java @@ -19,7 +19,6 @@ package org.alfresco.repo.blog; import org.alfresco.model.ContentModel; -import org.alfresco.repo.security.permissions.PermissionCheckValue; import org.alfresco.service.cmr.blog.BlogPostInfo; import org.alfresco.service.cmr.repository.NodeRef; @@ -32,11 +31,14 @@ import org.alfresco.service.cmr.repository.NodeRef; public class BlogPostInfoImpl implements BlogPostInfo { private final NodeRef nodeRef; + private final NodeRef containerNodeRef; private final String systemName; + private String title; - public BlogPostInfoImpl(NodeRef nodeRef, String systemName) + public BlogPostInfoImpl(NodeRef nodeRef, NodeRef containerNodeRef, String systemName) { this.nodeRef = nodeRef; + this.containerNodeRef = containerNodeRef; this.systemName = systemName; } @@ -52,8 +54,7 @@ import org.alfresco.service.cmr.repository.NodeRef; @Override public NodeRef getContainerNodeRef() { - //return containerNodeRef; // TODO - return null; + return containerNodeRef; } /** @@ -69,9 +70,17 @@ import org.alfresco.service.cmr.repository.NodeRef; /** * @return the Title of the blog post. */ + @Override public String getTitle() { - // TODO - return null; + return title; + } + /** + * Set the Title of the blog post. + */ + @Override + public void setTitle(String title) + { + this.title = title; } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/blog/BlogServiceImpl.java b/source/java/org/alfresco/repo/blog/BlogServiceImpl.java index 044370031f..deb29eba0a 100644 --- a/source/java/org/alfresco/repo/blog/BlogServiceImpl.java +++ b/source/java/org/alfresco/repo/blog/BlogServiceImpl.java @@ -31,6 +31,7 @@ import org.alfresco.query.CannedQueryResults; import org.alfresco.query.EmptyPagingResults; import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingResults; +import org.alfresco.repo.blog.cannedqueries.BlogEntity; import org.alfresco.repo.blog.cannedqueries.DraftsAndPublishedBlogPostsCannedQuery; import org.alfresco.repo.blog.cannedqueries.DraftsAndPublishedBlogPostsCannedQueryFactory; import org.alfresco.repo.blog.cannedqueries.GetBlogPostsCannedQuery; @@ -188,12 +189,14 @@ public class BlogServiceImpl implements BlogService */ private BlogPostInfo buildBlogPost(NodeRef nodeRef, NodeRef parentNodeRef, String postName) { - BlogPostInfoImpl post = new BlogPostInfoImpl(nodeRef, postName); + BlogPostInfoImpl post = new BlogPostInfoImpl(nodeRef, parentNodeRef, postName); // Grab all the properties, we need the bulk of them anyway Map props = nodeService.getProperties(nodeRef); - // TODO Populate them + // Populate them + post.setTitle((String)props.get(ContentModel.PROP_TITLE)); + // TODO Populate the rest // Finally set tags // TODO @@ -252,7 +255,7 @@ public class BlogServiceImpl implements BlogService setOrUpdateReleasedAndUpdatedDates(postNode.getChildRef()); } - return new BlogPostInfoImpl(postNode.getChildRef(), nodeName); + return new BlogPostInfoImpl(postNode.getChildRef(), blogContainerNode, nodeName); } @Override @@ -263,7 +266,7 @@ public class BlogServiceImpl implements BlogService } // TODO Implement, once BlogPostInfo is finished - return null; + throw new UnsupportedOperationException("Not yet implemented"); } @Override @@ -362,8 +365,8 @@ public class BlogServiceImpl implements BlogService GetBlogPostsCannedQuery cq = (GetBlogPostsCannedQuery)draftPostsCannedQueryFactory.getGetDraftsCannedQuery(blogContainerNode, username, pagingReq); // execute canned query - CannedQueryResults results = cq.execute(); - return results; + CannedQueryResults results = cq.execute(); + return wrap(results, blogContainerNode); } @Override @@ -392,8 +395,8 @@ public class BlogServiceImpl implements BlogService GetBlogPostsCannedQuery cq = (GetBlogPostsCannedQuery)publishedExternallyPostsCannedQueryFactory.getGetPublishedExternallyCannedQuery(blogContainerNode, pagingReq); // execute canned query - CannedQueryResults results = cq.execute(); - return results; + CannedQueryResults results = cq.execute(); + return wrap(results, blogContainerNode); } @Override @@ -422,8 +425,8 @@ public class BlogServiceImpl implements BlogService GetBlogPostsCannedQuery cq = (GetBlogPostsCannedQuery)publishedPostsCannedQueryFactory.getGetPublishedCannedQuery(blogContainerNode, fromDate, toDate, byUser, pagingReq); // execute canned query - CannedQueryResults results = cq.execute(); - return results; + CannedQueryResults results = cq.execute(); + return wrap(results, blogContainerNode); } /** @@ -441,8 +444,8 @@ public class BlogServiceImpl implements BlogService DraftsAndPublishedBlogPostsCannedQuery cq = (DraftsAndPublishedBlogPostsCannedQuery)draftsAndPublishedBlogPostsCannedQueryFactory.getCannedQuery(blogContainerNode, createdFrom, createdTo, currentUser, pagingReq); // execute canned query - CannedQueryResults results = cq.execute(); - return results; + CannedQueryResults results = cq.execute(); + return wrap(results, blogContainerNode); } private String getUniqueChildName(NodeRef parentNode, String prefix) @@ -498,7 +501,9 @@ public class BlogServiceImpl implements BlogService } @Override - public PagingResults findBlogPosts(NodeRef blogContainerNode, RangedDateProperty dateRange, String tag, PagingRequest pagingReq) + public PagingResults findBlogPosts( + final NodeRef blogContainerNode, final RangedDateProperty dateRange, + final String tag, final PagingRequest pagingReq) { StringBuilder luceneQuery = new StringBuilder(); luceneQuery.append("+TYPE:\"").append(ContentModel.TYPE_CONTENT).append("\" ") @@ -538,7 +543,8 @@ public class BlogServiceImpl implements BlogService List blogPostInfos = new ArrayList(nodeRefs.size()); for (NodeRef nodeRef : nodeRefs) { - blogPostInfos.add(new BlogPostInfoImpl(nodeRef, (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME))); + String postName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); + blogPostInfos.add(new BlogPostInfoImpl(nodeRef, blogContainerNode, postName)); } return blogPostInfos; } @@ -573,6 +579,43 @@ public class BlogServiceImpl implements BlogService return results; } + + private PagingResults wrap(final CannedQueryResults results, final NodeRef containerNodeRef) + { + // TODO Pre-load all the nodes via the NodeDAO cache + + // Wrap + return new PagingResults() { + @Override + public String getQueryExecutionId() { + return results.getQueryExecutionId(); + } + + @Override + public Pair getTotalResultCount() { + return results.getTotalResultCount(); + } + + @Override + public boolean hasMoreItems() { + return results.hasMoreItems(); + } + + @Override + public List getPage() { + List entities = results.getPage(); + List posts = new ArrayList(entities.size()); + + for (BlogEntity entity : entities) + { + posts.add(new BlogPostInfoImpl( + entity.getNodeRef(), containerNodeRef, entity.getName() + )); + } + return posts; + } + }; + } /** * This method creates a Lucene query fragment which constrains the specified dateProperty to a range diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/AbstractBlogPostsCannedQueryFactory.java b/source/java/org/alfresco/repo/blog/cannedqueries/AbstractBlogPostsCannedQueryFactory.java index 2cf783a9eb..2a75604e1f 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/AbstractBlogPostsCannedQueryFactory.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/AbstractBlogPostsCannedQueryFactory.java @@ -35,7 +35,7 @@ import org.alfresco.util.Pair; * @author Neil Mc Erlean, janv * @since 4.0 */ -public abstract class AbstractBlogPostsCannedQueryFactory extends AbstractQNameAwareCannedQueryFactory +public abstract class AbstractBlogPostsCannedQueryFactory extends AbstractQNameAwareCannedQueryFactory { protected CannedQuerySortDetails createCQSortDetails(QName sortProp, SortOrder sortOrder) { diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java index 79b2861767..7e099ef899 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java @@ -27,12 +27,10 @@ import java.util.List; import org.alfresco.query.CannedQuery; import org.alfresco.query.CannedQueryParameters; import org.alfresco.query.CannedQuerySortDetails.SortOrder; -import org.alfresco.repo.blog.BlogPostInfoImpl; import org.alfresco.repo.blog.cannedqueries.AbstractBlogPostsCannedQueryFactory.BlogEntityComparator; import org.alfresco.repo.domain.query.CannedQueryDAO; import org.alfresco.repo.security.permissions.impl.acegi.AbstractCannedQueryPermissions; import org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityBean; -import org.alfresco.service.cmr.blog.BlogPostInfo; import org.alfresco.service.cmr.blog.BlogService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; @@ -49,7 +47,7 @@ import org.apache.commons.logging.LogFactory; * * @see BlogService#getMyDraftsAndAllPublished(NodeRef, Date, Date, String, org.alfresco.query.PagingRequest) */ -public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryPermissions +public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryPermissions { private Log logger = LogFactory.getLog(getClass()); @@ -60,7 +58,7 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP public DraftsAndPublishedBlogPostsCannedQuery( CannedQueryDAO cannedQueryDAO, - MethodSecurityBean methodSecurity, + MethodSecurityBean methodSecurity, CannedQueryParameters params) { super(params, methodSecurity); @@ -68,7 +66,7 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP } @Override - protected List queryAndFilter(CannedQueryParameters parameters) + protected List queryAndFilter(CannedQueryParameters parameters) { Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null); @@ -154,18 +152,12 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP } } - List blogPostInfos = new ArrayList(filtered.size()); - for (BlogEntity result : filtered) - { - blogPostInfos.add(new BlogPostInfoImpl(result.getNodeRef(), result.getName())); - } - if (start != null) { - logger.debug("Base query: "+blogPostInfos.size()+" in "+(System.currentTimeMillis()-start)+" msecs"); + logger.debug("Base query: "+filtered.size()+" in "+(System.currentTimeMillis()-start)+" msecs"); } - return blogPostInfos; + return filtered; } @Override diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java index 103c0bf768..fc61827a22 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java @@ -29,7 +29,6 @@ import org.alfresco.query.CannedQueryPageDetails; import org.alfresco.query.CannedQueryParameters; import org.alfresco.query.CannedQuerySortDetails; import org.alfresco.query.PagingRequest; -import org.alfresco.service.cmr.blog.BlogPostInfo; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.util.Pair; @@ -44,16 +43,16 @@ import org.alfresco.util.ParameterCheck; public class DraftsAndPublishedBlogPostsCannedQueryFactory extends AbstractBlogPostsCannedQueryFactory { @Override - public CannedQuery getCannedQuery(CannedQueryParameters parameters) + public CannedQuery getCannedQuery(CannedQueryParameters parameters) { final DraftsAndPublishedBlogPostsCannedQuery cq = new DraftsAndPublishedBlogPostsCannedQuery( cannedQueryDAO, methodSecurity, parameters); - return (CannedQuery) cq; + return (CannedQuery) cq; } - public CannedQuery getCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq) + public CannedQuery getCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq) { ParameterCheck.mandatory("blogContainerNode", blogContainerNode); ParameterCheck.mandatory("pagingReq", pagingReq); diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java b/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java index f5c7c75f39..7655878fa7 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java @@ -27,13 +27,11 @@ import java.util.List; import org.alfresco.query.CannedQuery; import org.alfresco.query.CannedQueryParameters; import org.alfresco.query.CannedQuerySortDetails.SortOrder; -import org.alfresco.repo.blog.BlogPostInfoImpl; import org.alfresco.repo.blog.cannedqueries.AbstractBlogPostsCannedQueryFactory.BlogEntityComparator; import org.alfresco.repo.domain.node.AuditablePropertiesEntity; import org.alfresco.repo.domain.query.CannedQueryDAO; import org.alfresco.repo.security.permissions.impl.acegi.AbstractCannedQueryPermissions; import org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityBean; -import org.alfresco.service.cmr.blog.BlogPostInfo; import org.alfresco.service.cmr.blog.BlogService; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.namespace.QName; @@ -48,7 +46,7 @@ import org.apache.commons.logging.LogFactory; * @author Neil Mc Erlean, janv * @since 4.0 */ -public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions +public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions { private Log logger = LogFactory.getLog(getClass()); @@ -59,7 +57,7 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions methodSecurity, + MethodSecurityBean methodSecurity, CannedQueryParameters params) { super(params, methodSecurity); @@ -67,7 +65,7 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions queryAndFilter(CannedQueryParameters parameters) + protected List queryAndFilter(CannedQueryParameters parameters) { Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null); @@ -151,18 +149,12 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions blogPostInfos = new ArrayList(filtered.size()); - for (BlogEntity result : filtered) - { - blogPostInfos.add(new BlogPostInfoImpl(result.getNodeRef(), result.getName())); - } - if (start != null) { - logger.debug("Base query: "+blogPostInfos.size()+" in "+(System.currentTimeMillis()-start)+" msecs"); + logger.debug("Base query: "+filtered.size()+" in "+(System.currentTimeMillis()-start)+" msecs"); } - return blogPostInfos; + return filtered; } @Override diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQueryFactory.java b/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQueryFactory.java index 35c7f78156..084727e1dc 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQueryFactory.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQueryFactory.java @@ -46,14 +46,14 @@ import org.alfresco.util.ParameterCheck; public class GetBlogPostsCannedQueryFactory extends AbstractBlogPostsCannedQueryFactory { @Override - public CannedQuery getCannedQuery(CannedQueryParameters parameters) + public CannedQuery getCannedQuery(CannedQueryParameters parameters) { final GetBlogPostsCannedQuery cq = new GetBlogPostsCannedQuery(cannedQueryDAO, methodSecurity, parameters); - return (CannedQuery) cq; + return (CannedQuery) cq; } - public CannedQuery getGetDraftsCannedQuery(NodeRef blogContainerNode, String username, PagingRequest pagingReq) + public CannedQuery getGetDraftsCannedQuery(NodeRef blogContainerNode, String username, PagingRequest pagingReq) { ParameterCheck.mandatory("blogContainerNode", blogContainerNode); ParameterCheck.mandatory("pagingReq", pagingReq); @@ -81,7 +81,7 @@ public class GetBlogPostsCannedQueryFactory extends AbstractBlogPostsCannedQuery return getCannedQuery(params); } - public CannedQuery getGetPublishedExternallyCannedQuery(NodeRef blogContainerNode, PagingRequest pagingReq) + public CannedQuery getGetPublishedExternallyCannedQuery(NodeRef blogContainerNode, PagingRequest pagingReq) { ParameterCheck.mandatory("blogContainerNode", blogContainerNode); ParameterCheck.mandatory("pagingReq", pagingReq); @@ -118,7 +118,7 @@ public class GetBlogPostsCannedQueryFactory extends AbstractBlogPostsCannedQuery return getCannedQuery(params); } - public CannedQuery getGetPublishedCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq) + public CannedQuery getGetPublishedCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq) { ParameterCheck.mandatory("blogContainerNode", blogContainerNode); ParameterCheck.mandatory("pagingReq", pagingReq); diff --git a/source/java/org/alfresco/service/cmr/blog/BlogPostInfo.java b/source/java/org/alfresco/service/cmr/blog/BlogPostInfo.java index 853a14859a..c4a8d5cda4 100644 --- a/source/java/org/alfresco/service/cmr/blog/BlogPostInfo.java +++ b/source/java/org/alfresco/service/cmr/blog/BlogPostInfo.java @@ -52,5 +52,11 @@ import org.alfresco.service.cmr.repository.NodeRef; */ String getTitle(); + /** + * Sets the Title of the blog post. + */ + void setTitle(String title); + // TODO Remaining fields + // TODO Tags } \ No newline at end of file