summaryrefslogtreecommitdiffstats
path: root/sonar-server/src/main
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-08-27 17:49:59 +0200
committerJulien Lancelot <julien.lancelot@gmail.com>2013-08-27 17:51:07 +0200
commitf8482d0403a363e057f1fc81d3dc5e4814296725 (patch)
tree560bc417dfd2d198671f153eb15ba9f4559b06c2 /sonar-server/src/main
parent0bf8de3fdc0b2fb28f88b02689fafab06bd3e8e7 (diff)
downloadsonarqube-f8482d0403a363e057f1fc81d3dc5e4814296725.tar.gz
sonarqube-f8482d0403a363e057f1fc81d3dc5e4814296725.zip
Refactor projects search of project permission management in order to specify what this query do
Diffstat (limited to 'sonar-server/src/main')
-rw-r--r--sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java41
-rw-r--r--sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java11
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb4
3 files changed, 25 insertions, 31 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java b/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java
index ac199cbb23b..e594bca1952 100644
--- a/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java
+++ b/sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java
@@ -26,7 +26,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.component.Component;
import org.sonar.api.utils.Paging;
-import org.sonar.core.resource.ResourceDao;
import java.util.Collection;
import java.util.List;
@@ -40,35 +39,21 @@ import static com.google.common.collect.Lists.newArrayList;
public class DefaultComponentFinder {
private static final Logger LOG = LoggerFactory.getLogger(DefaultComponentFinder.class);
- private final ResourceDao resourceDao;
- public DefaultComponentFinder(ResourceDao resourceDao) {
- this.resourceDao = resourceDao;
- }
-
- public DefaultComponentQueryResult find(ComponentQuery query) {
+ public DefaultComponentQueryResult find(ComponentQuery query, List<Component> allComponents) {
LOG.debug("ComponentQuery : {}", query);
- long start = System.currentTimeMillis();
- try {
- // 1. Search components for selected qualifiers
- List<Component> components = resourceDao.selectComponentsByQualifiers(query.qualifiers());
- Collection<Component> foundComponents = search(query, components);
-
- // 2. Sort components
- Collection<? extends Component> sortedComponents = new ComponentsFinderSort(foundComponents, query).sort();
-
- if(ComponentQuery.NO_PAGINATION == query.pageSize()) {
- return new DefaultComponentQueryResult(sortedComponents).setQuery(query);
- } else {
- // 3. Apply pagination
- Paging paging = Paging.create(query.pageSize(), query.pageIndex(), foundComponents.size());
- Collection<? extends Component> pagedComponents = pagedComponents(sortedComponents, paging);
-
- return new DefaultComponentQueryResult(pagedComponents).setPaging(paging).setQuery(query);
- }
-
- } finally {
- LOG.debug("ComponentQuery execution time : {} ms", System.currentTimeMillis() - start);
+ Collection<Component> foundComponents = search(query, allComponents);
+
+ // Sort components
+ Collection<? extends Component> sortedComponents = new ComponentsFinderSort(foundComponents, query).sort();
+
+ // Apply pagination if needed
+ if (ComponentQuery.NO_PAGINATION == query.pageSize()) {
+ return new DefaultComponentQueryResult(sortedComponents).setQuery(query);
+ } else {
+ Paging paging = Paging.create(query.pageSize(), query.pageIndex(), foundComponents.size());
+ Collection<? extends Component> pagedComponents = pagedComponents(sortedComponents, paging);
+ return new DefaultComponentQueryResult(pagedComponents).setPaging(paging).setQuery(query);
}
}
diff --git a/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java b/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java
index 2dce322b90a..cd6aff52739 100644
--- a/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java
+++ b/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java
@@ -25,6 +25,7 @@ import org.sonar.api.component.RubyComponentService;
import org.sonar.core.resource.ResourceDao;
import org.sonar.server.util.RubyUtils;
+import java.util.List;
import java.util.Map;
public class DefaultRubyComponentService implements RubyComponentService {
@@ -43,7 +44,15 @@ public class DefaultRubyComponentService implements RubyComponentService {
}
public DefaultComponentQueryResult find(Map<String, Object> params) {
- return finder.find(toQuery(params));
+ ComponentQuery query = toQuery(params);
+ List<Component> components = resourceDao.selectComponentsByQualifiers(query.qualifiers());
+ return finder.find(query, components);
+ }
+
+ public DefaultComponentQueryResult findWithUncompleteProjects(Map<String, Object> params) {
+ ComponentQuery query = toQuery(params);
+ List<Component> components = resourceDao.selectComponentsIncludingNotCompletedOnesByQualifiers(query.qualifiers());
+ return finder.find(query, components);
}
static ComponentQuery toQuery(Map<String, Object> props) {
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb
index b0466bce768..0b744b89716 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb
@@ -34,7 +34,7 @@ class RolesController < ApplicationController
def projects
params['pageSize'] = 25
params['qualifiers'] ||= 'TRK'
- @query_result = Internal.component_api.find(params)
+ @query_result = Internal.component_api.findWithUncompleteProjects(params)
@available_qualifiers = java_facade.getQualifiersWithProperty('hasRolePolicy').collect { |qualifier| [message("qualifiers.#{qualifier}"), qualifier] }.sort
@@ -97,7 +97,7 @@ class RolesController < ApplicationController
if params['components'].blank?
params['pageSize'] = -1
- components = Internal.component_api.find(params).components().to_a
+ components = Internal.component_api.findWithUncompleteProjects(params).components().to_a
params['components'] = components.collect{|component| component.getId()}.join(',')
end