public Long countByQualityProfileKey(QualityProfileKey key) { CountRequestBuilder request = getClient() .prepareCount(getIndexName()) .setQuery( QueryBuilders.termQuery( ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.field(), key.toString())) .setRouting(key.toString()); return request.get().getCount(); }
void setParent( DbSession dbSession, QualityProfileKey key, @Nullable QualityProfileKey parentKey) { QualityProfileDto profile = db.qualityProfileDao().getNonNullByKey(dbSession, key); if (parentKey == null) { // unset if parent is defined, else nothing to do removeParent(dbSession, profile); } else if (profile.getParentKey() == null || !profile.getParentKey().equals(parentKey)) { QualityProfileDto parentProfile = db.qualityProfileDao().getNonNullByKey(dbSession, parentKey); if (isDescendant(dbSession, profile, parentProfile)) { throw new BadRequestException( String.format( "Descendant profile '%s' can not be selected as parent of '%s'", parentKey, key)); } removeParent(dbSession, profile); // set new parent profile.setParent(parentKey.name()); db.qualityProfileDao().update(dbSession, profile); for (ActiveRuleDto parentActiveRule : db.activeRuleDao().findByProfileKey(dbSession, parentKey)) { RuleActivation activation = new RuleActivation(ActiveRuleKey.of(key, parentActiveRule.getKey().ruleKey())); activate(dbSession, activation); } } }
public List<ActiveRule> findByProfile(QualityProfileKey key) { SearchRequestBuilder request = getClient() .prepareSearch(getIndexName()) .setQuery( QueryBuilders.termQuery( ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.field(), key.toString())) .setRouting(key.toString()) // TODO replace by scrolling .setSize(Integer.MAX_VALUE); SearchResponse response = request.get(); List<ActiveRule> activeRules = new ArrayList<ActiveRule>(); for (SearchHit hit : response.getHits()) { activeRules.add(toDoc(hit.getSource())); } return activeRules; }
@Test public void recreate_built_in_profiles_from_language_with_multiple_profiles_with_same_name_and_same_language() throws Exception { RulesProfile profile1 = RulesProfile.create("Default", "java"); profile1.activateRule(Rule.create("pmd", "rule").setSeverity(RulePriority.BLOCKER), null); ProfileDefinition profileDefinition1 = mock(ProfileDefinition.class); when(profileDefinition1.createProfile(any(ValidationMessages.class))).thenReturn(profile1); definitions.add(profileDefinition1); RulesProfile profile2 = RulesProfile.create("Default", "java"); profile2.activateRule(Rule.create("checkstyle", "rule").setSeverity(RulePriority.MAJOR), null); ProfileDefinition profileDefinition2 = mock(ProfileDefinition.class); when(profileDefinition2.createProfile(any(ValidationMessages.class))).thenReturn(profile2); definitions.add(profileDefinition2); when(ruleDao.getNullableByKey(session, RuleKey.of("pmd", "rule"))) .thenReturn(new RuleDto().setId(10).setSeverity("INFO")); when(ruleDao.getNullableByKey(session, RuleKey.of("checkstyle", "rule"))) .thenReturn(new RuleDto().setId(11).setSeverity("INFO")); when(qProfileOperations.newProfile( eq("Default"), eq("java"), eq(true), any(UserSession.class), eq(session))) .thenReturn(new QProfile().setId(1)); backup.recreateBuiltInProfilesByLanguage("java"); verify(qProfileActiveRuleOperations) .createActiveRule( eq(QualityProfileKey.of("Default", "java")), eq(RuleKey.of("pmd", "rule")), eq("BLOCKER"), eq(session)); verify(qProfileActiveRuleOperations) .createActiveRule( eq(QualityProfileKey.of("Default", "java")), eq(RuleKey.of("checkstyle", "rule")), eq("MAJOR"), eq(session)); verifyNoMoreInteractions(qProfileActiveRuleOperations); verify(dryRunCache).reportGlobalModification(session); verify(session).commit(); }
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; }
@Test public void recreate_built_in_profiles_from_language() throws Exception { String name = "Default"; String language = "java"; RulesProfile profile = RulesProfile.create(name, language); Rule rule = Rule.create("pmd", "rule"); rule.createParameter("max"); ActiveRule activeRule = profile.activateRule(rule, RulePriority.BLOCKER); activeRule.setParameter("max", "10"); ProfileDefinition profileDefinition = mock(ProfileDefinition.class); when(profileDefinition.createProfile(any(ValidationMessages.class))).thenReturn(profile); definitions.add(profileDefinition); when(ruleDao.getNullableByKey(session, RuleKey.of("pmd", "rule"))) .thenReturn(new RuleDto().setId(10).setSeverity("INFO")); when(qProfileOperations.newProfile( eq(name), eq(language), eq(true), any(UserSession.class), eq(session))) .thenReturn(new QProfile().setId(1)); backup.recreateBuiltInProfilesByLanguage(language); verify(qProfileActiveRuleOperations) .createActiveRule( eq(QualityProfileKey.of(name, language)), eq(RuleKey.of("pmd", "rule")), eq("BLOCKER"), eq(session)); verify(qProfileActiveRuleOperations) .updateActiveRuleParam(any(ActiveRuleDto.class), eq("max"), eq("10"), eq(session)); verifyNoMoreInteractions(qProfileActiveRuleOperations); verify(dryRunCache).reportGlobalModification(session); verify(session).commit(); }