List of usage examples for org.springframework.data.mongodb.core.query Criteria getKey
@Override
@Nullable
public String getKey()
From source file:org.opentestsystem.shared.search.domain.AbstractSearchRequest.java
protected Map<String, Criteria> buildCriteria() { final Map<String, Criteria> criteriaMap = new HashMap<>(); for (final String searchKey : searchCriteria.keySet()) { final SearchFilter filter = searchFilterMap.get(searchKey); final String[] searchValues = searchCriteria.get(searchKey); if (hasAValue(searchValues)) { final Object[] queryValues = filter.getSearchValue(searchValues); final String domainName = filter.getDomainName(); Criteria criteria = criteriaMap.get(filter.getDomainName()); if (criteria == null) { criteria = Criteria.where(domainName); }/*from w ww.ja v a2 s . c o m*/ switch (filter.getOperator()) { case EQ: if (queryValues.length == ONE) { criteria = criteria.is(queryValues[0]); } else { criteria = criteria.in(queryValues); } break; case GTH: criteria = criteria.gt(queryValues[0]); break; case LTH: criteria = criteria.lt(queryValues[0]); break; case GEQ: criteria = criteria.gte(queryValues[0]); break; case LEQ: criteria = criteria.lte(queryValues[0]); break; case NOTNULL: criteria = criteria.ne(null); break; case CASE_INSENSITIVE: if (queryValues.length == ONE) { criteria = buildCaseInsensitiveRegex(criteria, queryValues[0]); } else { final Criteria[] critList = new Criteria[queryValues.length]; for (int i = 0; i < queryValues.length; i++) { critList[i] = buildCaseInsensitiveRegex(Criteria.where(domainName), queryValues[i]); } criteria = new Criteria().orOperator(critList); } break; case WLD_REG: if (queryValues.length == ONE) { criteria = buildRegex(criteria, queryValues[0]); } else { final Criteria[] critList = new Criteria[queryValues.length]; for (int i = 0; i < queryValues.length; i++) { critList[i] = buildRegex(Criteria.where(domainName), queryValues[i]); } criteria = new Criteria().orOperator(critList); } break; case DYNAMIC_ELEMENT_NAME: // modifying domain name, recreate the where criteria = Criteria.where( domainName + (searchValues[0] == null ? "" : replaceEscapeChars(searchValues[0]))); if (searchValues.length == ONE) { // if only the first searchValue is specified (the element name) // match any element (with the searchValue name that has a value criteria = buildRegex(criteria, "."); } else if (searchValues.length == TWO) { criteria = criteria.is(searchValues[1]); } else { criteria = criteria.in((Object[]) Arrays.copyOfRange(searchValues, 1, searchValues.length)); } break; default: break; } criteriaMap.put(domainName, criteria); } } final Map<String, Criteria> returnMap = new HashMap<String, Criteria>(); for (final Criteria crit : criteriaMap.values()) { returnMap.put(crit.getKey(), crit); } return returnMap; }