/* * Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The * University of Hong Kong (HKU). All Rights Reserved. * * This software is licensed under the Apache License Version 2.0 [1] * * [1] http://www.apache.org/licenses/LICENSE-2.0.txt */ package hk.hku.cecid.edi.as2.admin.listener; import hk.hku.cecid.edi.as2.AS2Processor; import hk.hku.cecid.edi.as2.dao.MessageDAO; import hk.hku.cecid.edi.as2.dao.MessageDVO; import hk.hku.cecid.edi.as2.dao.RepositoryDAO; import hk.hku.cecid.edi.as2.dao.RepositoryDVO; import hk.hku.cecid.piazza.commons.io.IOHandler; import hk.hku.cecid.piazza.commons.servlet.RequestListenerException; import hk.hku.cecid.piazza.commons.servlet.http.HttpRequestAdaptor; import java.io.ByteArrayInputStream; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author Donahue Sze * */ public class RepositoryAdaptor extends HttpRequestAdaptor { /* * (non-Javadoc) * * @see hk.hku.cecid.piazza.commons.servlet.http.HttpRequestListener#processRequest(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ public String processRequest(HttpServletRequest request, HttpServletResponse response) throws RequestListenerException { try { String messageId = request.getParameter("message_id"); String messageBox = request.getParameter("message_box"); if (request.getParameter("is_download_receipt") != null) { if (request.getParameter("is_download_receipt") .equalsIgnoreCase("true")) { MessageDAO receiptDAO = (MessageDAO) AS2Processor.core.dao .createDAO(MessageDAO.class); Iterator i = receiptDAO.findMessageByOriginalMessageID( messageId, messageBox).iterator(); if (i.hasNext()) { MessageDVO data = (MessageDVO) i.next(); messageId = data.getMessageId(); messageBox = data.getMessageBox(); } else { AS2Processor.core.log .debug("Unable to find the receipt for message ID: " + messageId); return null; } } } RepositoryDAO repositoryDAO = (RepositoryDAO) AS2Processor.core.dao .createDAO(RepositoryDAO.class); RepositoryDVO repositoryDAOData = (RepositoryDVO) repositoryDAO .createDVO(); repositoryDAOData.setMessageId(messageId); repositoryDAOData.setMessageBox(messageBox); if (repositoryDAO.retrieve(repositoryDAOData)) { response.setCharacterEncoding(null); response.setContentType("application/download"); response.setHeader("Content-Disposition", "attachment;filename=\"" + repositoryDAOData.getMessageId() + ".as2\""); ByteArrayInputStream bis = new ByteArrayInputStream( repositoryDAOData.getContent()); IOHandler.pipe(bis, response.getOutputStream()); bis.close(); } } catch (Exception e) { AS2Processor.core.log.debug( "Unable to process the pagelet request", e); } return null; } }