All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.jknack.mwa.solr.SolrQueryExpression Maven / Gradle / Ivy

package com.github.jknack.mwa.solr;

import static org.apache.commons.lang3.StringUtils.isEmpty;

import org.apache.solr.client.solrj.SolrQuery;

/**
 * Base class for build Solr queries.
 *
 * @author edgar.espina
 * @since 0.3.12
 * @see SolrQueryBuilder
 */
public abstract class SolrQueryExpression {

  /**
   * Return the Solr query string.
   *
   * @return The Solr query string.
   */
  public abstract String queryString();

  /**
   * Build a new {@link SolrQuery}.
   *
   * @return A new {@link SolrQuery}.
   */
  public SolrQuery build() {
    return new SolrQuery(queryString());
  }

  @Override
  public final String toString() {
    return queryString();
  }

  /**
   * Get an String version of the given expression.
   *
   * @param expression An expression.
   * @return A to string representation.
   */
  private String toString(final SolrQueryExpression expression) {
    String q = expression.queryString();
    if (isEmpty(q)) {
      return "";
    }
    if (expression instanceof SolrQueryTextExpression) {
      return q;
    }
    return "(" + q + ")";
  }

  /**
   * prefix the expression if necessary.
   *
   * @param expression The expression.
   * @param prefix The expression's prefix.
   * @return A string representation.
   */
  protected String prefix(final SolrQueryExpression expression, final String prefix) {
    String q = toString(expression);
    if (isEmpty(q)) {
      return "";
    }
    return prefix + q;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy