diff options
author | Julien Lancelot <julien.lancelot@gmail.com> | 2013-08-27 17:49:59 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@gmail.com> | 2013-08-27 17:51:07 +0200 |
commit | f8482d0403a363e057f1fc81d3dc5e4814296725 (patch) | |
tree | 560bc417dfd2d198671f153eb15ba9f4559b06c2 /sonar-server/src/main/java | |
parent | 0bf8de3fdc0b2fb28f88b02689fafab06bd3e8e7 (diff) | |
download | sonarqube-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/java')
-rw-r--r-- | sonar-server/src/main/java/org/sonar/server/component/DefaultComponentFinder.java | 41 | ||||
-rw-r--r-- | sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java | 11 |
2 files changed, 23 insertions, 29 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) { |