/**
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is OpenELIS code.
*
* Copyright (C) The Minnesota Department of Health. All Rights Reserved.
*/
package us.mn.state.health.lims.common.provider.reports;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Map;
import javax.naming.InitialContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionMessages;
import us.mn.state.health.lims.common.log.LogEvent;
import us.mn.state.health.lims.common.util.DateUtil;
import us.mn.state.health.lims.common.util.SystemConfiguration;
import us.mn.state.health.lims.common.util.validator.ActionError;
/**
* @author benzd1
*
*/
public class MycologyWorksheetProvider extends BaseReportsProvider {
/* (non-Javadoc)
* @see us.mn.state.health.lims.common.provider.reports.BaseReportsProvider#processRequest(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
* bugzilla 2274: added boolean successful
*/
public boolean processRequest(Map parameters, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
ServletContext context = session.getServletContext();
File reportFile = new File(context
.getRealPath("/WEB-INF/reports/specimen_list.jasper"));
ServletOutputStream servletOutputStream = response.getOutputStream();
byte[] bytes = null;
Connection conn = null;
ActionError error = null;
ActionMessages errors = new ActionMessages();
try {
InitialContext ic = new InitialContext();
DataSource nativeDS = (DataSource) ic.lookup(SystemConfiguration.getInstance().getDefaultDataSource().toString());
conn = nativeDS.getConnection();
// get yesterday's date as date received
// Put the current system date in a Calendar object.
GregorianCalendar gc = new GregorianCalendar();
// Subtract one day from the object.
gc.add(Calendar.DATE, -1);
// Get a Date object based on the Calendar object.
Date dayAgo = gc.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String dateAsText = sdf.format(dayAgo);
//convert string date to java.util.Date by going through java.sql.Date
//bugzilla 2274 - date conversion fixed
String locale = SystemConfiguration.getInstance().getDefaultLocale()
.toString();
java.sql.Date sDate = DateUtil.convertStringDateToSqlDate(
dateAsText, locale);
java.util.Date date =
new java.util.Date(sDate.getTime());
parameters.put("Param_Received_Date", date);
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),
parameters, conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
servletOutputStream.write(bytes, 0, bytes.length);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException jre) {
//bugzilla 2154
LogEvent.logError("MycologyWorksheetProvider","processRequest()",jre.toString());
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
//jre.printStackTrace(printWriter);
response.setContentType("text/plain");
response.getOutputStream().print(stringWriter.toString());
error = new ActionError("errors.jasperreport.general", null, null);
} catch (Exception e) {
//bugzilla 2154
LogEvent.logError("MycologyWorksheetProvider","processRequest()",e.toString());
error = new ActionError("errors.jasperreport.general", null, null);
} finally {
try {
conn.close();
} catch (SQLException sqle) {
//bugzilla 2154
LogEvent.logError("MycologyWorksheetProvider","processRequest()",sqle.toString());
}
if (error != null) {
errors.add(ActionMessages.GLOBAL_MESSAGE, error);
request.setAttribute(Globals.ERROR_KEY, errors);
return false;
} else {
return true;
}
}
}
}