static ComponentQuery buildDbQuery(SearchRequest request) { List<String> qualifiers = request.getQualifiers(); ComponentQuery.Builder query = ComponentQuery.builder() .setQualifiers(qualifiers.toArray(new String[qualifiers.size()])); ofNullable(request.getQuery()).ifPresent(q -> { query.setNameOrKeyQuery(q); query.setPartialMatchOnKey(true); }); ofNullable(request.getVisibility()).ifPresent(v -> query.setPrivate(Visibility.isPrivate(v))); ofNullable(request.getAnalyzedBefore()).ifPresent(d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime())); query.setOnProvisionedOnly(request.isOnProvisionedOnly()); ofNullable(request.getProjects()).ifPresent(keys -> query.setComponentKeys(new HashSet<>(keys))); ofNullable(request.getProjectIds()).ifPresent(uuids -> query.setComponentUuids(new HashSet<>(uuids))); return query.build(); }
@Test public void empty_list_of_components() { Supplier<ComponentQuery.Builder> query = () -> ComponentQuery.builder().setQualifiers(PROJECT); assertThat(query.get().setComponentIds(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentKeys(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentUuids(emptySet()).build().hasEmptySetOfComponents()).isTrue(); assertThat(query.get().setComponentIds(singleton(404L)).build().hasEmptySetOfComponents()).isFalse(); assertThat(query.get().setComponentKeys(singleton("P1")).build().hasEmptySetOfComponents()).isFalse(); assertThat(query.get().setComponentUuids(singleton("U1")).build().hasEmptySetOfComponents()).isFalse(); }
@Test public void selectByQuery_on_empty_list_of_component_uuids() { db.components().insertPrivateProject(); ComponentQuery dbQuery = ComponentQuery.builder().setQualifiers(PROJECT).setComponentUuids(emptySet()).build(); List<ComponentDto> result = underTest.selectByQuery(dbSession, dbQuery, 0, 10); int count = underTest.countByQuery(dbSession, dbQuery); assertThat(result).isEmpty(); assertThat(count).isEqualTo(0); }
static ComponentQuery buildDbQuery(SearchRequest request) { List<String> qualifiers = request.getQualifiers(); ComponentQuery.Builder query = ComponentQuery.builder() .setQualifiers(qualifiers.toArray(new String[qualifiers.size()])); setNullable(request.getQuery(), q -> { query.setNameOrKeyQuery(q); query.setPartialMatchOnKey(true); return query; }); setNullable(request.getVisibility(), v -> query.setPrivate(Visibility.isPrivate(v))); setNullable(request.getAnalyzedBefore(), d -> query.setAnalyzedBefore(parseDateOrDateTime(d).getTime())); setNullable(request.isOnProvisionedOnly(), query::setOnProvisionedOnly); setNullable(request.getProjects(), keys -> query.setComponentKeys(new HashSet<>(keys))); setNullable(request.getProjectIds(), uuids -> query.setComponentUuids(new HashSet<>(uuids))); return query.build(); }
@Test public void selectByQuery_on_component_uuids() { OrganizationDto organizationDto = db.organizations().insert(); ComponentDto sonarqube = db.components().insertComponent(newPrivateProjectDto(organizationDto)); ComponentDto jdk8 = db.components().insertComponent(newPrivateProjectDto(organizationDto)); ComponentDto cLang = db.components().insertComponent(newPrivateProjectDto(organizationDto)); ComponentQuery query = ComponentQuery.builder().setQualifiers(PROJECT) .setComponentUuids(newHashSet(sonarqube.uuid(), jdk8.uuid())).build(); List<ComponentDto> result = underTest.selectByQuery(dbSession, query, 0, 10); assertThat(result).hasSize(2).extracting(ComponentDto::uuid) .containsOnlyOnce(sonarqube.uuid(), jdk8.uuid()) .doesNotContain(cLang.uuid()); }