mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-9385. Separation of taggingService from Blog CannedQueries.
Initial implementation provides separate 'findTaggedBlogPosts' method and removes taggingService from the CQs. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28816 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -81,6 +81,7 @@
|
||||
<property name="contentService" ref="ContentService"/>
|
||||
<property name="nodeService" ref="NodeService"/>
|
||||
<property name="permissionService" ref="PermissionService"/>
|
||||
<property name="searchService" ref="SearchService"/>
|
||||
|
||||
<property name="draftBlogPostsCannedQueryFactory" ref="getDraftBlogPostsCannedQueryFactory"/>
|
||||
<property name="publishedBlogPostsCannedQueryFactory" ref="getPublishedBlogPostsCannedQueryFactory"/>
|
||||
@@ -117,7 +118,6 @@
|
||||
<bean name="getDraftsAndPublishedBlogPostsCannedQueryFactory" parent="parentBlogPostsCannedQueryFactory"
|
||||
class="org.alfresco.repo.blog.cannedqueries.DraftsAndPublishedBlogPostsCannedQueryFactory">
|
||||
<property name="methodSecurity" ref="BlogService_security_getMyDraftsAndAllPublished"/>
|
||||
<property name="taggingService" ref="TaggingService"/>
|
||||
</bean>
|
||||
|
||||
<!-- Blog Integration Service (Integration with external blog hosting sites) -->
|
||||
|
@@ -102,7 +102,6 @@ public interface BlogService
|
||||
* @param blogContainerNode the container node for blog posts (under the site).
|
||||
* @param fromDate an inclusive date limit for the results (more recent than).
|
||||
* @param toDate an inclusive date limit for the results (before).
|
||||
* @param tag if specified, only returns posts tagged with this tag.
|
||||
* @param pagingReq an object defining the paging parameters for the result set.
|
||||
*
|
||||
* @return a {@link PagingResults} object containing some or all of the results (subject to paging).
|
||||
@@ -111,9 +110,21 @@ public interface BlogService
|
||||
*
|
||||
* @deprecated This method is a domain-specific query used by the Blog REST API and is not considered suitable for general use.
|
||||
*/
|
||||
PagingResults<BlogPostInfo> getMyDraftsAndAllPublished(NodeRef blogContainerNode, Date fromDate, Date toDate,
|
||||
String tag, PagingRequest pagingReq);
|
||||
PagingResults<BlogPostInfo> getMyDraftsAndAllPublished(NodeRef blogContainerNode, Date fromDate, Date toDate, PagingRequest pagingReq);
|
||||
|
||||
/**
|
||||
* Finds blog posts by the specified user tagged with the given tag string.
|
||||
*
|
||||
* @param blogContainerNode the container node for blog posts (under the site).
|
||||
* @param tag tag string.
|
||||
* @param pagingReq an object defining the paging parameters for the result set.
|
||||
*
|
||||
* @return a {@link PagingResults} object containing some or all of the results (subject to paging).
|
||||
*
|
||||
* @see SiteService#getContainer(String, String) to retrieve the blogContainerNode
|
||||
*/
|
||||
PagingResults<BlogPostInfo> findTaggedBlogPosts(NodeRef blogContainerNode, String tag, PagingRequest pagingReq);
|
||||
|
||||
/**
|
||||
* Returns true if the specified blog-post node is a 'draft' blog post.
|
||||
*
|
||||
|
@@ -19,8 +19,10 @@
|
||||
package org.alfresco.repo.blog;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
@@ -39,9 +41,14 @@ import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.SearchParameters;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.ISO9075;
|
||||
import org.alfresco.util.Pair;
|
||||
import org.alfresco.util.ParameterCheck;
|
||||
import org.alfresco.util.registry.NamedObjectRegistry;
|
||||
|
||||
@@ -69,6 +76,7 @@ public class BlogServiceImpl implements BlogService
|
||||
private ContentService contentService;
|
||||
private NodeService nodeService;
|
||||
private PermissionService permissionService;
|
||||
private SearchService searchService;
|
||||
|
||||
public void setCannedQueryRegistry(NamedObjectRegistry<CannedQueryFactory<BlogPostInfo>> cannedQueryRegistry)
|
||||
{
|
||||
@@ -110,6 +118,11 @@ public class BlogServiceImpl implements BlogService
|
||||
this.permissionService = permissionService;
|
||||
}
|
||||
|
||||
public void setSearchService(SearchService searchService)
|
||||
{
|
||||
this.searchService = searchService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDraftBlogPost(NodeRef blogPostNode)
|
||||
{
|
||||
@@ -199,7 +212,7 @@ public class BlogServiceImpl implements BlogService
|
||||
* @deprecated
|
||||
*/
|
||||
@Override
|
||||
public PagingResults<BlogPostInfo> getMyDraftsAndAllPublished(NodeRef blogContainerNode, Date createdFrom, Date createdTo, String tag, PagingRequest pagingReq)
|
||||
public PagingResults<BlogPostInfo> getMyDraftsAndAllPublished(NodeRef blogContainerNode, Date createdFrom, Date createdTo, PagingRequest pagingReq)
|
||||
{
|
||||
ParameterCheck.mandatory("blogContainerNode", blogContainerNode);
|
||||
ParameterCheck.mandatory("pagingReq", pagingReq);
|
||||
@@ -207,7 +220,7 @@ public class BlogServiceImpl implements BlogService
|
||||
// get canned query
|
||||
pagingReq.setRequestTotalCountMax(MAX_QUERY_ENTRY_COUNT);
|
||||
String currentUser = AuthenticationUtil.getFullyAuthenticatedUser();
|
||||
DraftsAndPublishedBlogPostsCannedQuery cq = (DraftsAndPublishedBlogPostsCannedQuery)draftsAndPublishedBlogPostsCannedQueryFactory.getCannedQuery(blogContainerNode, createdFrom, createdTo, currentUser, tag, pagingReq);
|
||||
DraftsAndPublishedBlogPostsCannedQuery cq = (DraftsAndPublishedBlogPostsCannedQuery)draftsAndPublishedBlogPostsCannedQueryFactory.getCannedQuery(blogContainerNode, createdFrom, createdTo, currentUser, pagingReq);
|
||||
|
||||
// execute canned query
|
||||
CannedQueryResults<BlogPostInfo> results = cq.execute();
|
||||
@@ -250,4 +263,70 @@ public class BlogServiceImpl implements BlogService
|
||||
nodeService.setProperty(blogPostNode, ContentModel.PROP_UPDATED, new Date());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PagingResults<BlogPostInfo> findTaggedBlogPosts(
|
||||
NodeRef blogContainerNode, String tag, PagingRequest pagingReq)
|
||||
{
|
||||
StringBuilder luceneQuery = new StringBuilder();
|
||||
luceneQuery.append("+TYPE:\"").append(ContentModel.TYPE_CONTENT).append("\" ")
|
||||
.append("+PARENT:\"").append(blogContainerNode.toString()).append("\" ")
|
||||
.append("+PATH:\"/cm:taggable/cm:").append(ISO9075.encode(tag)).append("/member\"");
|
||||
|
||||
SearchParameters sp = new SearchParameters();
|
||||
sp.addStore(blogContainerNode.getStoreRef());
|
||||
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
|
||||
sp.setQuery(luceneQuery.toString());
|
||||
sp.addSort(ContentModel.PROP_PUBLISHED.toString(), false);
|
||||
ResultSet luceneResults = null;
|
||||
PagingResults<BlogPostInfo> results = null;
|
||||
try
|
||||
{
|
||||
luceneResults = searchService.query(sp);
|
||||
final ResultSet finalLuceneResults = luceneResults;
|
||||
|
||||
results = new PagingResults<BlogPostInfo>()
|
||||
{
|
||||
|
||||
@Override
|
||||
public List<BlogPostInfo> getPage()
|
||||
{
|
||||
List<NodeRef> nodeRefs = finalLuceneResults.getNodeRefs();
|
||||
List<BlogPostInfo> blogPostInfos = new ArrayList<BlogPostInfo>(nodeRefs.size());
|
||||
for (NodeRef nodeRef : nodeRefs)
|
||||
{
|
||||
blogPostInfos.add(new BlogPostInfo(nodeRef, (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME)));
|
||||
}
|
||||
return blogPostInfos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQueryExecutionId()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pair<Integer, Integer> getTotalResultCount()
|
||||
{
|
||||
int size = finalLuceneResults.getNodeRefs().size();
|
||||
//FIXME Impl
|
||||
return new Pair<Integer, Integer>(size, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMoreItems()
|
||||
{
|
||||
return finalLuceneResults.hasMore();
|
||||
}
|
||||
};
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (luceneResults != null) luceneResults.close();
|
||||
}
|
||||
|
||||
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
@@ -56,17 +56,14 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP
|
||||
private static final String QUERY_SELECT_GET_BLOGS = "select_GetBlogsCannedQuery";
|
||||
|
||||
private final CannedQueryDAO cannedQueryDAO;
|
||||
private final TaggingService taggingService;
|
||||
|
||||
public DraftsAndPublishedBlogPostsCannedQuery(
|
||||
CannedQueryDAO cannedQueryDAO,
|
||||
TaggingService taggingService,
|
||||
MethodSecurityBean<BlogPostInfo> methodSecurity,
|
||||
CannedQueryParameters params)
|
||||
{
|
||||
super(params, methodSecurity);
|
||||
this.cannedQueryDAO = cannedQueryDAO;
|
||||
this.taggingService = taggingService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,7 +77,6 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP
|
||||
|
||||
DraftsAndPublishedBlogPostsCannedQueryParams paramBean = (DraftsAndPublishedBlogPostsCannedQueryParams) paramBeanObj;
|
||||
String requestedCreator = paramBean.getCmCreator();
|
||||
String requestedTag = paramBean.getTag();
|
||||
Date createdFromDate = paramBean.getCreatedFromDate();
|
||||
Date createdToDate = paramBean.getCreatedToDate();
|
||||
|
||||
@@ -135,13 +131,6 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP
|
||||
}
|
||||
}
|
||||
|
||||
// TODO review use-case and either remove or push-down
|
||||
// Only return blog posts tagged with the specified tag string.
|
||||
if (requestedTag != null && !taggingService.getTags(result.getNode().getNodeRef()).contains(requestedTag))
|
||||
{
|
||||
nextNodeIsAcceptable = false;
|
||||
}
|
||||
|
||||
if (nextNodeIsAcceptable)
|
||||
{
|
||||
filtered.add(result);
|
||||
|
@@ -30,7 +30,6 @@ import org.alfresco.query.PagingRequest;
|
||||
import org.alfresco.query.CannedQuerySortDetails.SortOrder;
|
||||
import org.alfresco.repo.blog.BlogService.BlogPostInfo;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.tagging.TaggingService;
|
||||
import org.alfresco.util.ParameterCheck;
|
||||
|
||||
/**
|
||||
@@ -41,24 +40,17 @@ import org.alfresco.util.ParameterCheck;
|
||||
*/
|
||||
public class DraftsAndPublishedBlogPostsCannedQueryFactory extends AbstractBlogPostsCannedQueryFactory
|
||||
{
|
||||
private TaggingService taggingService;
|
||||
|
||||
public void setTaggingService(TaggingService taggingService)
|
||||
{
|
||||
this.taggingService = taggingService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CannedQuery<BlogPostInfo> getCannedQuery(CannedQueryParameters parameters)
|
||||
{
|
||||
final DraftsAndPublishedBlogPostsCannedQuery cq = new DraftsAndPublishedBlogPostsCannedQuery(
|
||||
cannedQueryDAO, taggingService,
|
||||
cannedQueryDAO,
|
||||
methodSecurity,
|
||||
parameters);
|
||||
return (CannedQuery<BlogPostInfo>) cq;
|
||||
}
|
||||
|
||||
public CannedQuery<BlogPostInfo> getCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, String tag, PagingRequest pagingReq)
|
||||
public CannedQuery<BlogPostInfo> getCannedQuery(NodeRef blogContainerNode, Date fromDate, Date toDate, String byUser, PagingRequest pagingReq)
|
||||
{
|
||||
ParameterCheck.mandatory("blogContainerNode", blogContainerNode);
|
||||
ParameterCheck.mandatory("pagingReq", pagingReq);
|
||||
@@ -72,7 +64,7 @@ public class DraftsAndPublishedBlogPostsCannedQueryFactory extends AbstractBlogP
|
||||
getQNameId(ContentModel.PROP_PUBLISHED),
|
||||
getQNameId(ContentModel.TYPE_CONTENT),
|
||||
byUser,
|
||||
fromDate, toDate, tag);
|
||||
fromDate, toDate);
|
||||
|
||||
CannedQueryPageDetails cqpd = createCQPageDetails(pagingReq);
|
||||
CannedQuerySortDetails cqsd = createCQSortDetails(ContentModel.PROP_PUBLISHED, SortOrder.DESCENDING);
|
||||
|
@@ -31,7 +31,6 @@ public class DraftsAndPublishedBlogPostsCannedQueryParams extends BlogEntity
|
||||
private final String cmCreator;
|
||||
private final Date createdFromDate;
|
||||
private final Date createdToDate;
|
||||
private final String tag;
|
||||
|
||||
public DraftsAndPublishedBlogPostsCannedQueryParams(Long blogContainerNodeId,
|
||||
Long nameQNameId,
|
||||
@@ -39,15 +38,13 @@ public class DraftsAndPublishedBlogPostsCannedQueryParams extends BlogEntity
|
||||
Long contentTypeQNameId,
|
||||
String cmCreator,
|
||||
Date createdFromDate,
|
||||
Date createdToDate,
|
||||
String tag)
|
||||
Date createdToDate)
|
||||
{
|
||||
super(blogContainerNodeId, nameQNameId, publishedQNameId, contentTypeQNameId, null, null);
|
||||
|
||||
this.cmCreator = cmCreator;
|
||||
this.createdFromDate = createdFromDate;
|
||||
this.createdToDate = createdToDate;
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public String getCmCreator()
|
||||
@@ -64,9 +61,4 @@ public class DraftsAndPublishedBlogPostsCannedQueryParams extends BlogEntity
|
||||
{
|
||||
return createdToDate;
|
||||
}
|
||||
|
||||
public String getTag()
|
||||
{
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
|
@@ -137,7 +137,7 @@ public interface ServiceRegistry
|
||||
static final QName RENDITION_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "RenditionService");
|
||||
static final QName RATING_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "RatingService");
|
||||
static final QName REPO_ADMIN_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "RepoAdminService");
|
||||
static final QName NODE_LOCATOR_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "NodeLocatorService");
|
||||
static final QName NODE_LOCATOR_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "nodeLocatorService");
|
||||
|
||||
// WCM / AVM
|
||||
static final QName AVM_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "AVMService");
|
||||
|
Reference in New Issue
Block a user