package org.apache.solr.handler.batch; import org.apache.lucene.search.Query; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.search.QParser; import org.apache.solr.search.QParserPlugin; import org.apache.solr.search.QueryParsing; import org.apache.solr.search.SyntaxError; public abstract class BatchProvider implements BatchProviderI { private Query query = null; private String name; public BatchProvider() { this.name = "<not-set>"; } public BatchProvider(String name) { this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setQuery(Query query) { this.query = query; } public Query getQuery(SolrQueryRequest req) throws SyntaxError { if (query != null) return query; SolrParams params = req.getParams(); String defType = params.get(QueryParsing.DEFTYPE,QParserPlugin.DEFAULT_QTYPE); String q = params.get(CommonParams.Q, null); if (q == null) { throw new SolrException(ErrorCode.BAD_REQUEST, "The 'q' parameter is missing, but we must know how to select docs"); } QParser parser = QParser.getParser(q, defType, req); return parser.getQuery(); } }