名为 com.digiassn.blogspot.birt.aggregators.implIn。在这个新包之下,创建一个 类 BasicWordCount。在 Java Class 窗口中,选择 Inherited abstract methods 复选框,以便此类可以继承 org.eclipse.birt.data.engine.api.aggregation.IAggrFunction 接口,如图 7 所示。
图 7. 创建新 IAggrFunction 实现
使用Eclipse BIRT扩展点:聚合(6)
时间:2011-09-04 IBM John Ward
IAggrFunction 类具有两项任务:它将自身描述为工厂可以创建的聚合,它还 会创建 Accumulator 类的实例来为您的聚合执行实际工作。清单 2 给出了代码 。
清单 2. 完成后的聚合函数和 Accumulator 类
public class BasicWordcount implements IAggrFunction {
private final static String sDescription =
"This aggregation will count all words in a column and return the count.";
private final static String sName = "Word Count";
private final static String sDisplayName = "Basic Word Count Aggregator";
public int getDataType() {
return DataType.INTEGER_TYPE;
}
public Object getDefaultValue() {
return new Integer(0);
}
public String getDescription() {
return this.sDescription;
}
public String getDisplayName() {
return this.sDisplayName;
}
public String getName() {
return this.sName;
}
public int getNumberOfPasses() {
return 1;
}
public IParameterDefn[] getParameterDefn() {
IParameterDefn paramDef = new IParameterDefn() {
public boolean supportDataType(int paramType) {
if (paramType == DataType.STRING_TYPE)
{
return true;
}
return false;
}
public boolean isOptional() {
return false;
}
public boolean isDataField() {
return false;
}
public String getName() {
return "StringColumn";
}
public String getDisplayName() {
return "String Column";
}
public String getDescription() {
return "A column expression that is a String";
}
};
IParameterDefn[] parameterDefinitionArray = new IParameterDefn[]
{paramDef};
return parameterDefinitionArray;
}
public int getType() {
return IAggrFunction.SUMMARY_AGGR;
}
public boolean isDataOrderSensitive() {
return false;
}
public Accumulator newAccumulator() {
return new Accumulator()
{
int sum;
@Override
public Object getValue() throws DataException {
return new Integer(sum);
}
@Override
public void onRow(Object[] incomingStrings) throws DataException {
String localString = (String) incomingStrings [0];
sum += localString.split(" ").length;
}
};
}
}
使用Eclipse BIRT扩展点:聚合(7)
时间:2011-09-04 IBM John Ward
此类中的大部分方法只是简单描述要在 BIRT Aggregation Widgets 下拉列表 中显示的聚合的各个方面,比如数据类型、标题和描述信息。这 3 个方面有必要 进一步解释 |