import java.util.Map; | import java.util.Map; | ||||
import javax.annotation.CheckForNull; | import javax.annotation.CheckForNull; | ||||
import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||
import org.apache.commons.lang.StringUtils; | |||||
import org.sonar.api.rule.Severity; | import org.sonar.api.rule.Severity; | ||||
import org.sonar.api.rules.RuleType; | import org.sonar.api.rules.RuleType; | ||||
import org.sonar.api.utils.Duration; | import org.sonar.api.utils.Duration; | ||||
import org.sonar.db.rule.RuleDefinitionDto; | |||||
import org.sonar.server.es.BaseDoc; | import org.sonar.server.es.BaseDoc; | ||||
import org.sonar.server.permission.index.AuthorizationDoc; | import org.sonar.server.permission.index.AuthorizationDoc; | ||||
import org.sonar.server.security.SecurityStandards; | import org.sonar.server.security.SecurityStandards; | ||||
} | } | ||||
public Integer ruleId() { | public Integer ruleId() { | ||||
return getField(IssueIndexDefinition.FIELD_ISSUE_RULE_ID); | |||||
String field = getField(IssueIndexDefinition.FIELD_ISSUE_RULE_ID); | |||||
return Integer.valueOf(field); | |||||
} | } | ||||
public String language() { | public String language() { | ||||
} | } | ||||
public IssueDoc setRuleId(Integer s) { | public IssueDoc setRuleId(Integer s) { | ||||
setField(IssueIndexDefinition.FIELD_ISSUE_RULE_ID, s); | |||||
// leftpad with 0 to have correct sorting on this fields (other 10 becomes lower than 9) | |||||
String str = formatRuleId(s); | |||||
setField(IssueIndexDefinition.FIELD_ISSUE_RULE_ID, str); | |||||
return this; | return this; | ||||
} | } | ||||
public static String formatRuleId(RuleDefinitionDto dto) { | |||||
return formatRuleId(dto.getId()); | |||||
} | |||||
private static String formatRuleId(int s) { | |||||
return StringUtils.leftPad(String.valueOf(s), 10, "0"); | |||||
} | |||||
public IssueDoc setLanguage(@Nullable String s) { | public IssueDoc setLanguage(@Nullable String s) { | ||||
setField(IssueIndexDefinition.FIELD_ISSUE_LANGUAGE, s); | setField(IssueIndexDefinition.FIELD_ISSUE_LANGUAGE, s); | ||||
return this; | return this; |
import org.sonar.api.utils.DateUtils; | import org.sonar.api.utils.DateUtils; | ||||
import org.sonar.api.utils.System2; | import org.sonar.api.utils.System2; | ||||
import org.sonar.core.util.stream.MoreCollectors; | import org.sonar.core.util.stream.MoreCollectors; | ||||
import org.sonar.db.rule.RuleDefinitionDto; | |||||
import org.sonar.server.es.BaseDoc; | import org.sonar.server.es.BaseDoc; | ||||
import org.sonar.server.es.EsClient; | import org.sonar.server.es.EsClient; | ||||
import org.sonar.server.es.EsUtils; | import org.sonar.server.es.EsUtils; | ||||
filters.put(FIELD_ISSUE_AUTHOR_LOGIN, createTermsFilter(FIELD_ISSUE_AUTHOR_LOGIN, query.authors())); | filters.put(FIELD_ISSUE_AUTHOR_LOGIN, createTermsFilter(FIELD_ISSUE_AUTHOR_LOGIN, query.authors())); | ||||
filters.put(FIELD_ISSUE_RULE_ID, createTermsFilter( | filters.put(FIELD_ISSUE_RULE_ID, createTermsFilter( | ||||
FIELD_ISSUE_RULE_ID, | FIELD_ISSUE_RULE_ID, | ||||
query.rules().stream().map(RuleDefinitionDto::getId).collect(toList()))); | |||||
query.rules().stream().map(IssueDoc::formatRuleId).collect(toList()))); | |||||
filters.put(FIELD_ISSUE_STATUS, createTermsFilter(FIELD_ISSUE_STATUS, query.statuses())); | filters.put(FIELD_ISSUE_STATUS, createTermsFilter(FIELD_ISSUE_STATUS, query.statuses())); | ||||
filters.put(FIELD_ISSUE_ORGANIZATION_UUID, createTermFilter(FIELD_ISSUE_ORGANIZATION_UUID, query.organizationUuid())); | filters.put(FIELD_ISSUE_ORGANIZATION_UUID, createTermFilter(FIELD_ISSUE_ORGANIZATION_UUID, query.organizationUuid())); | ||||
filters.put(FIELD_ISSUE_OWASP_TOP_10, createTermsFilter(FIELD_ISSUE_OWASP_TOP_10, query.owaspTop10())); | filters.put(FIELD_ISSUE_OWASP_TOP_10, createTermsFilter(FIELD_ISSUE_OWASP_TOP_10, query.owaspTop10())); | ||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, DIRECTORIES, query.directories().toArray()); | addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, DIRECTORIES, query.directories().toArray()); | ||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, FILE_UUIDS, query.fileUuids().toArray()); | addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, FILE_UUIDS, query.fileUuids().toArray()); | ||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, LANGUAGES, query.languages().toArray()); | addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, LANGUAGES, query.languages().toArray()); | ||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, RULES, query.rules().stream().map(RuleDefinitionDto::getId).toArray()); | |||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, RULES, query.rules().stream().map(IssueDoc::formatRuleId).toArray()); | |||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, AUTHORS, query.authors().toArray()); | addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, AUTHORS, query.authors().toArray()); | ||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, AUTHOR, query.authors().toArray()); | addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, AUTHOR, query.authors().toArray()); | ||||
addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, TAGS, query.tags().toArray()); | addSimpleStickyFacetIfNeeded(options, stickyFacetBuilder, esSearch, TAGS, query.tags().toArray()); |
import org.sonar.server.es.Facets; | import org.sonar.server.es.Facets; | ||||
import org.sonar.server.es.SearchOptions; | import org.sonar.server.es.SearchOptions; | ||||
import org.sonar.server.issue.SearchRequest; | import org.sonar.server.issue.SearchRequest; | ||||
import org.sonar.server.issue.index.IssueDoc; | |||||
import org.sonar.server.issue.index.IssueIndex; | import org.sonar.server.issue.index.IssueIndex; | ||||
import org.sonar.server.issue.index.IssueQuery; | import org.sonar.server.issue.index.IssueQuery; | ||||
import org.sonar.server.issue.index.IssueQueryFactory; | import org.sonar.server.issue.index.IssueQueryFactory; | ||||
} | } | ||||
addMandatoryValuesToFacet(facets, PARAM_ASSIGNEES, assignees); | addMandatoryValuesToFacet(facets, PARAM_ASSIGNEES, assignees); | ||||
addMandatoryValuesToFacet(facets, FACET_ASSIGNED_TO_ME, singletonList(userSession.getUuid())); | addMandatoryValuesToFacet(facets, FACET_ASSIGNED_TO_ME, singletonList(userSession.getUuid())); | ||||
addMandatoryValuesToFacet(facets, PARAM_RULES, query.rules().stream().map(r -> Integer.toString(r.getId())).collect(toList())); | |||||
addMandatoryValuesToFacet(facets, PARAM_RULES, query.rules().stream().map(IssueDoc::formatRuleId).collect(toList())); | |||||
addMandatoryValuesToFacet(facets, PARAM_LANGUAGES, request.getLanguages()); | addMandatoryValuesToFacet(facets, PARAM_LANGUAGES, request.getLanguages()); | ||||
addMandatoryValuesToFacet(facets, PARAM_TAGS, request.getTags()); | addMandatoryValuesToFacet(facets, PARAM_TAGS, request.getTags()); | ||||
addMandatoryValuesToFacet(facets, PARAM_TYPES, RuleType.names()); | addMandatoryValuesToFacet(facets, PARAM_TYPES, RuleType.names()); |