Example usage for org.springframework.data.mongodb.core.query Criteria all

List of usage examples for org.springframework.data.mongodb.core.query Criteria all

Introduction

In this page you can find the example usage for org.springframework.data.mongodb.core.query Criteria all.

Prototype

public Criteria all(Collection<?> o) 

Source Link

Document

Creates a criterion using the $all operator.

Usage

From source file:piecework.common.SearchQueryBuilder.java

public Query build(Set<String> allowedProcessDefinitionKeys, Sanitizer sanitizer) {
    Query query = new Query();

    Set<String> filteredProcessDefinitionKeys;

    if (searchCriteria.getProcessDefinitionKeys() != null
            && !searchCriteria.getProcessDefinitionKeys().isEmpty())
        filteredProcessDefinitionKeys = Sets.intersection(searchCriteria.getProcessDefinitionKeys(),
                allowedProcessDefinitionKeys);
    else/*from ww  w.  j  ava 2s. c  o  m*/
        filteredProcessDefinitionKeys = allowedProcessDefinitionKeys;

    query.addCriteria(where("processDefinitionKey").in(filteredProcessDefinitionKeys));

    if (StringUtils.isNotEmpty(searchCriteria.getProcessInstanceId()))
        query.addCriteria(where("processInstanceId").is(searchCriteria.getProcessInstanceId()));

    Map<SearchFacet, Object> facetParameters = searchCriteria.getFacetParameters();
    if (facetParameters != null && !facetParameters.isEmpty()) {
        for (Map.Entry<SearchFacet, Object> entry : facetParameters.entrySet()) {
            if (entry.getKey() == null)
                continue;
            if (entry.getValue() == null)
                continue;

            query.addCriteria(entry.getKey().criteria(entry.getValue()));
        }
    }

    if (StringUtils.isNotBlank(searchCriteria.getProcessStatus())) {
        if (!searchCriteria.getProcessStatus().equalsIgnoreCase("all"))
            query.addCriteria(where("processStatus").is(searchCriteria.getProcessStatus()));
    }

    if (StringUtils.isNotEmpty(searchCriteria.getInitiatedBy()))
        query.addCriteria(where("initiatorId").is(searchCriteria.getInitiatedBy()));

    if (!searchCriteria.getKeywords().isEmpty()) {
        List<String> tokens = new ArrayList<String>();
        for (String keyword : searchCriteria.getKeywords()) {
            String resultString = keyword.replaceAll("[^\\p{L}\\p{Nd}]\\-", ",");
            String[] components = resultString.split(",");
            if (components != null && components.length > 0)
                tokens.addAll(Arrays.asList(components));
        }

        int count = 0;
        Criteria criteria = where("keywords");
        List<Pattern> dbObjects = new ArrayList<Pattern>();
        for (String keyword : tokens) {
            dbObjects.add(Pattern.compile(keyword, 0));
            count++;
        }
        if (count > 0)
            query.addCriteria(criteria.all(dbObjects));
    }

    return query;
}