com.supermap.dtf.expression

类 ExpressionManager



  • public class ExpressionManager
    extends Object
    QLExpress 表达式的管理和再封装
    * 见:...
    • 字段详细资料

      • FUNCTION_PREFIX

        public static final String FUNCTION_PREFIX
        命名的函数必须要带有此标识
        另请参阅:
        常量字段值
      • CUSTOM_TAG

        public static final String CUSTOM_TAG
        自定义标签,如果存进来的函数没有标签的话,就会存到这个标签下
        另请参阅:
        常量字段值
      • EXPRESSION_TAG

        public static final String EXPRESSION_TAG
        表达式字符串有这个参数才会对整个字符串做计算
        另请参阅:
        常量字段值
    • 方法详细资料

      • getRunner

        public com.ql.util.express.ExpressRunner getRunner()
      • addOperatorFunction

        public void addOperatorFunction(String tag,
                                        String name,
                                        com.ql.util.express.instruction.op.OperatorBase op)
        添加操作符函数
        参数:
        name - 函数名
        op - 函数
      • addFunctionOfClassStaticMethod

        public void addFunctionOfClassStaticMethod(String functionTag,
                                                   String name,
                                                   String className,
                                                   String functionName,
                                                   String[] parameterTypes,
                                                   String errorInfo)
        添加一个类的静态函数定义,例如:Math.abs(double) 映射为表达式中的 "取绝对值(-5.0)"
        参数:
        functionTag - 函数标签,如是String 或者 Maths,用于分类,则默认归于自定义标签中
        name - 函数名称, 以@开头
        className - 类名称
        functionName - 类中的方法名称
        parameterTypes - 方法的参数类型名称
        errorInfo - 如果函数执行的结果是false,需要输出的错误信息
      • addFunctionOfServiceMethod

        public void addFunctionOfServiceMethod(String functionTag,
                                               String name,
                                               Object serviceObject,
                                               String functionName,
                                               Class<?>[] parameterClassTypes,
                                               String errorInfo)
        用于将一个用户自己定义的对象(例如Spring对象)方法转换为一个表达式计算的函数
        参数:
        functionTag - 函数标签,如是 String 或者 Maths,用于分类,如果为null,则默认归于自定义标签中
        name - 函数名,以@开头
        serviceObject - 对象
        functionName - 对象中的方法名称
        parameterClassTypes - 参数类型数组
        errorInfo - 错误信息
      • execute

        public Object execute(String expressString,
                              com.ql.util.express.IExpressContext<String,Object> context)
        执行表达式
        参数:
        expressString - 表达式字符串
        context - 上下文信息
        返回:
        返回表达式结果,如果执行失败,直接返回表达式字符串
      • updateFunctionAndExecute

        public Object updateFunctionAndExecute(String name,
                                               com.ql.util.express.instruction.op.OperatorBase operatorBase,
                                               String expressString,
                                               com.ql.util.express.IExpressContext<String,Object> context)
        提供替换函数的操作,并执行表达式 源于可能存在一些取值操作,但是取值取决于另外个对象,而另外个对象是常变化的,所以需要每次替换下函数
        参数:
        name - 函数名
        operatorBase - 函数
        expressString - 表达式
        context - 上下文
        返回:
        返回表达式结果,如果执行失败,直接返回表达式字符串
      • getFunction

        public com.ql.util.express.instruction.op.OperatorBase getFunction(String name)
        获取函数定义,通过函数定义可以拿到参数的说明信息
        参数:
        name - 函数名称
        返回:
      • getAllFunctionTags

        public List<String> getAllFunctionTags()
        获取所有的函数标签,可以通过这些标签来获取所对应的函数
        返回:
      • getParamsTypes

        public Class<?>[] getParamsTypes(String name)
        获取这个函数的参数类型
        参数:
        name -
        返回:
      • replaceOperator

        public com.ql.util.express.instruction.op.OperatorBase replaceOperator(String name,
                                                                               com.ql.util.express.instruction.op.OperatorBase operatorBase)
        替换操作符处理
        参数:
        name - 操作符名
        operatorBase - 新的操作符对象
      • checkSyntax

        public boolean checkSyntax(String text)
        提供简答的语法检查,保证可以在运行期本地环境编译成指令
        参数:
        text - 表达式字符串
        返回:
        是否符合表达式规范
      • isFunctionName

        public boolean isFunctionName(String name)
        是否存在此函数
        参数:
        name - 函数名
        返回:
      • executeFunctionExpression

        public String executeFunctionExpression(String expression,
                                                com.ql.util.express.IExpressContext expressContext)
        计算表达式里边的函数,并将真正的值替换到原表达式中返回,过程中抛出异常则返回原表达式
        参数:
        expression -
        expressContext -
        返回:

Copyright © 2021–2025 SuperMap. All rights reserved.