public static SqlExpressionBuilder create(SqlJsonDB db, LogicalFilter filter, String path) { List<SqlExpressionBuilder> children = filter.filters().stream() .map(x -> create(db, x, path)) .collect(Collectors.toList()); switch( filter.op() ) { case OR: return new LogicalSqlExpressionBuilder(" UNION ", children); case AND: return new LogicalSqlExpressionBuilder(" INTERSECT ", children); default: throw new JsonDBException("Unsupported op type."); } }