Example usage for org.springframework.data.solr.core.query Function getArguments

List of usage examples for org.springframework.data.solr.core.query Function getArguments

Introduction

In this page you can find the example usage for org.springframework.data.solr.core.query Function getArguments.

Prototype

Iterable<?> getArguments();

Source Link

Usage

From source file:org.springframework.data.solr.core.QueryParserBase.java

/**
 * Create {@link SolrServer} readable String representation for {@link Function}
 * /*from  w  ww . j av  a  2  s.c o m*/
 * @param function
 * @return
 * @since 1.1
 */
protected String createFunctionFragment(Function function, int level) {

    StringBuilder sb = new StringBuilder();
    if (level <= 0) {
        sb.append("{!func}");
    }

    sb.append(function.getOperation());
    sb.append('(');
    if (function.hasArguments()) {
        List<String> solrReadableArguments = new ArrayList<String>();
        for (Object arg : function.getArguments()) {
            Assert.notNull(arg, "Unable to parse 'null' within function arguments.");
            if (arg instanceof Function) {
                solrReadableArguments.add(createFunctionFragment((Function) arg, level + 1));
            } else if (arg instanceof Criteria) {
                solrReadableArguments.add(createQueryStringFromNode((Criteria) arg));
            } else if (arg instanceof Field) {
                solrReadableArguments.add(((Field) arg).getName());
            } else if (arg instanceof Query) {
                solrReadableArguments.add(getQueryString((Query) arg));
            } else if (arg instanceof String || !conversionService.canConvert(arg.getClass(), String.class)) {
                solrReadableArguments.add(arg.toString());
            } else {
                solrReadableArguments.add(conversionService.convert(arg, String.class));
            }
        }
        sb.append(StringUtils.join(solrReadableArguments, ','));
    }
    sb.append(')');
    return sb.toString();
}