public DBQuery.Query toDBQuery() { if (queryMap.isEmpty()) { return DBQuery.empty(); } final List<DBQuery.Query> dbQueries = new ArrayList<>(); for (Map.Entry<String, Collection<SearchQueryParser.FieldValue>> entry : queryMap.asMap().entrySet()) { final List<DBQuery.Query> queries = new ArrayList<>(); final List<SearchQueryParser.FieldValue> include = selectValues(entry.getValue(), value -> !value.isNegate()); final List<SearchQueryParser.FieldValue> exclude = selectValues(entry.getValue(), SearchQueryParser.FieldValue::isNegate); if (!include.isEmpty()) { queries.add(DBQuery.or(toQuery(entry.getKey(), include))); } if (!exclude.isEmpty()) { queries.add(DBQuery.nor(toQuery(entry.getKey(), exclude))); } dbQueries.add(DBQuery.and(queries.toArray(new DBQuery.Query[0]))); } return DBQuery.and(dbQueries.toArray(new DBQuery.Query[0])); }
public DBQuery.Query toDBQuery() { if (queryMap.isEmpty()) { return DBQuery.empty(); } final List<DBQuery.Query> dbQueries = new ArrayList<>(); for (Map.Entry<String, Collection<SearchQueryParser.FieldValue>> entry : queryMap.asMap().entrySet()) { final List<DBQuery.Query> queries = new ArrayList<>(); final List<SearchQueryParser.FieldValue> include = selectValues(entry.getValue(), value -> !value.isNegate()); final List<SearchQueryParser.FieldValue> exclude = selectValues(entry.getValue(), SearchQueryParser.FieldValue::isNegate); if (!include.isEmpty()) { queries.add(DBQuery.or(toQuery(entry.getKey(), include))); } if (!exclude.isEmpty()) { queries.add(DBQuery.nor(toQuery(entry.getKey(), exclude))); } dbQueries.add(DBQuery.and(queries.toArray(new DBQuery.Query[0]))); } return DBQuery.and(dbQueries.toArray(new DBQuery.Query[0])); }