Java tutorial
/** * PureInfo ReportPlugin * @(#)ChartAction.java 1.0 2006-7-26 * * Copyright(c) 2004-2005, PureInfo Information Technology Corp. Ltd. * All rights reserved, see the license file. * * www.pureinfo.com.cn */ package com.pureinfo.srm.reports.action; import java.io.File; import java.io.IOException; import org.apache.struts.action.ActionForward; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import com.pureinfo.ark.interaction.ActionBase; import com.pureinfo.force.exception.PureException; import com.pureinfo.srm.SRMExceptionTypes; import com.pureinfo.srm.auth.SRMAuthHelper; import com.pureinfo.srm.auth.SRMUserConstants; import com.pureinfo.srm.auth.model.SRMUser; import com.pureinfo.srm.reports.ReportConfigHelper; import com.pureinfo.srm.reports.chart.ChartBuildHelper; import com.pureinfo.srm.reports.chart.ChartContext; import com.pureinfo.srm.reports.chart.ChartProvider; import com.pureinfo.srm.reports.chart.builder.IChartBuilder; import com.pureinfo.srm.reports.chart.element.Chart; import com.pureinfo.srm.reports.chart.view.ChartViewBean; /** * <P> * Created on 2006-7-26 14:37:47 <BR> * Last modified on 2006-7-26 * </P> * TODO describe ChartAction here ... * * @author elmar.chen * @version 1.0, 2006-7-26 * @since ReportPlugin 1.0 */ public class ChartViewAction extends ActionBase { //private static Logger logger = Logger.getLogger(ChartViewAction.class); /** * @throws PureException * @see com.pureinfo.ark.interaction.ActionBase#executeAction() */ public ActionForward executeAction() throws PureException { request.setAttribute("dept", "2"); ChartProvider provider = getProvider(); provider.setRequest(request.getHttpServletRequest()); Chart chartInfo = (Chart) request.getAttribute("chart"); if (chartInfo == null) { String sChartId = request.getParameter("id"); ChartContext context = new ChartContext(); context.setProvider(provider); context.setRequest(request.getHttpServletRequest()); chartInfo = provider.getChart(sChartId, context); } IChartBuilder builder = ChartBuildHelper.getChartBuilder(chartInfo); JFreeChart chart = builder.buildChart(); String sFileName = ReportConfigHelper.makeImageFileName("png"); ChartViewBean chartScale = builder.getChartViewBean(); request.setAttribute("chartScale", chartScale); request.setAttribute("filename", sFileName); try { String sPath = ReportConfigHelper.getImageLocalPath(); File file = new File(sPath, sFileName); ChartUtilities.saveChartAsPNG(file, chart, chartScale.getChartSize().x, chartScale.getChartSize().y); } catch (IOException ex) { ex.printStackTrace(); throw new PureException(SRMExceptionTypes.REPORT_SAVE_CHART, sFileName, ex); } if (chartScale.getLengedPosition() == ChartViewBean.LENGEND_POSITION_RIGHT) { return mapping.findForward("right-lengend"); } return mapping.findForward("bottom-lengend"); } private ChartProvider getProvider() throws PureException { SRMUser user = (SRMUser) loginUser; ChartProvider provider; if (SRMAuthHelper.getLevel(user) == SRMUserConstants.LEVEL_ADMIN1 || SRMAuthHelper.getLevel(user) == SRMUserConstants.LEVEL_SUPER) { provider = ChartProvider.instance4admin1(); } else { provider = ChartProvider.instance4admin2(); request.setAttribute("dept", "" + user.getDepartmentId()); } provider.setRequest(request.getHttpServletRequest()); return provider; } }