Browse Source

SONAR-12717 store ruleId padded with 0s to fix sorting on this field

tags/8.2.0.32929
Sébastien Lesaint 4 years ago
parent
commit
611fb9ad68

+ 15
- 2
server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueDoc.java View File

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;

+ 2
- 3
server/sonar-webserver-es/src/main/java/org/sonar/server/issue/index/IssueIndex.java View File

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());

+ 2
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/ws/SearchAction.java View File

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());

Loading…
Cancel
Save