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); } }
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(); }
public DefaultComponentQueryResult find(Map<String, Object> params) { ComponentQuery query = toQuery(params); List<Component> components = resourceDao.selectProjectsByQualifiers(query.qualifiers()); return finder.find(query, components); }
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()); }