import org.elasticsearch.common.collect.Lists;
import org.elasticsearch.common.collect.Maps;
-import org.joda.time.format.ISODateTimeFormat;
+import org.elasticsearch.common.joda.time.format.ISODateTimeFormat;
import org.sonar.api.rules.ActiveRule;
import org.sonar.check.Cardinality;
import org.sonar.server.rule.ActiveRuleDocument;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.action.get.MultiGetItemResponse;
+import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.common.collect.Lists;
import org.elasticsearch.index.query.BoolFilterBuilder;
}
if (hitCounter > 0) {
- MultiGetItemResponse[] responses = index.client().prepareMultiGet().add(INDEX_RULES, TYPE_RULE, parentIds)
- .execute().actionGet().getResponses();
+ MultiGetRequestBuilder getParentRules = index.client().prepareMultiGet().add(INDEX_RULES, TYPE_RULE, parentIds);
+ MultiGetItemResponse[] responses = index.executeMultiGet(getParentRules);
for (int i = 0; i < hitCounter; i ++) {
result.add(new QProfileRule(responses[i].getResponse().getSourceAsMap(), activeRuleSources.get(i)));
import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.count.CountRequest;
import org.elasticsearch.action.count.CountRequestBuilder;
+import org.elasticsearch.action.get.MultiGetItemResponse;
+import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import java.io.IOException;
import java.net.URL;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
try {
return builder.execute().actionGet().getHits();
} finally {
- watch.stop("Request executed: %s", builderToString(builder));
+ SearchRequest request = builder.request();
+ watch.stop("Executed search on ind(ex|ices) '%s' and type(s) '%s' with request: %s",
+ Arrays.toString(request.indices()), Arrays.toString(request.types()), builderToString(builder));
}
}
+ public MultiGetItemResponse[] executeMultiGet(MultiGetRequestBuilder builder) {
+ StopWatch watch = createWatch();
+ MultiGetItemResponse[] result = null;
+ try {
+ result = builder.execute().actionGet().getResponses();
+ } finally {
+ watch.stop("Got %d documents by multiget", result == null ? 0 : result.length);
+ }
+ return result;
+ }
+
public long executeCount(CountRequestBuilder builder) {
StopWatch watch = createWatch();
+ long count = 0;
try {
- return builder.execute().actionGet().getCount();
+ count = builder.execute().actionGet().getCount();
} finally {
- watch.stop("Count executed: %s", builder.toString());
+ CountRequest request = builder.request();
+ watch.stop("Counted %d documents on ind(ex|ices) '%s'",
+ count, Arrays.toString(request.indices()));
}
+ return count;
}
private String builderToString(SearchRequestBuilder builder) {
[message('rules.status.ready'), Rule::STATUS_READY]]
@select_sort_by = [[message('rules_configuration.rule_name'), Rule::SORT_BY_RULE_NAME], [message('rules_configuration.creation_date'), Rule::SORT_BY_CREATION_DATE]]
- begin
- stop_watch = Internal.profiling.start("rules", "BASIC")
+ stop_watch = Internal.profiling.start("rules", "BASIC")
- criteria = {
- "profileId" => @profile.id.to_i, "activation" => @activation, "severities" => @priorities, "inheritance" => @inheritance, "statuses" => @status,
- "repositoryKeys" => @repositories, "nameOrKey" => @searchtext, "include_parameters_and_notes" => true, "language" => @profile.language, "sort_by" => @sort_by}
+ criteria = {
+ "profileId" => @profile.id.to_i, "activation" => @activation, "severities" => @priorities, "inheritance" => @inheritance, "statuses" => @status,
+ "repositoryKeys" => @repositories, "nameOrKey" => @searchtext, "include_parameters_and_notes" => true, "language" => @profile.language, "sort_by" => @sort_by}
- @rules = []
- @pagination = Api::Pagination.new(params)
+ @rules = []
+ @pagination = Api::Pagination.new(params)
- call_backend do
- query = Java::OrgSonarServerRule::ProfileRuleQuery::parse(criteria.to_java)
- paging = Java::OrgSonarServerQualityprofile::Paging.create(@pagination.per_page.to_i, @pagination.page.to_i)
+ call_backend do
+ query = Java::OrgSonarServerRule::ProfileRuleQuery::parse(criteria.to_java)
+ paging = Java::OrgSonarServerQualityprofile::Paging.create(@pagination.per_page.to_i, @pagination.page.to_i)
- if @activation==STATUS_ACTIVE
- result = Internal.quality_profiles.searchActiveRules(query, paging)
- else
- result = Internal.quality_profiles.searchInactiveRules(query, paging)
- end
+ if @activation==STATUS_ACTIVE
+ result = Internal.quality_profiles.searchActiveRules(query, paging)
+ else
+ result = Internal.quality_profiles.searchInactiveRules(query, paging)
+ end
- @rules = result.rules
- @pagination.count = result.paging.total
+ @rules = result.rules
+ @pagination.count = result.paging.total
- unless @searchtext.blank?
- if @activation==STATUS_ACTIVE
- @hidden_inactives = Internal.quality_profiles.countInactiveRules(query)
- else
- @hidden_actives = Internal.quality_profiles.countActiveRules(query)
- end
+ unless @searchtext.blank?
+ if @activation==STATUS_ACTIVE
+ @hidden_inactives = Internal.quality_profiles.countInactiveRules(query)
+ else
+ @hidden_actives = Internal.quality_profiles.countActiveRules(query)
end
end
-
- stop_watch.stop("found #{@rules.size} rules with criteria #{criteria.to_json}")
- rescue
- @rules = []
end
+ stop_watch.stop("found #{@pagination.count} rules with criteria #{criteria.to_json}, displaying #{@pagination.per_page} items")
+
@current_rules = @rules
end
data:'level='+$j('#levels_select_#{rule.id} :selected').val()})}"
%>
- <%= check_box_tag(check_box_id, 'yes', true, :onclick => activate_rule, :disabled => !enable_modification || rule.inherited? || rule.overrides?) %>
+ <%= check_box_tag(check_box_id, 'yes', !rule.activeRuleId.nil?, :onclick => activate_rule, :disabled => !enable_modification || rule.inherited? || rule.overrides?) %>
<%= select_tag(select_box_id, options_for_select(RulesConfigurationController::RULE_PRIORITIES, rule.severity),
{:onchange => changel_level, :disabled => (!(enable_modification))}) %>