2013-09-06 2 views
1

Я следую примеру http://www.eclipse.org/birt/phoenix/project/notable4.3.php#jump_3 , и я не могу заставить его работать правильно. На шаге, где вы определяете новый DataSet (New Birt POJO Data Set), я не могу найти «Имя класса POJO Data Set». Виджет совпадающего элемента остается пустым. Я пробовал редактировать rptdesign с вкладкой source, используя все варианты (с/без имени пакета), ничего не делает. У кого-то был успех с этой новой особенностью BIRT?У вас возникли проблемы с BIRT 4.3 new POJO DataSource

ответ

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() { 
} 
} 
+0

Благодарим за отправку решения. Я думаю, что итератор должен быть закрытым и инициализироваться в «открытом» методе скорее в next(). – Dominique

+0

@ Francois Lacoursiere В моем случае я не вижу имя класса источника данных в источнике данных. PLZ Если вы столкнулись с проблемой, то plz помогите мне. – Sheel

+0

Я пытался вывести, и я это вывел. Вам нужен объект с методом public object next(). Он проходит через этот конвертер https://eclipse.googlesource.com/birt/org.eclipse.birt/+/f991893c494cfacc508f7dab9e1b6a7d2e00d5fc/data/org.eclipse.birt.data.oda.pojo/src/org/eclipse/birt/data /oda/pojo/impl/internal/PojoDataSetFromCustomClass.java –