package com.chenlb.mmseg4j.solr;

import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.util.plugin.SolrCoreAware;

import com.chenlb.mmseg4j.Dictionary;

/**
 * mmseg4j 的 solr handler,用于检测词库,查看状态等。
 * 
 * @author chenlb 2009-10-12 上午10:53:38
 */
public class MMseg4jHandler extends RequestHandlerBase implements SolrCoreAware {
	
	//private File solrHome = null;
	private SolrResourceLoader loader = null;
	
	public String getDescription() {
		
		return "";
	}

	public String getSource() {
		
		return "$URL: http://mmseg4j.googlecode.com/svn/trunk/src/com/chenlb/mmseg4j/solr/MMseg4jHandler.java $";
	}

	public String getSourceId() {
		
		return "$Revision: 63 $";
	}

	public String getVersion() {
		
		return "1.8";
	}


	public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
		rsp.setHttpCaching(false);
		final SolrParams solrParams = req.getParams();

		String dicPath = solrParams.get("dicPath");
		Dictionary dict = Utils.getDict(dicPath, loader);

		NamedList<Object> result = new NamedList<Object>();
		result.add("dicPath", dict.getDicPath().toURI());

		boolean check = solrParams.getBool("check", false);	//仅仅用于检测词库是否有变化
		//用于尝试加载词库,有此参数, check 参数可以省略。
		boolean reload = solrParams.getBool("reload", false);	

		check |= reload;

		boolean changed = false;
		boolean reloaded = false;
		if(check) {
			changed = dict.wordsFileIsChange();
			result.add("changed", changed);
		}
		if(changed && reload) {
			reloaded = dict.reload();
			result.add("reloaded", reloaded);
		}
		rsp.add("result", result);
	}

	public void inform(SolrCore core) {
		loader = core.getResourceLoader();
		//solrHome = new File(loader.getInstanceDir());
	}

}