public void addOperatorWithAlias()

in src/main/java/com/ql/util/express/instruction/op/OperatorFactory.java [87:116]


    public void addOperatorWithAlias(String aliasName, String name, String errorInfo) throws Exception {
        if (!this.operatorMap.containsKey(name)) {
            throw new QLException(name + " 不是系统级别的操作符号,不能设置别名");
        } else {
            OperatorBase originalOperator = this.operatorMap.get(name);
            if (originalOperator == null) {
                throw new QLException(name + " 不能被设置别名");
            }
            OperatorBase destOperator;
            if (originalOperator instanceof CanClone) {
                destOperator = ((CanClone)originalOperator).cloneMe(aliasName, errorInfo);
            } else {
                Class<OperatorBase> opClass = (Class<OperatorBase>)originalOperator.getClass();
                Constructor<OperatorBase> constructor;
                try {
                    constructor = opClass.getConstructor(String.class, String.class, String.class);
                } catch (Exception e) {
                    throw new QLException(name + " 不能被设置别名:" + e.getMessage());
                }
                if (constructor == null) {
                    throw new QLException(name + " 不能被设置别名");
                }
                destOperator = constructor.newInstance(aliasName, name, errorInfo);
            }
            if (this.operatorMap.containsKey(aliasName)) {
                throw new RuntimeException("操作符号:\"" + aliasName + "\" 已经存在");
            }
            this.addOperator(aliasName, destOperator);
        }
    }