Birt POJO Data Source POC

bajajy
edited February 11, 2022 in Analytics #1

I am doing POC for Birt POJO Data source. I want to reuse the existing Spring based framework code in Birt POC.

In Open method, I am loading Spring Application context, executing business logic to get data and close method destroying the spring application context. Please advise, this is the correct way to load Spring Application context in open method?

public class ReportApplication {

private AnnotationConfigApplicationContext ctx = null;
Iterator<? extends String> iterator;
public void open(Object appContext, Map<String, Object> datasetParamValues) {

    try {
        ctx = new AnnotationConfigApplicationContext();
        ctx.scan("com.****.****");
        ctx.register(BirtConfig.class);
        IReferenceService refService = (IReferenceService) SpringContext.getBean("referenceService");
        List<String> positions = null;

        positions = refService.refData(QueryType.NAMED);

        iterator = positions.iterator();
    } catch (Exception e) {
        e.printStackTrace();

    }

}

public Object next() {
    if (iterator != null && iterator.hasNext()) {

        return iterator.next();

    }
    return null;
}

public void close() {
    iterator = null;

    if (ctx != null) {
        ctx.close();
    }
}

}