public static <T> Bson createFilter(String mongoDbField, List<T> queryValues, ComparisonOperator comparator) { return createFilter(mongoDbField, queryValues, comparator, LogicalOperator.OR); }
public static <T> Bson createFilter(String mongoDbField, List<T> queryValues, LogicalOperator operator) { return createFilter(mongoDbField, queryValues, ComparisonOperator.EQUALS, operator); }
public static Bson createFilter(String mongoDbField, String queryParam, Query query) { return createFilter(mongoDbField, queryParam, query, QueryParam.Type.TEXT, ComparisonOperator.EQUALS, LogicalOperator.OR); }
public static Bson createFilter(String mongoDbField, String queryParam, Query query, QueryParam.Type type, ComparisonOperator comparator) { return createFilter(mongoDbField, queryParam, query, type, comparator, LogicalOperator.OR); }
public static <T> Bson createFilter(String mongoDbField, T queryValue) { return createFilter(mongoDbField, queryValue, ComparisonOperator.EQUALS); }
public static Bson createFilter(String mongoDbField, String queryParam, Query query, QueryParam.Type type) { return createFilter(mongoDbField, queryParam, query, type, ComparisonOperator.EQUALS, LogicalOperator.OR); }
public static <T> Bson createFilter(String mongoDbField, List<T> queryValues) { return createFilter(mongoDbField, queryValues, ComparisonOperator.EQUALS, LogicalOperator.OR); }
protected void addQueryFilter(String mongoDbField, String queryParam, Query query, QueryParam.Type paramType, MongoDBQueryUtils.ComparisonOperator comparisonOperator, MongoDBQueryUtils.LogicalOperator operator, List<Bson> andBsonList) { if (query != null && query.getString(queryParam) != null) { Bson filter = MongoDBQueryUtils.createFilter(mongoDbField, queryParam, query, paramType, comparisonOperator, operator); if (filter != null) { andBsonList.add(filter); } } }
/** * Parse the query values from the ontology terms to bson format. * At this point, any value that we find in the query (as comma separated or as a list), will be looked for in the id and name * attributes of the ontologyTerm java bean. * * Example: ontologyTerms: X,Y * This will be transformed to something like ontologyTerms.id == X || ontologyTerms.name == X || ontologyTerms.id == Y || * ontologyTerms.name == Y) * * @param mongoKey Key corresponding to the data model to know how it is stored in mongoDB. (If not altered, ontologyTerms). * @param queryKey Key by which the values will be retrieved from the query. * @param query Query object containing all the query keys and values to parse. Only to get the ones regarding ontology terms. * @param bsonList List to which we will add the ontology terms search. */ public static void addOntologyQueryFilter(String mongoKey, String queryKey, Query query, List<Bson> bsonList) { List<String> ontologyValues = query.getAsStringList(queryKey); Bson ontologyId = MongoDBQueryUtils.createFilter(mongoKey + ".id", ontologyValues); Bson ontologyName = MongoDBQueryUtils.createFilter(mongoKey + ".name", ontologyValues); bsonList.add(Filters.or(ontologyId, ontologyName)); }
case TEXT: case TEXT_ARRAY: bsonList.add(createFilter(mongoDbField, queryValueString, comparator)); break; case LONG: case INTEGER: case INTEGER_ARRAY: bsonList.add(createFilter(mongoDbField, Long.parseLong(queryValueString), comparator)); break; case DOUBLE: case DECIMAL: case DECIMAL_ARRAY: bsonList.add(createFilter(mongoDbField, Double.parseDouble(queryValueString), comparator)); break; case BOOLEAN: case BOOLEAN_ARRAY: bsonList.add(createFilter(mongoDbField, Boolean.parseBoolean(queryValueString), comparator)); break; case DATE:
case TEXT: case TEXT_ARRAY: filter = createFilter(mongoDbField, query.getAsStringList(queryParam, getLogicalSeparator(operator)), comparator, operator); break; case LONG: case LONG_ARRAY: filter = createFilter(mongoDbField, query.getAsLongList(queryParam, getLogicalSeparator(operator)), comparator, operator); break; case DECIMAL: case DECIMAL_ARRAY: filter = createFilter(mongoDbField, query.getAsDoubleList(queryParam, getLogicalSeparator(operator)), comparator, operator); break; case BOOLEAN: case BOOLEAN_ARRAY: filter = createFilter(mongoDbField, query.getBoolean(queryParam), comparator); break; case DATE:
filter = createFilter(mongoDbField, queryValues.get(0), comparator); } else { List<Bson> bsonList = new ArrayList<>(queryValues.size()); for (T queryItem : queryValues) { Bson filter1 = createFilter(mongoDbField, queryItem, comparator); if (filter1 != null) { bsonList.add(filter1);