package com.cab.component.rule;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ql.util.express.ExpressRunner;
import com.ql.util.express.IExpressContext;


/**
 * 条件的集合
 * @author fanhuibin
 *
 */
public class Rule {
	public String name;
	private ExpressRunner runner = new ExpressRunner();
	private Map<String,String> methodDescription = new HashMap();
	
	/**
	 * 添加一个条件判断
	 * @param name 函数的中文名
	 * @param aClassName 类名称
	 * @param aFunctionName 类中的方法名称
	 * @param aParameterTypes 参数的类型
	 * @param errorInfo 错误的消息
	 * @throws Exception
	 */
	public void addCondition(String name, String aClassName,
			String aFunctionName, String[] aParameterTypes, String errorInfo) throws Exception{
		runner.addFunctionOfClassMethod(name, aClassName, aFunctionName, aParameterTypes, errorInfo);
		//从注解中获取中文描述
	}
	
	/**
	 * 执行逻辑判断
	 * @param expressContext
	 * @param expression
	 * @throws Exception 
	 */
	public List<String> validate(IExpressContext<String,Object> expressContext,String expression) throws Exception{
		List<String> errorInfo = new ArrayList<String>();
        Boolean result = (Boolean)runner.execute(expression, expressContext, errorInfo, true, false);
        return errorInfo;
	}

}
