package mtas.solr.handler.component.util; import java.io.IOException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.solr.common.util.SimpleOrderedMap; 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.CodecComponent.ComponentFields; import mtas.codec.util.CodecComponent.ComponentStatus; 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 } }