package edu.ucsf.mousedatabase.servlets; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.*; import edu.ucsf.mousedatabase.*; import edu.ucsf.mousedatabase.objects.ImportReport; public class ReportServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public static final String HolderReportName = "Holder report"; public static final String RecordsReportName = "Records report"; public static final String LarcRecordHolderReportName = "LARC record holder report"; public static final String PPTChangeRequestImportReportName = "TDU change request report"; public static final String PurchaseChangeRequestImportReportName = "PDU change request report"; public static final String PurchaseSubmissionsImportReportName = "PDU new submissions report"; public static final String OtherInstitutionsChangeRequestImportReportName = "IDU change request report"; public static final String OtherInstitutionsSubmissionsImportReportName = "IDU new submissions report"; public static final String OtherInstitutionsUnpublishedImportReportName = "IDU unpublished transfers report"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Object[] args = null; String reportName = request.getParameter("reportName"); Boolean problem = false; String filename = reportName + ".csv"; if (reportName.equals(LarcRecordHolderReportName)) { filename = "holderreport.csv"; } if (reportName.equals(PPTChangeRequestImportReportName) || reportName.equals(PurchaseChangeRequestImportReportName) || reportName.equals(PurchaseSubmissionsImportReportName) || reportName.equals(OtherInstitutionsChangeRequestImportReportName) || reportName.equals(OtherInstitutionsSubmissionsImportReportName) || reportName.equals(OtherInstitutionsUnpublishedImportReportName)) { args = new Object[1]; args[0] = request.getParameter("importReportId"); ArrayList<ImportReport> reports = DBConnect.getImportReport(Integer.parseInt((String)args[0])); filename = reportName + " " + reports.get(0).getName() + ".csv"; } String errorMessage = "Problem running report. Please contact Mouse Database Administrator\r\n"; String report = ""; if (reportName != null && !reportName.equals("")) { try { report = DBConnect.RunReport(reportName,args); } catch (IndexOutOfBoundsException e) { problem = true; errorMessage += e.getMessage(); } catch (Exception e) { e.printStackTrace(); problem = true; errorMessage += e.getMessage(); } } else { errorMessage += "No report specified!"; problem = true; } response.setContentType("application/text"); filename = filename.replaceAll(" ", "_"); response.setHeader("Content-disposition","attachment; filename=" +filename); if (!problem) { response.getWriter().write(report); } else { response.getWriter().write(errorMessage); } } }