Example usage for org.springframework.data.mongodb.core.query Query addCriteria

List of usage examples for org.springframework.data.mongodb.core.query Query addCriteria

Introduction

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

Prototype

public Query addCriteria(CriteriaDefinition criteriaDefinition) 

Source Link

Document

Adds the given CriteriaDefinition to the current Query .

Usage

From source file:org.slc.sli.ingestion.transformation.EdFi2SLITransformer.java

protected Query createEntityLookupQueryFromKeyFields(SimpleEntity entity, EntityConfig entityConfig,
        AbstractMessageReport report, ReportStats reportStats) {
    Query query = new Query();

    StringBuilder errorMessage = new StringBuilder("");
    if (entityConfig.getKeyFields() == null || entityConfig.getKeyFields().size() == 0) {
        report.error(reportStats, new ElementSourceImpl(entity), CoreMessageCode.CORE_0011);
    } else {/*from   ww  w .j  av a  2s .  c  o m*/
        errorMessage.append("       Entity      " + entity.getType() + "\n" + "       Key Fields  "
                + entityConfig.getKeyFields() + "\n");
        if (entityConfig.getReferences() != null && entityConfig.getReferences().size() > 0) {
            errorMessage.append("     The following collections are referenced by the key fields:" + "\n");
            for (RefDef refDef : entityConfig.getReferences()) {
                String collectionName = "";
                NeutralSchema schema = schemaRepository.getSchema(refDef.getRef().getEntityType());
                if (schema != null) {
                    AppInfo appInfo = schema.getAppInfo();
                    if (appInfo != null) {
                        collectionName = appInfo.getCollectionType();
                    }
                }

                errorMessage.append("       collection = " + collectionName + "\n");
            }
        }
    }

    try {
        for (String field : entityConfig.getKeyFields()) {
            Object fieldValue = PropertyUtils.getProperty(entity, field);
            if (fieldValue instanceof List) {
                @SuppressWarnings("rawtypes")
                List fieldValues = ((List) fieldValue);
                int size = fieldValues.size();
                // make sure we have exactly the number of desired values
                Criteria criteria = Criteria.where(field).size(size);
                // if there are desired values, make sure we have each individual desired value
                if (size > 0) {
                    Criteria[] valueCriteria = new Criteria[size];
                    for (int i = 0; i < size; i++) {
                        valueCriteria[i] = Criteria.where(field).is(fieldValues.get(i));
                    }
                    criteria = criteria.andOperator(valueCriteria);
                }
                query.addCriteria(criteria);
                // this will be insufficient if fieldValue can contain duplicates
            } else {
                query.addCriteria(Criteria.where(field).is(fieldValue));
            }
        }
        ComplexKeyField complexField = entityConfig.getComplexKeyField();
        if (complexField != null) {
            String propertyString = complexField.getListPath() + ".[0]." + complexField.getFieldPath();
            Object fieldValue = PropertyUtils.getProperty(entity, propertyString);

            query.addCriteria(Criteria.where(complexField.getListPath() + "." + complexField.getFieldPath())
                    .is(fieldValue));
        }
    } catch (Exception e) {
        report.error(reportStats, new ElementSourceImpl(entity), CoreMessageCode.CORE_0012,
                errorMessage.toString());
    }

    return query;
}

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 a  v  a2  s . 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;
}

From source file:piecework.content.concrete.GridFsContentResource.java

@Override
public InputStream getInputStream() throws IOException {
    Query query = query(GridFsCriteria.whereFilename().is(location));
    if (uploadDate != null)
        query.addCriteria(GridFsCriteria.where("uploadDate").is(uploadDate));
    GridFSDBFile file = gridFsOperations.findOne(query);
    return file.getInputStream();
}

From source file:piecework.repository.concrete.ProcessInstanceRepositoryCustomImpl.java

@Override
public boolean update(String id, Task task) {
    Query query = new Query();
    query.addCriteria(where("processInstanceId").is(id));

    Update update = new Update();
    update.set("tasks." + task.getTaskInstanceId(), task).set("lastModifiedTime", new Date());
    FindAndModifyOptions options = new FindAndModifyOptions();
    options.returnNew(true);/*ww w  . j ava2s  .  c  om*/
    ProcessInstance stored = mongoOperations.findAndModify(query, update, options, ProcessInstance.class);

    return true;
}