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
This commit is contained in:
Nick Burch
2011-10-12 18:03:28 +00:00
parent f522dbad81
commit a8bd2bd7ce
8 changed files with 97 additions and 56 deletions

View File

@@ -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;
}
}

View File

@@ -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<QName,Serializable> 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<BlogPostInfo> results = cq.execute();
return results;
CannedQueryResults<BlogEntity> 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<BlogPostInfo> results = cq.execute();
return results;
CannedQueryResults<BlogEntity> 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<BlogPostInfo> results = cq.execute();
return results;
CannedQueryResults<BlogEntity> 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<BlogPostInfo> results = cq.execute();
return results;
CannedQueryResults<BlogEntity> 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<BlogPostInfo> findBlogPosts(NodeRef blogContainerNode, RangedDateProperty dateRange, String tag, PagingRequest pagingReq)
public PagingResults<BlogPostInfo> 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<BlogPostInfo> blogPostInfos = new ArrayList<BlogPostInfo>(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<BlogPostInfo> wrap(final CannedQueryResults<BlogEntity> results, final NodeRef containerNodeRef)
{
// TODO Pre-load all the nodes via the NodeDAO cache
// Wrap
return new PagingResults<BlogPostInfo>() {
@Override
public String getQueryExecutionId() {
return results.getQueryExecutionId();
}
@Override
public Pair<Integer, Integer> getTotalResultCount() {
return results.getTotalResultCount();
}
@Override
public boolean hasMoreItems() {
return results.hasMoreItems();
}
@Override
public List<BlogPostInfo> getPage() {
List<BlogEntity> entities = results.getPage();
List<BlogPostInfo> posts = new ArrayList<BlogPostInfo>(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

View File

@@ -35,7 +35,7 @@ import org.alfresco.util.Pair;
* @author Neil Mc Erlean, janv
* @since 4.0
*/
public abstract class AbstractBlogPostsCannedQueryFactory extends AbstractQNameAwareCannedQueryFactory<BlogPostInfo>
public abstract class AbstractBlogPostsCannedQueryFactory extends AbstractQNameAwareCannedQueryFactory<BlogEntity>
{
protected CannedQuerySortDetails createCQSortDetails(QName sortProp, SortOrder sortOrder)
{

View File

@@ -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<BlogPostInfo>
public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryPermissions<BlogEntity>
{
private Log logger = LogFactory.getLog(getClass());
@@ -60,7 +58,7 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP
public DraftsAndPublishedBlogPostsCannedQuery(
CannedQueryDAO cannedQueryDAO,
MethodSecurityBean<BlogPostInfo> methodSecurity,
MethodSecurityBean<BlogEntity> methodSecurity,
CannedQueryParameters params)
{
super(params, methodSecurity);
@@ -68,7 +66,7 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP
}
@Override
protected List<BlogPostInfo> queryAndFilter(CannedQueryParameters parameters)
protected List<BlogEntity> queryAndFilter(CannedQueryParameters parameters)
{
Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null);
@@ -154,18 +152,12 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP
}
}
List<BlogPostInfo> blogPostInfos = new ArrayList<BlogPostInfo>(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

View File

@@ -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<BlogPostInfo> getCannedQuery(CannedQueryParameters parameters)
public CannedQuery<BlogEntity> getCannedQuery(CannedQueryParameters parameters)
{
final DraftsAndPublishedBlogPostsCannedQuery cq = new DraftsAndPublishedBlogPostsCannedQuery(
cannedQueryDAO,
methodSecurity,
parameters);
return (CannedQuery<BlogPostInfo>) cq;
return (CannedQuery<BlogEntity>) cq;
}
public CannedQuery<BlogPostInfo> getCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq)
public CannedQuery<BlogEntity> getCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq)
{
ParameterCheck.mandatory("blogContainerNode", blogContainerNode);
ParameterCheck.mandatory("pagingReq", pagingReq);

View File

@@ -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<BlogPostInfo>
public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions<BlogEntity>
{
private Log logger = LogFactory.getLog(getClass());
@@ -59,7 +57,7 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions<Blog
public GetBlogPostsCannedQuery(
CannedQueryDAO cannedQueryDAO,
MethodSecurityBean<BlogPostInfo> methodSecurity,
MethodSecurityBean<BlogEntity> methodSecurity,
CannedQueryParameters params)
{
super(params, methodSecurity);
@@ -67,7 +65,7 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions<Blog
}
@Override
protected List<BlogPostInfo> queryAndFilter(CannedQueryParameters parameters)
protected List<BlogEntity> queryAndFilter(CannedQueryParameters parameters)
{
Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null);
@@ -151,18 +149,12 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions<Blog
Collections.sort(filtered, comparator);
}
List<BlogPostInfo> blogPostInfos = new ArrayList<BlogPostInfo>(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

View File

@@ -46,14 +46,14 @@ import org.alfresco.util.ParameterCheck;
public class GetBlogPostsCannedQueryFactory extends AbstractBlogPostsCannedQueryFactory
{
@Override
public CannedQuery<BlogPostInfo> getCannedQuery(CannedQueryParameters parameters)
public CannedQuery<BlogEntity> getCannedQuery(CannedQueryParameters parameters)
{
final GetBlogPostsCannedQuery cq = new GetBlogPostsCannedQuery(cannedQueryDAO, methodSecurity, parameters);
return (CannedQuery<BlogPostInfo>) cq;
return (CannedQuery<BlogEntity>) cq;
}
public CannedQuery<BlogPostInfo> getGetDraftsCannedQuery(NodeRef blogContainerNode, String username, PagingRequest pagingReq)
public CannedQuery<BlogEntity> 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<BlogPostInfo> getGetPublishedExternallyCannedQuery(NodeRef blogContainerNode, PagingRequest pagingReq)
public CannedQuery<BlogEntity> 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<BlogPostInfo> getGetPublishedCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq)
public CannedQuery<BlogEntity> getGetPublishedCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq)
{
ParameterCheck.mandatory("blogContainerNode", blogContainerNode);
ParameterCheck.mandatory("pagingReq", pagingReq);

View File

@@ -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
}