/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.scheduling.manager.web; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.apache.struts2.ServletActionContext; import org.springframework.beans.factory.annotation.Autowired; import com.ewcms.plugin.report.generate.factory.ChartFactoryable; import com.ewcms.plugin.report.generate.factory.TextFactoryable; import com.ewcms.plugin.report.generate.vo.PageShowParam; import com.ewcms.plugin.report.manager.ReportFacable; import com.ewcms.plugin.report.model.ChartReport; import com.ewcms.plugin.report.model.TextReport; import com.ewcms.scheduling.BaseException; import com.ewcms.scheduling.generate.job.report.EwcmsJobReportFacable; import com.ewcms.scheduling.generate.job.report.model.EwcmsJobParameter; import com.ewcms.scheduling.generate.job.report.model.EwcmsJobReport; import com.ewcms.scheduling.manager.util.ConversionUtil; import com.ewcms.scheduling.manager.vo.PageDisplayVO; import com.opensymphony.xwork2.ActionSupport; /** * * @author wu_zhijun * */ public class JobReportAction extends ActionSupport { private static final long serialVersionUID = 5346861972849849266L; @Autowired private EwcmsJobReportFacable ewcmsJobReportFac; @Autowired private TextFactoryable textFactory; @Autowired private ChartFactoryable chartFactory; @Autowired private ReportFacable reportFac; private PageDisplayVO pageDisplayVo = new PageDisplayVO(); private Long reportId; private String reportName; private String reportType; private List<PageShowParam> pageShowParams = new ArrayList<PageShowParam>(); public PageDisplayVO getPageDisplayVo() { return pageDisplayVo; } public void setPageDisplayVo(PageDisplayVO pageDisplayVo) { this.pageDisplayVo = pageDisplayVo; } public Long getReportId() { return reportId; } public void setReportId(Long reportId) { this.reportId = reportId; } public String getReportName() { return reportName; } public void setReportName(String reportName) { this.reportName = reportName; } public String getReportType() { return reportType; } public void setReportType(String reportType) { this.reportType = reportType; } public List<PageShowParam> getPageShowParams() { return pageShowParams; } public void setPageShowParams(List<PageShowParam> pageShowParams) { this.pageShowParams = pageShowParams; } public String getJobReport() { EwcmsJobReport ewcmsJobReport = ewcmsJobReportFac.getSchedulingByReportId(getReportId(), getReportType()); if (ewcmsJobReport != null){ PageDisplayVO vo = ConversionUtil.constructPageVo(ewcmsJobReport); if (getReportType().equals("text")){ TextReport text = ewcmsJobReport.getTextReport(); vo.setReportId(text.getId()); vo.setReportName(text.getName()); vo.setReportType("text"); vo.setPageShowParams(ConversionUtil.coversionParameterFromPage(ewcmsJobReportFac.findByJobReportParameterById(ewcmsJobReport.getId()), textFactory.textParameters(text))); vo.setOutputFormats(ConversionUtil.stringToArray(((EwcmsJobReport) ewcmsJobReport).getOutputFormat())); }else if (getReportType().equals("chart")){ ChartReport chart = ewcmsJobReport.getChartReport(); vo.setReportId(chart.getId()); vo.setReportName(chart.getName()); vo.setReportType("chart"); vo.setPageShowParams(ConversionUtil.coversionParameterFromPage(ewcmsJobReportFac.findByJobReportParameterById(ewcmsJobReport.getId()), chartFactory.chartParameters(chart))); } setPageDisplayVo(vo); setPageShowParams(vo.getPageShowParams()); }else{ if (getReportType().equals("text")){ TextReport text = reportFac.findTextReportById(getReportId()); getPageDisplayVo().setLabel(text.getName()); getPageDisplayVo().setReportName(text.getName()); getPageDisplayVo().setPageShowParams(textFactory.textParameters(text)); }else if (getReportType().equals("chart")){ ChartReport chart = reportFac.findChartReportById(getReportId()); getPageDisplayVo().setLabel(chart.getName()); getPageDisplayVo().setReportName(chart.getName()); getPageDisplayVo().setPageShowParams(chartFactory.chartParameters(chart)); } setPageShowParams(getPageDisplayVo().getPageShowParams()); } return INPUT; } public String saveJobReport() { try { Set<EwcmsJobParameter> ewcmsJobParameters = new LinkedHashSet<EwcmsJobParameter>(); if (getReportType().equals("text")){ TextReport text = reportFac.findTextReportById(getReportId()); ewcmsJobParameters = ConversionUtil.pageToJob(new LinkedHashSet<EwcmsJobParameter>(),text.getParameters(),ServletActionContext.getRequest()); }else if (getReportType().equals("chart")){ ChartReport chart = reportFac.findChartReportById(getReportId()); ewcmsJobParameters = ConversionUtil.pageToJob(new LinkedHashSet<EwcmsJobParameter>(),chart.getParameters(),ServletActionContext.getRequest()); } Long jobId = ewcmsJobReportFac.saveOrUpdateJobReport(getReportId(), getPageDisplayVo(), getReportType(), ewcmsJobParameters); if (jobId == null) { addActionMessage("操作失败"); } EwcmsJobReport jobReport = ewcmsJobReportFac.getScheduledJobReport(jobId); if (jobReport != null) { PageDisplayVO vo = ConversionUtil.constructPageVo(jobReport); if (getReportType().equals("text")){ vo.setPageShowParams(ConversionUtil.coversionParameterFromPage(ewcmsJobReportFac.findByJobReportParameterById(jobId), textFactory.textParameters(jobReport.getTextReport()))); vo.setOutputFormats(ConversionUtil.stringToArray(((EwcmsJobReport) jobReport).getOutputFormat())); }else if (getReportType().equals("chart")){ vo.setPageShowParams(ConversionUtil.coversionParameterFromPage(ewcmsJobReportFac.findByJobReportParameterById(jobId), chartFactory.chartParameters(jobReport.getChartReport()))); } setPageDisplayVo(vo); setPageShowParams(vo.getPageShowParams()); addActionMessage("数据保存成功!"); } } catch (BaseException e) { addActionMessage(e.getPageMessage()); } return SUCCESS; } }