/* * Copyright (C) 2007 Erik Swenson - erik@oreports.com * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have reserved a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. * */ package org.efs.openreports.actions.admin; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.commons.dbcp.BasicDataSource; import org.apache.struts2.ServletActionContext; import org.efs.openreports.objects.Report; import org.efs.openreports.objects.ReportAlert; import org.efs.openreports.objects.ReportChart; import org.efs.openreports.objects.ReportExportOption; import org.efs.openreports.objects.ReportParameter; import org.efs.openreports.providers.ReportProvider; import com.opensymphony.xwork2.ActionSupport; import com.thoughtworks.xstream.XStream; public class DataExportAction extends ActionSupport { private boolean submitOk; private String fileName; private List reports; private int[] reportIds; private ReportProvider reportProvider; public String execute() { try { if (!submitOk) { reports = reportProvider.getReports(); return SUCCESS; } XStream xStream = new XStream(); xStream.omitField(BasicDataSource.class, "logWriter"); xStream.omitField(Report.class, "id"); xStream.omitField(ReportAlert.class, "id"); xStream.omitField(ReportChart.class, "id"); xStream.omitField(ReportParameter.class, "id"); xStream.omitField(ReportExportOption.class, "id"); List<Report> selectedReports = new ArrayList<Report>(); for (int i = 0; i < reportIds.length; i++) { Report report = reportProvider.getReport(new Integer(reportIds[i])); selectedReports.add(report); } HttpServletResponse response = ServletActionContext.getResponse(); response.setHeader("Content-disposition", "inline; filename=or-report-export.xml"); response.setContentType("application/xml"); ServletOutputStream outputStream = response.getOutputStream(); xStream.toXML(selectedReports, outputStream); outputStream.flush(); outputStream.close(); return NONE; } catch (Exception e) { addActionError(e.toString()); return INPUT; } } public void setSubmitOk(String submitOk) { if (submitOk != null) this.submitOk = true; } public List getReports() { return reports; } public int[] getReportIds() { return reportIds; } public void setReportIds(int[] reportIds) { this.reportIds = reportIds; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public void setReportProvider(ReportProvider reportProvider) { this.reportProvider = reportProvider; } }