@Override public PagingResults<Pair<TopicInfo, Integer>> listHotTopics( NodeRef nodeRef, Date since, PagingRequest paging) { // Do the query GetDiscussionTopcisWithPostsCannedQueryFactory getCQFactory = (GetDiscussionTopcisWithPostsCannedQueryFactory)cannedQueryRegistry.getNamedObject(CANNED_QUERY_GET_TOPICS_WITH_POSTS); GetDiscussionTopcisWithPostsCannedQuery cq = (GetDiscussionTopcisWithPostsCannedQuery)getCQFactory.getCannedQuery( nodeRef, null, since, true, null, paging); // Execute the canned query CannedQueryResults<NodeWithChildrenEntity> results = cq.execute(); // Wrap and return return wrapWithCount(results, nodeRef); }
@Override public PagingResults<Pair<TopicInfo, Integer>> listHotTopics( NodeRef nodeRef, Date since, PagingRequest paging) { // Do the query GetDiscussionTopcisWithPostsCannedQueryFactory getCQFactory = (GetDiscussionTopcisWithPostsCannedQueryFactory)cannedQueryRegistry.getNamedObject(CANNED_QUERY_GET_TOPICS_WITH_POSTS); GetDiscussionTopcisWithPostsCannedQuery cq = (GetDiscussionTopcisWithPostsCannedQuery)getCQFactory.getCannedQuery( nodeRef, null, since, true, null, paging); // Execute the canned query CannedQueryResults<NodeWithChildrenEntity> results = cq.execute(); // Wrap and return return wrapWithCount(results, nodeRef); }
/** * Get all the downloads created before before. */ public List<List<DownloadEntity>> getDownloadsCreatedBefore(Date before) { NodeRef container = getContainer(); if (container == null) { return Collections.emptyList(); } // Grab the factory GetDownloadsCannedQueryFactory getDownloadCannedQueryFactory = (GetDownloadsCannedQueryFactory)queryRegistry.getNamedObject("downloadGetDownloadsCannedQueryFactory"); // Run the canned query GetDownloadsCannedQuery cq = (GetDownloadsCannedQuery)getDownloadCannedQueryFactory.getDownloadsCannedQuery(container, before); // Execute the canned query CannedQueryResults<DownloadEntity> results = cq.execute(); return results.getPages(); }
/** * Get all the downloads created before before. */ public List<List<DownloadEntity>> getDownloadsCreatedBefore(Date before) { NodeRef container = getContainer(); if (container == null) { return Collections.emptyList(); } // Grab the factory GetDownloadsCannedQueryFactory getDownloadCannedQueryFactory = (GetDownloadsCannedQueryFactory)queryRegistry.getNamedObject("downloadGetDownloadsCannedQueryFactory"); // Run the canned query GetDownloadsCannedQuery cq = (GetDownloadsCannedQuery)getDownloadCannedQueryFactory.getDownloadsCannedQuery(container, before); // Execute the canned query CannedQueryResults<DownloadEntity> results = cq.execute(); return results.getPages(); }
private CannedQueryResults<NodeRef> listImpl(NodeRef contextNodeRef, String pattern, Set<QName> assocTypeQNames, Set<QName> searchTypeQNames, Set<QName> ignoreAspectQNames, List<Pair<QName, Boolean>> sortProps, List<FilterProp> filterProps, PagingRequest pagingRequest) { Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null); // get canned query GetChildrenCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenCannedQueryFactory)cannedQueryRegistry.getNamedObject(CANNED_QUERY_FILEFOLDER_LIST); GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(contextNodeRef, pattern, assocTypeQNames, searchTypeQNames, ignoreAspectQNames, filterProps, sortProps, pagingRequest); // execute canned query CannedQueryResults<NodeRef> results = cq.execute(); if (start != null) { int cnt = results.getPagedResultCount(); int skipCount = pagingRequest.getSkipCount(); int maxItems = pagingRequest.getMaxItems(); boolean hasMoreItems = results.hasMoreItems(); Pair<Integer, Integer> totalCount = (pagingRequest.getRequestTotalCountMax() > 0 ? results.getTotalResultCount() : null); int pageNum = (skipCount / maxItems) + 1; logger.debug("List: "+cnt+" items in "+(System.currentTimeMillis()-start)+" msecs [pageNum="+pageNum+",skip="+skipCount+",max="+maxItems+",hasMorePages="+hasMoreItems+",totalCount="+totalCount+",parentNodeRef="+contextNodeRef+"]"); } return results; }
private CannedQueryResults<NodeRef> listImpl(NodeRef contextNodeRef, String pattern, Set<QName> assocTypeQNames, Set<QName> searchTypeQNames, Set<QName> ignoreAspectQNames, List<Pair<QName, Boolean>> sortProps, List<FilterProp> filterProps, PagingRequest pagingRequest) { Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null); // get canned query GetChildrenCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenCannedQueryFactory)cannedQueryRegistry.getNamedObject(CANNED_QUERY_FILEFOLDER_LIST); GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(contextNodeRef, pattern, assocTypeQNames, searchTypeQNames, ignoreAspectQNames, filterProps, sortProps, pagingRequest); // execute canned query CannedQueryResults<NodeRef> results = cq.execute(); if (start != null) { int cnt = results.getPagedResultCount(); int skipCount = pagingRequest.getSkipCount(); int maxItems = pagingRequest.getMaxItems(); boolean hasMoreItems = results.hasMoreItems(); Pair<Integer, Integer> totalCount = (pagingRequest.getRequestTotalCountMax() > 0 ? results.getTotalResultCount() : null); int pageNum = (skipCount / maxItems) + 1; logger.debug("List: "+cnt+" items in "+(System.currentTimeMillis()-start)+" msecs [pageNum="+pageNum+",skip="+skipCount+",max="+maxItems+",hasMorePages="+hasMoreItems+",totalCount="+totalCount+",parentNodeRef="+contextNodeRef+"]"); } return results; }
@Override public PagingResults<CopyInfo> getCopies(NodeRef originalNodeRef, PagingRequest pagingRequest) { CannedQueryFactory<CopyInfo> queryFactory = cannedQueryRegistry.getNamedObject(QUERY_FACTORY_GET_COPIES); CannedQueryParameters params = new CannedQueryParameters( new AbstractCopyCannedQueryFactory.CopyCannedQueryDetail(originalNodeRef), null, pagingRequest); CannedQuery<CopyInfo> query = queryFactory.getCannedQuery(params); return query.execute(); }
@Override public PagingResults<CopyInfo> getCopies(NodeRef originalNodeRef, PagingRequest pagingRequest) { CannedQueryFactory<CopyInfo> queryFactory = cannedQueryRegistry.getNamedObject(QUERY_FACTORY_GET_COPIES); CannedQueryParameters params = new CannedQueryParameters( new AbstractCopyCannedQueryFactory.CopyCannedQueryDetail(originalNodeRef), null, pagingRequest); CannedQuery<CopyInfo> query = queryFactory.getCannedQuery(params); return query.execute(); }
@Override public PagingResults<CopyInfo> getCopies( NodeRef originalNodeRef, NodeRef copyParentNodeRef, PagingRequest pagingRequest) { CannedQueryFactory<CopyInfo> queryFactory = cannedQueryRegistry.getNamedObject(QUERY_FACTORY_GET_COPIES); CannedQueryParameters params = new CannedQueryParameters( new AbstractCopyCannedQueryFactory.CopyCannedQueryDetail(originalNodeRef, copyParentNodeRef), null, pagingRequest); CannedQuery<CopyInfo> query = queryFactory.getCannedQuery(params); return query.execute(); }
@Override public PagingResults<CopyInfo> getCopies( NodeRef originalNodeRef, NodeRef copyParentNodeRef, PagingRequest pagingRequest) { CannedQueryFactory<CopyInfo> queryFactory = cannedQueryRegistry.getNamedObject(QUERY_FACTORY_GET_COPIES); CannedQueryParameters params = new CannedQueryParameters( new AbstractCopyCannedQueryFactory.CopyCannedQueryDetail(originalNodeRef, copyParentNodeRef), null, pagingRequest); CannedQuery<CopyInfo> query = queryFactory.getCannedQuery(params); return query.execute(); }
private PagingResults<LinkInfo> listLinks(String siteShortName, String user, Date from, Date to, PagingRequest paging) { NodeRef container = getSiteLinksContainer(siteShortName, false); if (container == null) { // No events return new EmptyPagingResults<LinkInfo>(); } // Run the canned query GetChildrenAuditableCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenAuditableCannedQueryFactory)cannedQueryRegistry.getNamedObject(CANNED_QUERY_GET_CHILDREN); GetChildrenAuditableCannedQuery cq = (GetChildrenAuditableCannedQuery)getChildrenCannedQueryFactory.getCannedQuery( container, LinksModel.TYPE_LINK, user, from, to, null, null, null, getChildrenCannedQueryFactory.createDateDescendingCQSortDetails(), paging); // Execute the canned query CannedQueryResults<NodeBackedEntity> results = cq.execute(); // Convert to Link objects return wrap(results, container); }
private PagingResults<LinkInfo> listLinks(String siteShortName, String user, Date from, Date to, PagingRequest paging) { NodeRef container = getSiteLinksContainer(siteShortName, false); if (container == null) { // No events return new EmptyPagingResults<LinkInfo>(); } // Run the canned query GetChildrenAuditableCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenAuditableCannedQueryFactory)cannedQueryRegistry.getNamedObject(CANNED_QUERY_GET_CHILDREN); GetChildrenAuditableCannedQuery cq = (GetChildrenAuditableCannedQuery)getChildrenCannedQueryFactory.getCannedQuery( container, LinksModel.TYPE_LINK, user, from, to, null, null, null, getChildrenCannedQueryFactory.createDateDescendingCQSortDetails(), paging); // Execute the canned query CannedQueryResults<NodeBackedEntity> results = cq.execute(); // Convert to Link objects return wrap(results, container); }
@SuppressWarnings("unchecked") public void testQueryPermissionCheckedResults() throws Exception { CannedQueryFactory<String> qfOne = namedQueryFactoryRegistry.getNamedObject(QUERY_TEST_ONE); CannedQueryParameters params = new CannedQueryParameters(null, null, null, 0, null); CannedQuery<String> qOne = qfOne.getCannedQuery(params); CannedQueryResults<String> qrOne = qOne.execute(); // Check pages assertEquals("Incorrect number of results", 9, qrOne.getPagedResultCount()); assertEquals("Incorrect result order", "ONE_0", qrOne.getPages().get(0).get(0)); assertEquals("Incorrect result order", "ONE_1", qrOne.getPages().get(0).get(1)); assertEquals("Incorrect result order", "ONE_2", qrOne.getPages().get(0).get(2)); assertEquals("Incorrect result order", "ONE_3", qrOne.getPages().get(0).get(3)); assertEquals("Incorrect result order", "ONE_4", qrOne.getPages().get(0).get(4)); // << missing 5! assertEquals("Incorrect result order", "ONE_6", qrOne.getPages().get(0).get(5)); assertEquals("Incorrect result order", "ONE_7", qrOne.getPages().get(0).get(6)); assertEquals("Incorrect result order", "ONE_8", qrOne.getPages().get(0).get(7)); assertEquals("Incorrect result order", "ONE_9", qrOne.getPages().get(0).get(8)); assertFalse("Should NOT have any more pages/items", qrOne.hasMoreItems()); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public void testRegistry() throws Exception { CannedQueryFactory<String> one = namedQueryFactoryRegistry.getNamedObject(QUERY_TEST_ONE); assertNotNull("No factory for " + QUERY_TEST_ONE, one); CannedQueryFactory<String> two = namedQueryFactoryRegistry.getNamedObject(QUERY_TEST_TWO); assertNotNull("No factory for " + QUERY_TEST_TWO, two); // Kick out registrations with incorrect naming convention try { TestCannedQueryFactory<Long> namedQueryFactoryBogus = new TestCannedQueryFactory(RESULTS_TWO); namedQueryFactoryBogus.setBeanName("test_query_blah"); namedQueryFactoryBogus.setRegistry(namedQueryFactoryRegistry); namedQueryFactoryBogus.afterPropertiesSet(); fail("Should have kicked out incorrectly-named registered queries"); } catch (IllegalArgumentException e) { // Expected } }
private CannedQueryResults<NodeRef> executeGetPeopleQuery( final PagingRequest pagingRequest, final String pattern, final List<QName> filterProps, final boolean includeAdministrators, final List<Pair<QName, Boolean>> sortProps) { GetPeopleCannedQueryFactory getPeopleCannedQueryFactory = (GetPeopleCannedQueryFactory) cannedQueryRegistry.getNamedObject(CANNED_QUERY_PEOPLE_LIST); final GetPeopleCannedQuery cq = (GetPeopleCannedQuery) getPeopleCannedQueryFactory .getCannedQuery( personService.getPeopleContainer(), pattern, filterProps, null, null, includeAdministrators, sortProps, pagingRequest); return transactionService.getRetryingTransactionHelper().doInTransaction(cq::execute, true); }
@SuppressWarnings("unchecked") public void testQuerySortedResults() throws Exception { CannedQueryFactory<String> qfOne = namedQueryFactoryRegistry.getNamedObject(QUERY_TEST_ONE); CannedQuerySortDetails qSortDetails = new CannedQuerySortDetails( new Pair<Object, SortOrder>("blah", SortOrder.DESCENDING)); CannedQueryParameters params = new CannedQueryParameters(null, null, qSortDetails); CannedQuery<String> qOne = qfOne.getCannedQuery(params); CannedQueryResults<String> qrOne = qOne.execute(); // Check pages assertEquals("Incorrect number of results", 9, qrOne.getPagedResultCount()); assertEquals("Expected inverse sorting", "ONE_9", qrOne.getPages().get(0).get(0)); assertEquals("Expected inverse sorting", "ONE_0", qrOne.getPages().get(0).get(8)); assertFalse("Should NOT have any more pages/items", qrOne.hasMoreItems()); }
@SuppressWarnings("unchecked") public void testQueryMaxResults() throws Exception { // An instance of the CannedQueryFactory could be injected or constructed as well CannedQueryFactory<String> qfOne = namedQueryFactoryRegistry.getNamedObject(QUERY_TEST_ONE); CannedQuery<String> qOne = qfOne.getCannedQuery(null, 0, 9, null); CannedQueryResults<String> qrOne = qOne.execute(); // Get the paged result count int pagedResultCount = qrOne.getPagedResultCount(); assertEquals("Incorrect number of results", 9, pagedResultCount); assertEquals("Incorrect number of pages", 1, qrOne.getPageCount()); List<List<String>> pages = qrOne.getPages(); assertEquals("Incorrect number of pages", 1, pages.size()); assertEquals("No sorting was specified in the parameters", "ONE_0", qrOne.getPages().get(0).get(0)); assertEquals("No sorting was specified in the parameters", "ONE_9", qrOne.getPages().get(0).get(8)); assertFalse("Should have more pages/items", qrOne.hasMoreItems()); }
@SuppressWarnings("unchecked") public PagingResults<FileInfo> listContainers(String shortName, PagingRequest pagingRequest) { SiteContainersCannedQueryFactory sitesContainersCannedQueryFactory = (SiteContainersCannedQueryFactory)cannedQueryRegistry.getNamedObject("siteContainersCannedQueryFactory"); CannedQueryPageDetails pageDetails = new CannedQueryPageDetails(pagingRequest.getSkipCount(), pagingRequest.getMaxItems()); CannedQuerySortDetails sortDetails = new CannedQuerySortDetails(new Pair<Object, SortOrder>(SiteContainersCannedQueryParams.SortFields.ContainerName, SortOrder.ASCENDING)); SiteContainersCannedQueryParams parameterBean = new SiteContainersCannedQueryParams(getSiteNodeRef(shortName)); CannedQueryParameters params = new CannedQueryParameters(parameterBean, pageDetails, sortDetails, pagingRequest.getRequestTotalCountMax(), pagingRequest.getQueryExecutionId()); CannedQuery<FileInfo> query = sitesContainersCannedQueryFactory.getCannedQuery(params); CannedQueryResults<FileInfo> results = query.execute(); return getPagingResults(pagingRequest, results); }
@SuppressWarnings("unchecked") public PagingResults<FileInfo> listContainers(String shortName, PagingRequest pagingRequest) { SiteContainersCannedQueryFactory sitesContainersCannedQueryFactory = (SiteContainersCannedQueryFactory)cannedQueryRegistry.getNamedObject("siteContainersCannedQueryFactory"); CannedQueryPageDetails pageDetails = new CannedQueryPageDetails(pagingRequest.getSkipCount(), pagingRequest.getMaxItems()); CannedQuerySortDetails sortDetails = new CannedQuerySortDetails(new Pair<Object, SortOrder>(SiteContainersCannedQueryParams.SortFields.ContainerName, SortOrder.ASCENDING)); SiteContainersCannedQueryParams parameterBean = new SiteContainersCannedQueryParams(getSiteNodeRef(shortName)); CannedQueryParameters params = new CannedQueryParameters(parameterBean, pageDetails, sortDetails, pagingRequest.getRequestTotalCountMax(), pagingRequest.getQueryExecutionId()); CannedQuery<FileInfo> query = sitesContainersCannedQueryFactory.getCannedQuery(params); CannedQueryResults<FileInfo> results = query.execute(); return getPagingResults(pagingRequest, results); }
@SuppressWarnings("unchecked") public void testQueryPermissionCheckedPagedTotalCount() throws Exception { CannedQueryFactory<String> qfOne = namedQueryFactoryRegistry.getNamedObject(QUERY_TEST_ONE); CannedQueryPageDetails qPageDetails = new CannedQueryPageDetails(5, 1, 1, 1); CannedQuerySortDetails qSortDetails = new CannedQuerySortDetails( new Pair<Object, SortOrder>("blah", SortOrder.DESCENDING)); CannedQueryParameters params = new CannedQueryParameters(null, qPageDetails, qSortDetails, 1000, null); CannedQuery<String> qOne = qfOne.getCannedQuery(params); CannedQueryResults<String> qrOne = qOne.execute(); // Check pages assertEquals("Incorrect number of total results", new Pair<Integer, Integer>(9,9), qrOne.getTotalResultCount()); // Pre-paging assertEquals("Incorrect number of paged results", 1, qrOne.getPagedResultCount()); // Skipped 5 assertEquals("Incorrect result order", "ONE_3", qrOne.getPages().get(0).get(0)); // Order reversed assertTrue("Should have more pages/items", qrOne.hasMoreItems()); }