package org.apache.solr.handler.batch;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import org.apache.solr.common.params.MultiMapSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.servlet.SolrRequestParsers;
public class BatchHandlerRequestData {
public String url;
public int count;
private SolrParams params;
public BatchProvider handler;
private String msg = null;
public BatchHandlerRequestData(BatchProvider handler, SolrParams params) {
this.url = params.toString();
this.params = params;
this.handler = handler;
}
public BatchHandlerRequestData(BatchProvider handler, String url) throws UnsupportedEncodingException {
this.url = url;
this.params = SolrRequestParsers.parseQueryString(this.url);
this.handler = handler;
}
public SolrParams getReqParams() {
return this.params;
}
public String toString() {
return handler + "::" + url + (msg != null ? msg : "");
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
/*
* we cannot use: SolrRequestParsers.parseQueryString(this.url);
* because it will unencode the params, which is bad for us
*/
private MultiMapSolrParams parseQueryString(String queryString)
{
Map<String,String[]> map = new HashMap<String, String[]>();
if( queryString != null && queryString.length() > 0 ) {
for( String kv : queryString.split( "&" ) ) {
int idx = kv.indexOf( '=' );
if( idx > 0 ) {
String name = kv.substring( 0, idx );
String value = kv.substring( idx+1 );
MultiMapSolrParams.addParam( name, value, map );
}
else {
MultiMapSolrParams.addParam( kv, "", map );
}
}
}
return new MultiMapSolrParams( map );
}
public BatchProvider getProvider() {
return handler;
}
}