DbSession session = dbClient.openSession(false);
try {
for (Issue issue : result.getHits()) {
- result.addProject(issue.key(),
- dbClient.componentDao().getByKey(session, issue.projectKey()));
- result.addComponent(issue.key(),
- dbClient.componentDao().getByKey(session, issue.componentKey()));
+ result.addProject(dbClient.componentDao().getByKey(session, issue.projectKey()));
+ result.addComponent(dbClient.componentDao().getByKey(session, issue.componentKey()));
}
} finally {
session.close();
esSearch.setQuery(esQuery);
}
- // Execute Term aggregations
- esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.SEVERITY.field())
- .field(IssueNormalizer.IssueField.SEVERITY.field()));
- esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.STATUS.field())
- .field(IssueNormalizer.IssueField.STATUS.field()));
- esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.RESOLUTION.field())
- .field(IssueNormalizer.IssueField.RESOLUTION.field()));
- esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.ACTION_PLAN.field())
- .field(IssueNormalizer.IssueField.ACTION_PLAN.field()));
+ if (options.isFacet()) {
+ // Execute Term aggregations
+ esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.SEVERITY.field())
+ .field(IssueNormalizer.IssueField.SEVERITY.field()));
+ esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.STATUS.field())
+ .field(IssueNormalizer.IssueField.STATUS.field()));
+ esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.RESOLUTION.field())
+ .field(IssueNormalizer.IssueField.RESOLUTION.field()));
+ esSearch.addAggregation(AggregationBuilders.terms(IssueNormalizer.IssueField.ACTION_PLAN.field())
+ .field(IssueNormalizer.IssueField.ACTION_PLAN.field()));
+ }
// Execute Function aggregation
esSearch.addAggregation(AggregationBuilders.sum("totalDuration")
@Override
public Component component(Issue issue) {
- return components.get(issue.key());
+ return components.get(issue.componentKey());
}
@Override
@Override
public Component project(Issue issue) {
- return projects.get(issue.key());
+ return projects.get(issue.projectKey());
}
@Override
return false;
}
- public void addProject(String key, ComponentDto project) {
- this.projects.put(key, project);
+ public void addProject(ComponentDto project) {
+ this.projects.put(project.key(), project);
}
- public void addComponent(String key, ComponentDto project) {
- this.components.put(key, project);
+ public void addComponent(ComponentDto component) {
+ this.components.put(component.key(), component);
}
}
tester.get(RuleDao.class).insert(session, rule);
project = new ComponentDto()
+ .setEnabled(true)
.setId(1L)
.setKey("MyProject")
.setProjectId(1L);
tester.get(ComponentDao.class).insert(session, project);
resource = new ComponentDto()
+ .setEnabled(true)
.setProjectId(1L)
.setKey("MyComponent")
.setId(2L);
tester.get(ComponentDao.class).insert(session, resource);
+ session.commit();
}
@After
}
@Test
- public void has_facets() throws Exception {
+ public void can_facet() throws Exception {
IssueDto issue1 = getIssue().setActionPlanKey("P1");
IssueDto issue2 = getIssue().setActionPlanKey("P2");
tester.get(IssueDao.class).insert(session, issue1, issue2);
IssueResult result = service.search(IssueQuery.builder().build(), new QueryOptions());
assertThat(result.getHits()).hasSize(2);
+ assertThat(result.getFacets()).isEmpty();
+
+ result = service.search(IssueQuery.builder().build(), new QueryOptions().setFacet(true));
assertThat(result.getFacets().keySet()).hasSize(4);
assertThat(result.getFacetKeys("actionPlan")).hasSize(2);
}
+ @Test
+ public void has_component_and_project() throws Exception {
+ IssueDto issue1 = getIssue().setActionPlanKey("P1");
+ IssueDto issue2 = getIssue().setActionPlanKey("P2");
+ tester.get(IssueDao.class).insert(session, issue1, issue2);
+ session.commit();
+
+ IssueResult result = service.search(IssueQuery.builder().build(), new QueryOptions());
+ assertThat(result.projects()).hasSize(1);
+ assertThat(result.components()).hasSize(1);
+ }
+
private IssueDto getIssue() {
return new IssueDto()
.setIssueCreationDate(DateUtils.parseDate("2014-09-04"))
<select id="selectByKey" parameterType="String" resultType="Component">
SELECT <include refid="componentColumns"/>
FROM projects p
- INNER JOIN snapshots s ON s.project_id=p.id AND s.islast=${_true}
+ LEFT JOIN snapshots s ON s.project_id=p.id AND s.islast=${_true}
<where>
AND p.enabled=${_true}
AND p.kee=#{key}