public SearchResult<WorkflowSummary> search(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<String> result = executionDAOFacade.searchWorkflows(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflows = result.getResults().stream().parallel().map(workflowId -> { try { return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId,false)); } catch(Exception e) { logger.error("Error fetching workflow by id: {}", workflowId, e); return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); int missing = result.getResults().size() - workflows.size(); long totalHits = result.getTotalHits() - missing; return new SearchResult<>(totalHits, workflows); }
@Override public SearchResult<String> searchWorkflows(String query, String freeText, int start, int count, List<String> sort) { return new SearchResult<>(0, new ArrayList<>()); }
@Override public SearchResult<String> searchTasks(String query, String freeText, int start, int count, List<String> sort) { return new SearchResult<>(0, new ArrayList<>()); }
public SearchResult<TaskSummary> searchTasks(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<String> result = executionDAOFacade.searchTasks(query, freeText, start, size, sortOptions); List<TaskSummary> workflows = result.getResults().stream() .parallel() .map(taskId -> { try { return new TaskSummary(executionDAOFacade.getTaskById(taskId)); } catch(Exception e) { logger.error(e.getMessage(), e); return null; } }) .filter(Objects::nonNull) .collect(Collectors.toList()); int missing = result.getResults().size() - workflows.size(); long totalHits = result.getTotalHits() - missing; return new SearchResult<>(totalHits, workflows); }
public SearchResult<WorkflowSummary> searchWorkflowByTasks(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<TaskSummary> taskSummarySearchResult = searchTasks(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflowSummaries = taskSummarySearchResult.getResults().stream() .parallel() .map(taskSummary -> { try { String workflowId = taskSummary.getWorkflowId(); return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId, false)); } catch (Exception e) { logger.error("Error fetching workflow by id: {}", taskSummary.getWorkflowId(), e); return null; } }) .filter(Objects::nonNull) .collect(Collectors.toList()); int missing = taskSummarySearchResult.getResults().size() - workflowSummaries.size(); long totalHits = taskSummarySearchResult.getTotalHits() - missing; return new SearchResult<>(totalHits, workflowSummaries); }
return new SearchResult<WorkflowSummary>( result.getTotalHits(), result.getResultsList().stream().map(protoMapper::fromProto).collect(Collectors.toList())
@Test public void testGetWorkflowsByCorrelationId() { when(executionDAO.canSearchAcrossWorkflows()).thenReturn(true); when(executionDAO.getWorkflowsByCorrelationId(any(), anyBoolean())).thenReturn(Collections.singletonList(new Workflow())); List<Workflow> workflows = executionDAOFacade.getWorkflowsByCorrelationId("correlationId", true); assertNotNull(workflows); assertEquals(1, workflows.size()); verify(indexDAO, never()).searchWorkflows(anyString(), anyString(), anyInt(), anyInt(), any()); when(executionDAO.canSearchAcrossWorkflows()).thenReturn(false); List<String> workflowIds = new ArrayList<>(); workflowIds.add("workflowId"); SearchResult<String> searchResult = new SearchResult<>(); searchResult.setResults(workflowIds); when(indexDAO.searchWorkflows(anyString(), anyString(), anyInt(), anyInt(), any())).thenReturn(searchResult); when(executionDAO.getWorkflow("workflowId", true)).thenReturn(new Workflow()); workflows = executionDAOFacade.getWorkflowsByCorrelationId("correlationId", true); assertNotNull(workflows); assertEquals(1, workflows.size()); }
response.getHits().forEach(hit -> result.add(hit.getId())); long count = response.getHits().getTotalHits(); return new SearchResult<>(count, result);
@Test public void testSearchWorkflows() { Workflow workflow = new Workflow(); workflow.setCorrelationId("c123"); WorkflowSummary workflowSummary = new WorkflowSummary(workflow); List<WorkflowSummary> listOfWorkflowSummary = new ArrayList<WorkflowSummary>() {{ add(workflowSummary); }}; SearchResult<WorkflowSummary> searchResult = new SearchResult<WorkflowSummary>(100, listOfWorkflowSummary); when(mockExecutionService.search(anyString(), anyString(), anyInt(), anyInt(), anyListOf(String.class))).thenReturn(searchResult); assertEquals(searchResult, workflowService.searchWorkflows(0,100,"asc", "*", "*")); }
private SearchResult<String> search(String indexName, String structuredQuery, int start, int size, List<String> sortOptions, String freeTextQuery, String docType) { try { QueryBuilder queryBuilder = QueryBuilders.matchAllQuery(); if (StringUtils.isNotEmpty(structuredQuery)) { Expression expression = Expression.fromString(structuredQuery); queryBuilder = expression.getFilterBuilder(); } BoolQueryBuilder filterQuery = QueryBuilders.boolQuery().must(queryBuilder); QueryStringQueryBuilder stringQuery = QueryBuilders.queryStringQuery(freeTextQuery); BoolQueryBuilder fq = QueryBuilders.boolQuery().must(stringQuery).must(filterQuery); final SearchRequestBuilder srb = elasticSearchClient.prepareSearch(indexName) .setQuery(fq) .setTypes(docType) .storedFields("_id") .setFrom(start) .setSize(size); if (sortOptions != null) { sortOptions.forEach(sortOption -> addSortOptionToSearchRequest(srb, sortOption)); } SearchResponse response = srb.get(); LinkedList<String> result = StreamSupport.stream(response.getHits().spliterator(), false) .map(SearchHit::getId) .collect(Collectors.toCollection(LinkedList::new)); long count = response.getHits().getTotalHits(); return new SearchResult<String>(count, result); } catch (ParserException e) { throw new ApplicationException(Code.BACKEND_ERROR, e.getMessage(), e); } }
@Test public void search() { Task task = new Task(); task.setTaskType("SIMPLE"); task.setWorkerId("123"); task.setDomain("test"); task.setStatus(Task.Status.IN_PROGRESS); TaskSummary taskSummary = new TaskSummary(task); ArrayList<TaskSummary> listOfTaskSummary = new ArrayList<TaskSummary>() {{ add(taskSummary); }}; SearchResult<TaskSummary> searchResult = new SearchResult<TaskSummary>(100, listOfTaskSummary); listOfTaskSummary.add(taskSummary); when(mockTaskService.search(anyInt(), anyInt(), anyString(), anyString(), anyString())).thenReturn(searchResult); assertEquals(searchResult, taskResource.search(0,100,"asc", "*", "*")); } }
public SearchResult<WorkflowSummary> search(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<String> result = executionDAOFacade.searchWorkflows(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflows = result.getResults().stream().parallel().map(workflowId -> { try { return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId,false)); } catch(Exception e) { logger.error("Error fetching workflow by id: {}", workflowId, e); return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); int missing = result.getResults().size() - workflows.size(); long totalHits = result.getTotalHits() - missing; return new SearchResult<>(totalHits, workflows); }
public SearchResult<TaskSummary> searchTasks(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<String> result = executionDAOFacade.searchTasks(query, freeText, start, size, sortOptions); List<TaskSummary> workflows = result.getResults().stream() .parallel() .map(taskId -> { try { return new TaskSummary(executionDAOFacade.getTaskById(taskId)); } catch(Exception e) { logger.error(e.getMessage(), e); return null; } }) .filter(Objects::nonNull) .collect(Collectors.toList()); int missing = result.getResults().size() - workflows.size(); long totalHits = result.getTotalHits() - missing; return new SearchResult<>(totalHits, workflows); }
public SearchResult<WorkflowSummary> searchWorkflowByTasks(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<TaskSummary> taskSummarySearchResult = searchTasks(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflowSummaries = taskSummarySearchResult.getResults().stream() .parallel() .map(taskSummary -> { try { String workflowId = taskSummary.getWorkflowId(); return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId, false)); } catch (Exception e) { logger.error("Error fetching workflow by id: {}", taskSummary.getWorkflowId(), e); return null; } }) .filter(Objects::nonNull) .collect(Collectors.toList()); int missing = taskSummarySearchResult.getResults().size() - workflowSummaries.size(); long totalHits = taskSummarySearchResult.getTotalHits() - missing; return new SearchResult<>(totalHits, workflowSummaries); }