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);
}
}