📄 reportmanager.java.svn-base
字号:
package com.nsi.reports;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.nsi.control.exceptions.NsiEventException;
import com.nsi.persistence.DataSrcUtil;
import com.nsi.persistence.IsqlDataSource;
public final class ReportManager
{
private static Log log = LogFactory.getLog(ReportManager.class);
/**
* private constructor of ReportManager, prevent instantiation
*/
private ReportManager()
{
}
private static class ReportManagerHolder
{
static final ReportManager rptManager = new ReportManager();
}
/**
* @return an instance of ReportManager
*/
public static ReportManager getInstance()
{
return ReportManagerHolder.rptManager;
}
public void execute(Report rpt) throws NsiEventException
{
try
{
String reportfilename = rpt.getReportfilename();
log.error("execute() -- reportfilename[" + reportfilename +"]");
String rptTemplateName = rpt.getTemplate();
log.error("execute() -- rptTemplateName[" + rptTemplateName +"]");
File file = new File(rptTemplateName);
InputStream rptinput = new FileInputStream(file);
Connection conn = null;
JasperPrint jasperrpt = null;
try
{
conn= getConnection();
conn.setAutoCommit(false);
jasperrpt = JasperFillManager.fillReport(rptinput, rpt.getParamtermap(), conn );
/* here make sure connection commit */
conn.commit();
}
catch (Exception ex)
{
log.error("caught Exception when trying to fill report ", ex );
throw new NsiEventException("caught Exception when trying to fill report ", ex);
}
finally
{
try
{
if (conn != null)
{
conn.close();
}
}
catch (SQLException ex)
{
}
}
if (jasperrpt != null)
{
log.debug("after fillReport jasperrpt : " + jasperrpt.getName());
try
{
jasperrpt.setOrientation(JasperReport.ORIENTATION_PORTRAIT);
JasperExportManager.exportReportToPdfFile(jasperrpt, reportfilename);
}
catch( JRException jrex )
{
log.error("export report to pdf caught JRException : ", jrex );
throw new NsiEventException("export report to pdf caught JRException : ", jrex );
}
log.debug("report response is ready for : " + jasperrpt.getName());
}
else
{
log.debug( "after fillReport : jasperrpt is null" );
}
}
catch (Exception ex)
{
log.error("execute report caught error: ", ex);
throw new NsiEventException("execute report caught error: ", ex);
}
finally
{
}
}
public ReportResponse executeRpt(Report rpt) throws NsiEventException
{
ReportResponse rptresponse = new ReportResponse();
try
{
execute( rpt);
rptresponse.setResultbytes( getBytesFromFile(rpt.getReportfilename()));
}
catch (IOException ioex)
{
log.error("execute report caught ioexception: ", ioex);
throw new NsiEventException("execute report caught ioexception: ", ioex);
}
return rptresponse;
}
private Connection getConnection() throws NsiEventException
{
Connection conn = null;
try
{
IsqlDataSource drc = DataSrcUtil.getInstance().getDataSource();
conn = drc.getConnection();
}
catch( Exception ex )
{
log.error("getConnection( ) -- caught exception: ", ex);
throw new NsiEventException( "rpt manager get connection caught exception: ", ex);
}
return conn;
}
private byte[] getBytesFromFile(String reportfilename ) throws IOException
{
File file = new File(reportfilename);
InputStream is = new FileInputStream(file);
long length = file.length();
byte[] bytes = new byte[(int) length];
is.read(bytes);
is.close();
file.delete();
return bytes;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -