public static Condition createWildCardedStringsCondition(final Field<String> field,
                                                             final List<String> filters,
                                                             final boolean allowWildCards,
                                                             final BooleanOperator booleanOperator) {
        Objects.requireNonNull(booleanOperator);
        if (filters == null || filters.isEmpty()) {
            return DSL.noCondition();
        } else {
            final List<Condition> conditions = filters.stream()
                    .map(filter -> createWildCardedStringCondition(field, filter, allowWildCards))
                    .collect(Collectors.toList());

            return BooleanOperator.AND.equals(booleanOperator)
                    ? DSL.and(conditions)
                    : DSL.or(conditions);
        }
    }
Creates a single {@link Condition} containing an OR/AND of all the {@link Condition}s for
each of the passed filters, e.g. {@code field like 'xxx%' OR field like '%yyy'}.
If allowWildCards is true and filter is wild carded (i.e. contains a '*') then it
returns 'field.like(x)' where x has
'*' characters replaced by '%' and SQL wild cards '%' and '_' are escaped.
If filter is not wild carded it returns 'field.eq(filter)'.
stroom-db-util/src/main/java/stroom/db/util/JooqUtil.java