private Statistics(DbSession dbSession, OrganizationDto organization, List<QProfileDto> profiles) { ActiveRuleDao dao = dbClient.activeRuleDao(); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); countRulesByProfileKey = dao.countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).build()); countOverridingRulesByProfileKey = dao.countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).setInheritance(OVERRIDES).build()); } }
@Test public void countActiveRulesByQuery_filter_by_organization() { db.qualityProfiles().activateRule(profile1, rule1); OrganizationDto anotherOrganization = db.organizations().insert(); QProfileDto profileOnAnotherOrganization = db.qualityProfiles().insert(anotherOrganization); db.qualityProfiles().activateRule(profileOnAnotherOrganization, rule1); assertThat(underTest.countActiveRulesByQuery(dbSession, ActiveRuleCountQuery.builder().setOrganization(organization).setProfiles(asList(profile1, profileOnAnotherOrganization)).build())) .containsOnly(entry(profile1.getKee(), 1L)); }
@Override public void handle(Request request, Response response) throws Exception { try (DbSession dbSession = dbClient.openSession(false)) { QProfileDto profile = qProfileWsSupport.getProfile(dbSession, QProfileReference.fromKey(request.mandatoryParam(PARAM_KEY))); OrganizationDto organization = qProfileWsSupport.getOrganization(dbSession, profile); boolean isDefault = dbClient.defaultQProfileDao().isDefault(dbSession, profile.getOrganizationUuid(), profile.getKee()); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); long activeRuleCount = countActiveRulesByQuery(dbSession, profile, builder); long deprecatedActiveRuleCount = countActiveRulesByQuery(dbSession, profile, builder.setRuleStatus(DEPRECATED)); long projectCount = countProjectsByOrganizationAndProfiles(dbSession, organization, profile); CompareToSonarWay compareToSonarWay = getSonarWay(request, dbSession, organization, profile); writeProtobuf(buildResponse(profile, isDefault, getLanguage(profile), activeRuleCount, deprecatedActiveRuleCount, projectCount, compareToSonarWay), request, response); } }
@Test public void countActiveRulesByQuery_filter_by_profiles() { db.qualityProfiles().activateRule(profile1, rule1); db.qualityProfiles().activateRule(profile1, rule2); db.qualityProfiles().activateRule(profile1, removedRule); db.qualityProfiles().activateRule(profile2, rule1); QProfileDto profileWithoutActiveRule = db.qualityProfiles().insert(organization); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1, profile2)).build())) .containsOnly(entry(profile1.getKee(), 2L), entry(profile2.getKee(), 1L)); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profileWithoutActiveRule)).build())).isEmpty(); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1, profile2, profileWithoutActiveRule)).build())).containsOnly( entry(profile1.getKee(), 2L), entry(profile2.getKee(), 1L)); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(emptyList()).build())).isEmpty(); }
@Test public void countActiveRulesByQuery_filter_by_inheritance() { db.qualityProfiles().activateRule(profile1, rule1); db.qualityProfiles().activateRule(profile1, rule2, ar -> ar.setInheritance(OVERRIDES)); db.qualityProfiles().activateRule(profile1, removedRule, ar -> ar.setInheritance(OVERRIDES)); db.qualityProfiles().activateRule(profile2, rule1, ar -> ar.setInheritance(OVERRIDES)); db.qualityProfiles().activateRule(profile2, rule2, ar -> ar.setInheritance(INHERITED)); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1, profile2)).setInheritance(OVERRIDES).build())) .containsOnly(entry(profile1.getKee(), 1L), entry(profile2.getKee(), 1L)); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1, profile2)).setInheritance(INHERITED).build())) .containsOnly(entry(profile2.getKee(), 1L)); }
@Test public void countActiveRulesByQuery_filter_by_rule_status() { RuleDefinitionDto betaRule = db.rules().insert(r -> r.setStatus(BETA)); db.qualityProfiles().activateRule(profile1, rule1); db.qualityProfiles().activateRule(profile1, rule2); db.qualityProfiles().activateRule(profile1, betaRule); db.qualityProfiles().activateRule(profile1, removedRule); db.qualityProfiles().activateRule(profile2, rule1); db.qualityProfiles().activateRule(profile2, betaRule); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1, profile2)).setRuleStatus(BETA).build())) .containsOnly(entry(profile1.getKee(), 1L), entry(profile2.getKee(), 1L)); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1)).setRuleStatus(READY).build())) .containsOnly(entry(profile1.getKee(), 2L)); assertThat(underTest.countActiveRulesByQuery(dbSession, builder.setProfiles(asList(profile1)).setRuleStatus(REMOVED).build())) .containsOnly(entry(profile1.getKee(), 1L)); }
private SearchData load(SearchRequest request) { try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = wsSupport.getOrganizationByKey(dbSession, request.getOrganizationKey()); ComponentDto project = findProject(dbSession, organization, request); List<QProfileDto> defaultProfiles = dbClient.qualityProfileDao().selectDefaultProfiles(dbSession, organization, getLanguageKeys()); List<String> editableProfiles = searchEditableProfiles(dbSession, organization); List<QProfileDto> profiles = searchProfiles(dbSession, request, organization, defaultProfiles, project); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); return new SearchData() .setOrganization(organization) .setProfiles(profiles) .setActiveRuleCountByProfileKey( dbClient.activeRuleDao().countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).build())) .setActiveDeprecatedRuleCountByProfileKey( dbClient.activeRuleDao().countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).setRuleStatus(DEPRECATED).build())) .setProjectCountByProfileKey(dbClient.qualityProfileDao().countProjectsByOrganizationAndProfiles(dbSession, organization, profiles)) .setDefaultProfileKeys(defaultProfiles) .setEditableProfileKeys(editableProfiles); } }
private Statistics(DbSession dbSession, OrganizationDto organization, List<QProfileDto> profiles) { ActiveRuleDao dao = dbClient.activeRuleDao(); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); countRulesByProfileKey = dao.countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).build()); countOverridingRulesByProfileKey = dao.countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).setInheritance(OVERRIDES).build()); } }
@Override public void handle(Request request, Response response) throws Exception { try (DbSession dbSession = dbClient.openSession(false)) { QProfileDto profile = qProfileWsSupport.getProfile(dbSession, QProfileReference.fromKey(request.mandatoryParam(PARAM_KEY))); OrganizationDto organization = qProfileWsSupport.getOrganization(dbSession, profile); boolean isDefault = dbClient.defaultQProfileDao().isDefault(dbSession, profile.getOrganizationUuid(), profile.getKee()); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); long activeRuleCount = countActiveRulesByQuery(dbSession, profile, builder); long deprecatedActiveRuleCount = countActiveRulesByQuery(dbSession, profile, builder.setRuleStatus(DEPRECATED)); long projectCount = countProjectsByOrganizationAndProfiles(dbSession, organization, profile); CompareToSonarWay compareToSonarWay = getSonarWay(request, dbSession, organization, profile); writeProtobuf(buildResponse(profile, isDefault, getLanguage(profile), activeRuleCount, deprecatedActiveRuleCount, projectCount, compareToSonarWay), request, response); } }
private SearchData load(SearchRequest request) { try (DbSession dbSession = dbClient.openSession(false)) { OrganizationDto organization = wsSupport.getOrganizationByKey(dbSession, request.getOrganizationKey()); ComponentDto project = findProject(dbSession, organization, request); List<QProfileDto> defaultProfiles = dbClient.qualityProfileDao().selectDefaultProfiles(dbSession, organization, getLanguageKeys()); List<String> editableProfiles = searchEditableProfiles(dbSession, organization); List<QProfileDto> profiles = searchProfiles(dbSession, request, organization, defaultProfiles, project); ActiveRuleCountQuery.Builder builder = ActiveRuleCountQuery.builder().setOrganization(organization); return new SearchData() .setOrganization(organization) .setProfiles(profiles) .setActiveRuleCountByProfileKey( dbClient.activeRuleDao().countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).build())) .setActiveDeprecatedRuleCountByProfileKey( dbClient.activeRuleDao().countActiveRulesByQuery(dbSession, builder.setProfiles(profiles).setRuleStatus(DEPRECATED).build())) .setProjectCountByProfileKey(dbClient.qualityProfileDao().countProjectsByOrganizationAndProfiles(dbSession, organization, profiles)) .setDefaultProfileKeys(defaultProfiles) .setEditableProfileKeys(editableProfiles); } }