MtasSolrComponentStatus.java
package mtas.solr.handler.component.util;
import java.io.IOException;
import java.util.Map.Entry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.handler.component.ResponseBuilder;
import org.apache.solr.handler.component.SearchComponent;
import org.apache.solr.handler.component.ShardRequest;
import mtas.codec.util.Status;
import mtas.codec.util.CodecComponent.ComponentFields;
import mtas.codec.util.CodecComponent.ComponentStatus;
import mtas.solr.handler.MtasRequestHandler;
import mtas.solr.handler.MtasRequestHandler.ShardInformation;
import mtas.solr.handler.component.MtasSolrSearchComponent;
/**
* The Class MtasSolrComponentStatus.
*/
public class MtasSolrComponentStatus
implements MtasSolrComponent<ComponentStatus> {
/** The Constant log. */
private static final Log log = LogFactory
.getLog(MtasSolrComponentStatus.class);
/** The search component. */
MtasSolrSearchComponent searchComponent;
/** The Constant NAME. */
public static final String NAME = "status";
/** The Constant PARAM_MTAS_STATUS. */
public static final String PARAM_MTAS_STATUS = MtasSolrSearchComponent.PARAM_MTAS
+ "." + NAME;
/** The Constant NAME_MTAS_STATUS_KEY. */
public static final String NAME_MTAS_STATUS_KEY = "key";
public static final String NAME_MTAS_STATUS_MTASHANDLER = "mtasHandler";
public static final String NAME_MTAS_STATUS_NUMBEROFSEGMENTS = "numberOfSegments";
public static final String NAME_MTAS_STATUS_NUMBEROFDOCUMENTS = "numberOfDocuments";
/**
* Instantiates a new mtas solr component status.
*
* @param searchComponent
* the search component
*/
public MtasSolrComponentStatus(MtasSolrSearchComponent searchComponent) {
this.searchComponent = searchComponent;
}
/*
* (non-Javadoc)
*
* @see
* mtas.solr.handler.component.util.MtasSolrComponent#prepare(org.apache.solr.
* handler.component.ResponseBuilder,
* mtas.codec.util.CodecComponent.ComponentFields)
*/
@Override
public void prepare(ResponseBuilder rb, ComponentFields mtasFields)
throws IOException {
mtasFields.doStatus = true;
String key = rb.req.getParams()
.get(PARAM_MTAS_STATUS + "." + NAME_MTAS_STATUS_KEY, null);
boolean getHandler = rb.req.getParams()
.getBool(MtasSolrComponentStatus.PARAM_MTAS_STATUS + "."
+ NAME_MTAS_STATUS_MTASHANDLER, false);
boolean getNumberOfDocuments = rb.req.getParams()
.getBool(MtasSolrComponentStatus.PARAM_MTAS_STATUS + "."
+ NAME_MTAS_STATUS_NUMBEROFDOCUMENTS, false);
boolean getNumberOfSegments = rb.req.getParams()
.getBool(MtasSolrComponentStatus.PARAM_MTAS_STATUS + "."
+ NAME_MTAS_STATUS_NUMBEROFSEGMENTS, false);
mtasFields.status = new ComponentStatus(rb.req.getCore().getName(), key,
getHandler, getNumberOfDocuments, getNumberOfSegments);
mtasFields.status.numberOfDocuments = rb.req.getSearcher().getRawReader()
.numDocs();
mtasFields.status.numberOfSegments = rb.req.getSearcher().getRawReader()
.leaves().size();
}
/*
* (non-Javadoc)
*
* @see
* mtas.solr.handler.component.util.MtasSolrComponent#create(mtas.codec.util.
* CodecComponent.BasicComponent, java.lang.Boolean)
*/
@Override
public SimpleOrderedMap<Object> create(ComponentStatus status, Boolean encode)
throws IOException {
SimpleOrderedMap<Object> mtasStatusResponse = new SimpleOrderedMap<>();
if (status.getMtasHandler) {
mtasStatusResponse.add(NAME_MTAS_STATUS_MTASHANDLER, status.handler);
}
if (status.getNumberOfDocuments) {
mtasStatusResponse.add(NAME_MTAS_STATUS_NUMBEROFDOCUMENTS,
status.numberOfDocuments);
}
if (status.getNumberOfSegments) {
mtasStatusResponse.add(NAME_MTAS_STATUS_NUMBEROFSEGMENTS,
status.numberOfSegments);
}
if(mtasStatusResponse.size()>0) {
mtasStatusResponse.add(ShardInformation.NAME_NAME, status.name);
if (status.key != null) {
mtasStatusResponse.add(NAME_MTAS_STATUS_KEY, status.key);
}
return mtasStatusResponse;
} else {
return null;
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.solr.handler.component.util.MtasSolrComponent#modifyRequest(org.apache
* .solr.handler.component.ResponseBuilder,
* org.apache.solr.handler.component.SearchComponent,
* org.apache.solr.handler.component.ShardRequest)
*/
@Override
public void modifyRequest(ResponseBuilder rb, SearchComponent who,
ShardRequest sreq) {
sreq.params.remove(PARAM_MTAS_STATUS + "." + NAME_MTAS_STATUS_KEY);
}
/*
* (non-Javadoc)
*
* @see
* mtas.solr.handler.component.util.MtasSolrComponent#finishStage(org.apache.
* solr.handler.component.ResponseBuilder)
*/
@Override
public void finishStage(ResponseBuilder rb) {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see
* mtas.solr.handler.component.util.MtasSolrComponent#distributedProcess(org.
* apache.solr.handler.component.ResponseBuilder,
* mtas.codec.util.CodecComponent.ComponentFields)
*/
@Override
public void distributedProcess(ResponseBuilder rb, ComponentFields mtasFields)
throws IOException {
// TODO Auto-generated method stub
}
}