2010年2月22日 星期一

ERP iReport

Jasper Custom Data Source
Asked by Maciek1983 in Java Programming Language,
New to Java Programming
Tags: jasper, custom, datasource, data, source
I'm a newbie to programming and I'm trying to set up a custom data source for a Jasper Report and I'm having 2 problems.:

1. PrintVendorParametersBean

public class PrintVendorLabelsParameterBean
{

public String vendorName;
public String vendorAddress;

public printVendorLabelsParameterBean(String nm,String addr)
{
this.vendorName = nm;
this.vendorAddress = addr;
}
public String getVendorAddress()
{
return vendorAddress;
}

public void setVendorAddress(String vendorAddress)
{
this.vendorAddress = vendorAddress;
}
public String getVendorName()
{
return vendorName;
}
public void setVendorName(String vendorName)
{
this.vendorName = vendorName;
}
}

2. printVendorDataSource
public class printVendorDataSource implements JRDataSource {

// hard coded, needs to use a list later, just print one Bean for now
private int counter=0;
private ArrayList list = new ArrayList();

public printVendorDataSource (ArrayList l) {
this.list = l;
}

public Object getFieldValue(JRField jrField) throws JRException {
String fieldName = jrField.getName();
Object value = "";

if(fieldName.equals("vendorName"))
{ printVendorLabelsParameterBean pvb = (printVendorLabelsParameterBean)list.get(counter);
value = pvb.getVendorName();
}
return value;
}

public boolean next() throws JRException {
counter++;
if(counter>list.size())
return false;

return true;
}
}

2. printVendorLabelsDSProvider


public class printVendorLabelsDSProviderextends JRAbstractBeanDataSourceProvider
{
public WiObjectList objlist = null;

public printVendorLabelsDSProvider(WiObjectList obj) {
super(printVendorLabelsParameterBean.class);
objlist = obj;
}

public JRDataSource create(JasperReport report) throws JRException {
ArrayList list = new ArrayList();

try
{
boolean more = objlist.open();
while(more)
{
list.add(new printVendorLabelsParameterBean(objlist.getFieldValue("vendor_name"),objlist.getFieldValue("vendor_name")));
more = objlist.next();
}
}
catch(Exception e)
{

}
return new printVendorDataSource(list);
}

public void dispose(JRDataSource dataSource) throws JRException {
// nothing to dispose
}


}

4. printVendorLabelsService

public class printVendorLabelsService
{
public void getReport(WiSession ses, WiObjectList objList,PrintWriter out)
{
printVendorLabelsBean jrp = new printVendorLabelsBean(objList);
HashMap reportParams = null;


File rptFile = null;
FileInputStream fin = null;
try
{
rptFile = new File(System.getProperty("webapp.root")+ "glap\\reports\\printVendorLabels.jasper");

JasperReport htmlReport = (JasperReport) JRLoader.loadObject(rptFile.getPath());
JasperPrint htmlPrint = null;
htmlPrint = JasperFillManager.fillReport(htmlReport,reportParams ,jrp.create(htmlReport));
JRHtmlExporter exporter = new JRHtmlExporter();

// set exporter input file and out stream
exporter.setParameter(JRExporterParameter.JASPER_PRINT, htmlPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");
exporter.setParameter(JRHtmlExporterParameter.IS_WRAP_BREAK_WORD, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);

exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT, JRHtmlExporterParameter.SIZE_UNIT_PIXEL);
exporter.exportReport();
}
catch(Exception ex)
{
}

....nothing else relvant after

沒有留言: