遇到BIRT 4.3新POJO DataSource的问题

时间:2013-09-06 22:25:53

标签: java birt

我正在关注http://www.eclipse.org/birt/phoenix/project/notable4.3.php#jump_3的示例 我似乎无法让它正常工作。在您定义新DataSet(New Birt POJO数据集)的步骤中,我似乎找不到'POJO数据集类名'。匹配项窗口小部件仍为空。我尝试使用源选项卡编辑rptdesign尝试所有类型的变体(有/没有包名称),没有任何东西。 BIRT的这个新功能有没有成功?

1 个答案:

答案 0 :(得分:5)

好的,我的坏。如果我们必须实现一个接口而不是试图推断birt如何读取自定义pojo数据集,那会更容易。

所以在http://www.eclipse.org/birt/phoenix/project/notable4.3.php#jump_3的示例中,除了CustomerDataSet类之外,一切都按照描述工作。以下是适用于我的CustomerDataSet类的实现。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class CustomerDataSet {

public Iterator<Customer> itr;

public List<Customer> getCustomers() {
    List<Customer> customers = new ArrayList<Customer>();

    Customer c = new Customer(103);
    c.setCity("City1");
    c.setCountry("Country1");
    c.setCreditLimit(100);
    c.setName("aName1");
    c.setState("state1");
    customers.add(c);

    c = new Customer(104);
    c.setCity("City2");
    c.setCountry("Country2");
    c.setCreditLimit(200);
    c.setName("aName2");
    c.setState("aStat2");
    customers.add(c);

    c = new Customer(105);
    c.setCity("City3");
    c.setCountry("Country3");
    c.setCreditLimit(300);
    c.setName("aName3");
    c.setState("aStat3");
    customers.add(c);

    return customers;
}

public void open(Object obj, Map<String,Object> map) {
}

public Object next() {
    if (itr == null)
        itr = getCustomers().iterator();
    if (itr.hasNext())
        return itr.next();
    return null;
}

public void close() {
}
}