1 19 20 package org.efs.openreports.actions; 21 22 import java.util.Date ; 23 import java.util.HashMap ; 24 import java.util.Map ; 25 26 import org.apache.log4j.Logger; 27 import org.efs.openreports.ORStatics; 28 import org.efs.openreports.engine.JFreeReportEngine; 29 import org.efs.openreports.engine.QueryReportEngine; 30 import org.efs.openreports.engine.input.ReportEngineInput; 31 import org.efs.openreports.engine.output.QueryEngineOutput; 32 import org.efs.openreports.engine.output.ReportEngineOutput; 33 import org.efs.openreports.objects.Report; 34 import org.efs.openreports.objects.ReportLog; 35 import org.efs.openreports.objects.ReportUser; 36 import org.efs.openreports.providers.DataSourceProvider; 37 import org.efs.openreports.providers.DataSourceProviderAware; 38 import org.efs.openreports.providers.DirectoryProvider; 39 import org.efs.openreports.providers.DirectoryProviderAware; 40 import org.efs.openreports.providers.PropertiesProvider; 41 import org.efs.openreports.providers.PropertiesProviderAware; 42 import org.efs.openreports.providers.ReportLogProvider; 43 import org.efs.openreports.providers.ReportLogProviderAware; 44 45 import com.opensymphony.xwork.ActionContext; 46 import com.opensymphony.xwork.ActionSupport; 47 48 public class QueryReportAction extends ActionSupport 49 implements 50 ReportLogProviderAware, 51 DataSourceProviderAware, 52 PropertiesProviderAware, DirectoryProviderAware 53 { 54 protected static Logger log = Logger.getLogger(QueryReportAction.class); 55 56 protected DataSourceProvider dataSourceProvider; 57 protected ReportLogProvider reportLogProvider; 58 protected PropertiesProvider propertiesProvider; 59 protected DirectoryProvider directoryProvider; 60 61 protected Report report; 62 63 private String html; 64 65 public String execute() 66 { 67 ActionContext.getContext().getSession().remove(ORStatics.QUERY_REPORT_RESULTS); 69 ActionContext.getContext().getSession().remove(ORStatics.QUERY_REPORT_PROPERTIES); 70 71 ReportUser user = (ReportUser) ActionContext.getContext().getSession().get( 72 ORStatics.REPORT_USER); 73 74 report = (Report) ActionContext.getContext().getSession().get(ORStatics.REPORT); 75 76 Map reportParameters = getReportParameterMap(user); 77 78 ReportLog reportLog = new ReportLog(user, report, new Date ()); 79 80 try 81 { 82 log.debug("Starting Query Report: " + report.getName()); 83 log.debug("Query: " + report.getQuery()); 84 85 reportLogProvider.insertReportLog(reportLog); 86 87 ReportEngineInput input = new ReportEngineInput(report, reportParameters); 88 89 if (report.isJFreeReport()) 90 { 91 JFreeReportEngine jfreeReportEngine = new JFreeReportEngine( 92 dataSourceProvider, directoryProvider, propertiesProvider); 93 94 ReportEngineOutput output = jfreeReportEngine.generateReport(input); 95 96 html = new String (output.getContent()); 97 } 98 else 99 { 100 QueryReportEngine queryReportEngine = new QueryReportEngine( 101 dataSourceProvider, directoryProvider, propertiesProvider); 102 103 QueryEngineOutput output = (QueryEngineOutput) queryReportEngine.generateReport(input); 104 105 ActionContext.getContext().getSession().put( 106 ORStatics.QUERY_REPORT_RESULTS, output.getResults()); 107 108 ActionContext.getContext().getSession().put( 109 ORStatics.QUERY_REPORT_PROPERTIES, 110 output.getProperties()); 111 } 112 113 reportLog.setEndTime(new Date ()); 114 reportLog.setStatus(ReportLog.STATUS_SUCCESS); 115 reportLogProvider.updateReportLog(reportLog); 116 117 log.debug("Finished Query Report: " + report.getName()); 118 } 119 catch (Exception e) 120 { 121 122 addActionError(e.getMessage()); 123 124 log.error(e.getMessage()); 125 126 reportLog.setMessage(e.getMessage()); 127 reportLog.setStatus(ReportLog.STATUS_FAILURE); 128 129 reportLog.setEndTime(new Date ()); 130 131 try 132 { 133 reportLogProvider.updateReportLog(reportLog); 134 } 135 catch (Exception ex) 136 { 137 log.error("Unable to create ReportLog: " + ex.getMessage()); 138 } 139 140 return ERROR; 141 } 142 143 if (report.isJFreeReport()) return ORStatics.JFREEREPORT_RESULT; 144 145 return SUCCESS; 146 } 147 148 protected Map getReportParameterMap(ReportUser user) 149 { 150 Map reportParameters = new HashMap (); 151 152 if (ActionContext.getContext().getSession().get(ORStatics.REPORT_PARAMETERS) != null) 153 { 154 reportParameters = (Map ) ActionContext.getContext().getSession().get( 155 ORStatics.REPORT_PARAMETERS); 156 } 157 158 reportParameters.put(ORStatics.USER_ID, user.getId()); 160 reportParameters.put(ORStatics.EXTERNAL_ID, user.getExternalId()); 161 reportParameters.put(ORStatics.USER_NAME, user.getName()); 162 163 return reportParameters; 164 } 165 166 public void setReportLogProvider(ReportLogProvider reportLogProvider) 167 { 168 this.reportLogProvider = reportLogProvider; 169 } 170 171 public void setDataSourceProvider(DataSourceProvider dataSourceProvider) 172 { 173 this.dataSourceProvider = dataSourceProvider; 174 } 175 176 public void setPropertiesProvider(PropertiesProvider propertiesProvider) 177 { 178 this.propertiesProvider = propertiesProvider; 179 } 180 181 public void setDirectoryProvider(DirectoryProvider directoryProvider) 182 { 183 this.directoryProvider = directoryProvider; 184 } 185 186 public String getHtml() 187 { 188 return html; 189 } 190 191 public Report getReport() 192 { 193 return report; 194 } 195 }
| Popular Tags
|