@Override public SearchRequest getSearchUrlSuffix(TimePeriod value, SearchRequest searchRequest) { TimePeriod timePeriod = value; Date startDate = timePeriod.getStart(); Date endDate = new Date(timePeriod.getEnd().getTime()); // copy the old searchrequest's query JqlQueryBuilder builder = JqlQueryBuilder.newBuilder(searchRequest.getQuery()); builder.where().defaultAnd().addDateRangeCondition(documentConstant, startDate, endDate); return new SearchRequest(builder.buildQuery(), searchRequest.getOwnerUserName(), null, null); }
private String createIssueNavigatorUrl( final SearchRequest searchRequest, final VelocityRequestContext velocityRequestContext, final User remoteUser) { if (searchRequest == null) { return null; } else { final Query optimizedQuery = new RedundantClausesQueryOptimizer().optimizeQuery(searchRequest.getQuery()); return velocityRequestContext.getCanonicalBaseUrl() + "/secure/IssueNavigator.jspa?reset=true" + searchService.getQueryString(remoteUser, optimizedQuery); } }
/** * Test that the manager executes the correct search to find the recent comments. * * @param issueIds the issue ids to limit the comment search by. * @param request the search request being used to find the comments. This is the request that is * normally used to find all the issue ids to form the scope of the comment search. The * request may also be used to add extra "update date" criteria to the comment search. * @param user the user performing the search. * @param includeDates true if and only if the passed search request should be used to create * extra "update date" criteria. * @param expectedQuery the query that we expect to be generated by the manager. * @throws Exception this is a test, just rethrow for a failure. */ private void _testGetRecentComments( final List<Long> issueIds, final SearchRequest request, final User user, final boolean includeDates, final org.apache.lucene.search.Query expectedQuery) throws Exception { // the issue searcher is never called, but we need it there. final MockControl mockIssueSearcherControl = MockClassControl.createControl(IndexSearcher.class); final IndexSearcher mockIssueSearcher = (IndexSearcher) mockIssueSearcherControl.getMock(); mockIssueSearcherControl.replay(); // this is where we check to make sure search lucene with the correct comment. final MockControl mockCommentSearcherControl = MockClassControl.createControl(IndexSearcher.class); final IndexSearcher mockCommentSearcher = (IndexSearcher) mockCommentSearcherControl.getMock(); final Sort sort = new Sort( new SortField[] { new SortField(DocumentConstants.COMMENT_UPDATED, SortField.STRING, true) }); final ArgumentsMatcher compositeArgumentsMatcher = ArgumentsMatcherBuilder.newNaturalBuilder() .addDefaultMatcher() .addDefaultMatcher() .addArgumentMatcher(Sort.class, new LuceneSortMatcher()) .asArgumentsMatcher(); mockCommentSearcher.search(expectedQuery, Integer.MAX_VALUE, sort); mockCommentSearcherControl.setMatcher(compositeArgumentsMatcher); mockCommentSearcherControl.setReturnValue(null); mockCommentSearcherControl.replay(); final MockSearchProviderFactory factory = new MockSearchProviderFactory(); factory.addRegistration(SearchProviderFactory.ISSUE_INDEX, mockIssueSearcher); factory.addRegistration(SearchProviderFactory.COMMENT_INDEX, mockCommentSearcher); // create a IssueSearchProvider that will return our constant list of ids. MockIssueSearchProvider mockIssueSearchProvider = new MockIssueSearchProvider(issueIds, user, request.getQuery()); final SearchService service = EasyMock.createMock(SearchService.class); EasyMock.expect(service.doesQueryFitFilterForm(user, request.getQuery())) .andReturn(includeDates); EasyMock.replay(service); MyLuceneQueryModifier myLuceneQueryModifier = new MyLuceneQueryModifier(); CommentService commentService = EasyMock.createMock(CommentService.class); JqlOperandResolver jqlOperandResolver = MockJqlOperandResolver.createSimpleSupport(); final DefaultRecentCommentManager defaultCommentManager = new DefaultRecentCommentManager( commentService, factory, mockIssueSearchProvider, dateSupport, jqlOperandResolver, service, myLuceneQueryModifier); defaultCommentManager.getRecentComments(request, user); mockIssueSearcherControl.verify(); mockCommentSearcherControl.verify(); }