diff options
author | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-10-24 16:54:09 +0200 |
---|---|---|
committer | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-10-24 16:54:14 +0200 |
commit | 54ad5263a1e5272e97ffbb96837aeef68aa9fe96 (patch) | |
tree | 32817a866940954fe70ea3738a2da6b7f8b3fa35 /server/sonar-server/src/main/java | |
parent | fd3f775bc81b4bc4837e8c14b3e744dfb91c2e56 (diff) | |
download | sonarqube-54ad5263a1e5272e97ffbb96837aeef68aa9fe96.tar.gz sonarqube-54ad5263a1e5272e97ffbb96837aeef68aa9fe96.zip |
SONAR-5718 Add "unresolved" item in resolution facet
Diffstat (limited to 'server/sonar-server/src/main/java')
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java | 24 | ||||
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/search/Result.java | 5 |
2 files changed, 27 insertions, 2 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java index 5771dcf49ac..4667cc906c4 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java @@ -305,7 +305,7 @@ public class IssueIndex extends BaseIndex<Issue, IssueDto, String> { // Execute Term aggregations esSearch.addAggregation(stickyFacetBuilder(esQuery, filters, IssueNormalizer.IssueField.SEVERITY.field(), IssueFilterParameters.SEVERITIES)); esSearch.addAggregation(stickyFacetBuilder(esQuery, filters, IssueNormalizer.IssueField.STATUS.field(), IssueFilterParameters.STATUSES)); - esSearch.addAggregation(stickyFacetBuilder(esQuery, filters, IssueNormalizer.IssueField.RESOLUTION.field(), IssueFilterParameters.RESOLUTIONS)); + esSearch.addAggregation(getResolutionFacet(query, options, filters, esQuery)); esSearch.addAggregation(stickyFacetBuilder(esQuery, filters, IssueNormalizer.IssueField.ACTION_PLAN.field(), IssueFilterParameters.ACTION_PLANS)); esSearch.addAggregation(stickyFacetBuilder(esQuery, filters, IssueNormalizer.IssueField.PROJECT.field(), IssueFilterParameters.COMPONENT_ROOTS, query.componentRoots().toArray(new String[0]))); @@ -338,6 +338,28 @@ public class IssueIndex extends BaseIndex<Issue, IssueDto, String> { .subAggregation(facetTopAggregation); } + private AggregationBuilder getResolutionFacet(IssueQuery query, QueryContext options, Map<String, FilterBuilder> filters, QueryBuilder esQuery) { + String fieldName = IssueNormalizer.IssueField.RESOLUTION.field(); + String facetName = IssueFilterParameters.RESOLUTIONS; + + // Same as in super.stickyFacetBuilder + BoolFilterBuilder facetFilter = getStickyFacetFilter(esQuery, filters, fieldName); + FilterAggregationBuilder facetTopAggregation = buildTopFacetAggregation(fieldName, facetName, facetFilter); + addSelectedItemsToFacet(fieldName, facetName, facetTopAggregation, query.resolutions().toArray(new String[0])); + + // Add missing facet for unresolved issues + facetTopAggregation.subAggregation( + AggregationBuilders + .missing(facetName + "_missing") + .field(fieldName) + ); + + return AggregationBuilders + .global(facetName) + .subAggregation(facetTopAggregation); + } + + private void setSorting(IssueQuery query, SearchRequestBuilder esSearch) { /* integrate Query Sort */ String sortField = query.sort(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/search/Result.java b/server/sonar-server/src/main/java/org/sonar/server/search/Result.java index bc2736595e6..d7861e0cd85 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/search/Result.java +++ b/server/sonar-server/src/main/java/org/sonar/server/search/Result.java @@ -72,7 +72,10 @@ public class Result<K> { private void processAggregation(Aggregation aggregation) { if (Missing.class.isAssignableFrom(aggregation.getClass())) { Missing missing = (Missing) aggregation; - this.facets.put(aggregation.getName().replace("_missing",""), new FacetValue("", (int) missing.getDocCount())); + int docCount = (int) missing.getDocCount(); + if (docCount > 0) { + this.facets.put(aggregation.getName().replace("_missing",""), new FacetValue("", docCount)); + } } else if (Terms.class.isAssignableFrom(aggregation.getClass())) { Terms termAggregation = (Terms) aggregation; for (Terms.Bucket value : termAggregation.getBuckets()) { |