有关详细信息,请参阅通过 Eclipse 转换现有函数类。
在插件项目的 src 文件夹下,创建从 com.ghc.ghTester.expressions.Function 扩展的 Java™ 类(例如 com.samples.functions.FormatDate)。
现在需要实现以下方法:
创建带有空主体的缺省公共构造函数。缺省情况下,您可以根据需要添加其他初始化,但不必执行任何操作。由于函数的创建方式,缺省构造函数必须为公共构造函数。
public FormatDate() {
}
create(int, Vector) 方法是一种工厂方法,用于通过所提供的参数创建特定函数的实例。参数的向量需要视为函数本身,并且可能需要在运行时进行处理。
public Function create(int size, Vector params) {
Function outputFormat = null;
if (size == 3) {
outputFormat = (Function) params.get(2);
}
return new FormatDate((Function) params.get(0), (Function) params
.get(1), outputFormat);
}
示例中使用的三参数构造函数可在 Rational Integration Tester 安装文件夹的 examples 文件夹中提供的源代码内找到。
evaluate(Object) 方法执行函数的实际工作。Rational Integration Tester 将当前求值的上下文传递到您的函数。您可以使用该方法从嵌入函数获得结果,然后返回函数自己的结果。
public Object evaluate(Object data) {
String date = m_fDate.evaluateAsString(data);
String inputFormat = m_fInputFormat.evaluateAsString(data);
String outputFormat = "yyyy-MM-dd"; // Default format
if (m_fOutputFormat != null) {
outputFormat = m_fOutputFormat.evaluateAsString(data);
}
//...
if (EvalUtils.isString(date)) {
date = EvalUtils.getString(date);
}
if (EvalUtils.isString(inputFormat)) {
inputFormat = EvalUtils.getString(inputFormat);
}
if (EvalUtils.isString(outputFormat)) {
outputFormat = EvalUtils.getString(outputFormat);
}
SimpleDateFormat inputFormatter = new
SimpleDateFormat(inputFormat);
String formattedDate = "";
try {
Date d = inputFormatter.parse(date);
SimpleDateFormat outputFormatter =new
SimpleDateFormat(outputFormat);
formattedDate = outputFormatter.format(d);
} catch (ParseException ex) {
// ...
}
return "\"" + formattedDate + "\"";
}