public Map<QualityProfileKey, Multimap<String, FacetValue>> getStatsByProfileKey( List<QualityProfileKey> keys) { String[] stringKeys = new String[keys.size()]; for (int i = 0; i < keys.size(); i++) { stringKeys[i] = keys.get(i).toString(); } SearchResponse response = getClient() .prepareSearch(this.getIndexName()) .setQuery( QueryBuilders.filteredQuery( QueryBuilders.matchAllQuery(), FilterBuilders.termsFilter( ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.field(), stringKeys))) .addAggregation( AggregationBuilders.terms(ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.field()) .field(ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.field()) .subAggregation( AggregationBuilders.terms( ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.field()) .field(ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.field())) .subAggregation( AggregationBuilders.terms( ActiveRuleNormalizer.ActiveRuleField.SEVERITY.field()) .field(ActiveRuleNormalizer.ActiveRuleField.SEVERITY.field()))) .setSize(0) .setTypes(this.getIndexType()) .get(); Map<QualityProfileKey, Multimap<String, FacetValue>> stats = new HashMap<QualityProfileKey, Multimap<String, FacetValue>>(); Aggregation aggregation = response.getAggregations().get(ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.field()); for (Terms.Bucket value : ((Terms) aggregation).getBuckets()) { stats.put( QualityProfileKey.parse(value.getKey()), this.processAggregations(value.getAggregations())); } return stats; }
@Override public ActiveRule.Inheritance inheritance() { String inheritance = getNullableField(ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.field()); if (inheritance == null || inheritance.isEmpty() || inheritance.toLowerCase().contains("none")) { return Inheritance.NONE; } else if (inheritance.toLowerCase().contains("herit")) { return Inheritance.INHERITED; } else if (inheritance.toLowerCase().contains("over")) { return Inheritance.OVERRIDES; } else { throw new IllegalStateException( "Value \"" + inheritance + "\" is not valid for rule's inheritance"); } }