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

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

Introduction

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

Prototype

boolean hasArguments();

Source Link

Usage

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

/**
 * Create {@link SolrServer} readable String representation for {@link Function}
 * /* ww  w .  j  a va2s .  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();
}