⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reportmanager.java.svn-base

📁 一个timesheet程序,用来统计开发人员的度量衡web在线程序.用于软件行业
💻 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 + -