public DefaultComponentQueryResult find(ComponentQuery query, List<Component> allComponents) {
    LOG.debug("ComponentQuery : {}", query);
    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 =
          forPageIndex(query.pageIndex())
              .withPageSize(query.pageSize())
              .andTotal(foundComponents.size());
      Collection<? extends Component> pagedComponents = pagedComponents(sortedComponents, paging);
      return new DefaultComponentQueryResult(pagedComponents).setPaging(paging).setQuery(query);
    }
  }
Пример #2
0
 static ComponentQuery toQuery(Map<String, Object> props) {
   ComponentQuery.Builder builder =
       ComponentQuery.builder()
           .keys(RubyUtils.toStrings(props.get("keys")))
           .names(RubyUtils.toStrings(props.get("names")))
           .qualifiers(RubyUtils.toStrings(props.get("qualifiers")))
           .pageSize(RubyUtils.toInteger(props.get("pageSize")))
           .pageIndex(RubyUtils.toInteger(props.get("pageIndex")));
   String sort = (String) props.get("sort");
   if (!Strings.isNullOrEmpty(sort)) {
     builder.sort(sort);
     builder.asc(RubyUtils.toBoolean(props.get("asc")));
   }
   return builder.build();
 }
Пример #3
0
 public DefaultComponentQueryResult find(Map<String, Object> params) {
   ComponentQuery query = toQuery(params);
   List<Component> components = resourceDao.selectProjectsByQualifiers(query.qualifiers());
   return finder.find(query, components);
 }
Пример #4
0
 public List<ResourceDto> findProvisionedProjects(Map<String, Object> params) {
   ComponentQuery query = toQuery(params);
   return resourceDao.selectProvisionedProjects(query.qualifiers());
 }
 @Override
 public boolean apply(@Nonnull Component component) {
   return new KeyFilter().accept(component, query.keys())
       && new NameFilter().accept(component, query.names());
 }