import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.FIELD_NAME;
import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.FIELD_ORGANIZATION_UUID;
import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.FIELD_QUALITY_GATE_STATUS;
+import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.FIELD_TAGS;
import static org.sonar.server.measure.index.ProjectMeasuresIndexDefinition.INDEX_TYPE_PROJECT_MEASURES;
import static org.sonar.server.measure.index.ProjectMeasuresQuery.SORT_BY_NAME;
import static org.sonarqube.ws.client.project.ProjectsWsParameters.FILTER_LANGUAGE;
query.getOrganizationUuid()
.ifPresent(organizationUuid -> filters.put(FIELD_ORGANIZATION_UUID, termQuery(FIELD_ORGANIZATION_UUID, organizationUuid)));
+ query.getTags()
+ .ifPresent(tags -> filters.put(FIELD_TAGS, termsQuery(FIELD_TAGS, tags)));
+
createTextQueryFilter(query).ifPresent(queryBuilder -> filters.put("textQuery", queryBuilder));
return filters;
}
private String organizationUuid;
private Set<String> projectUuids;
private Set<String> languages;
+ private Set<String> tags;
private String sort = SORT_BY_NAME;
private boolean asc = true;
private String queryText;
return Optional.ofNullable(languages);
}
+ public ProjectMeasuresQuery setTags(@Nullable Set<String> tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ public Optional<Set<String>> getTags() {
+ return Optional.ofNullable(tags);
+ }
+
public Optional<String> getQueryText() {
return Optional.ofNullable(queryText);
}
newDoc(project4).setLanguages(ImmutableMap.of("<null>", 10, "java", 2, "xoo", 12)));
assertResults(new ProjectMeasuresQuery().setLanguages(newHashSet("java", "xoo")), PROJECT1, PROJECT2, PROJECT3, project4);
- assertResults(new ProjectMeasuresQuery().setLanguages(newHashSet("java")), PROJECT1,project4);
+ assertResults(new ProjectMeasuresQuery().setLanguages(newHashSet("java")), PROJECT1, project4);
assertResults(new ProjectMeasuresQuery().setLanguages(newHashSet("unknown")));
}
assertResults(query, PROJECT1, PROJECT3);
}
+ @Test
+ public void filter_on_tags() {
+ index(
+ newDoc(PROJECT1).setTags(newArrayList("finance", "platform")),
+ newDoc(PROJECT2).setTags(newArrayList("marketing", "platform")),
+ newDoc(PROJECT3).setTags(newArrayList("finance", "language")));
+
+ assertResults(new ProjectMeasuresQuery().setTags(newHashSet("finance")), PROJECT1, PROJECT3);
+ assertResults(new ProjectMeasuresQuery().setTags(newHashSet("finance", "language")), PROJECT1, PROJECT3);
+ assertResults(new ProjectMeasuresQuery().setTags(newHashSet("finance", "marketing")), PROJECT1, PROJECT2, PROJECT3);
+ assertResults(new ProjectMeasuresQuery().setTags(newHashSet("marketing")), PROJECT2);
+ assertNoResults(new ProjectMeasuresQuery().setTags(newHashSet("tag 42")));
+ }
+
@Test
public void filter_on_organization() {
OrganizationDto org1 = OrganizationTesting.newOrganizationDto();