com.pureinfo.srm.reports.action.ChartViewAction.java Source code

Java tutorial

Introduction

Here is the source code for com.pureinfo.srm.reports.action.ChartViewAction.java

Source

/**
 * 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;
    }
}