package hk.hku.cecid.edi.as2.admin.listener; import hk.hku.cecid.edi.as2.AS2PlusProcessor; import hk.hku.cecid.edi.as2.dao.AS2DAOHandler; import hk.hku.cecid.edi.as2.dao.MessageDVO; import hk.hku.cecid.edi.as2.module.OutgoingMessageProcessor; import hk.hku.cecid.edi.as2.pkg.AS2Message; import hk.hku.cecid.piazza.commons.util.PropertyTree; import hk.hku.cecid.piazza.corvus.admin.listener.AdminPageletAdaptor; import java.io.PrintWriter; import java.io.StringWriter; import javax.servlet.http.HttpServletRequest; import javax.xml.transform.Source; public class ResendAsNewAdapter extends AdminPageletAdaptor { protected Source getCenterSource(HttpServletRequest request) { PropertyTree dom; try { String primalMessageId = request.getParameter("primal_message_id"); if (null == primalMessageId) { throw new Exception("Primal Message ID is null"); } OutgoingMessageProcessor outProcessor = AS2PlusProcessor.getInstance().getOutgoingMessageProcessor(); AS2Message as2Message = outProcessor.resendAsNew(primalMessageId); AS2DAOHandler daoHandler = new AS2DAOHandler(outProcessor.getDAOFactory()); MessageDVO msgDVO = daoHandler.findMessageDVO(as2Message.getMessageID(), MessageDVO.MSGBOX_OUT); dom = new PropertyTree(); dom.setProperty("/message_history", ""); if (null != msgDVO) { setDisplayMessage(dom, msgDVO); } setSearchCriteria(dom); } catch (Exception e) { dom = new PropertyTree(); dom.setProperty("/error", ""); dom.setProperty("operation", "Resend as New"); //dom.setProperty("home_directory", Sys.main.properties.getProperty("/corvus/home")); StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); e.printStackTrace(printWriter); dom.setProperty("exception_message", stringWriter.toString()); AS2PlusProcessor.getInstance().getLogger().debug( "Unable to process the \"Resend as New\" request", e); } return dom.getSource(); } private void setDisplayMessage(PropertyTree dom, MessageDVO messageDVO) { dom.setProperty("message[0]/message_id", checkNullAndReturnEmpty(messageDVO.getMessageId())); dom.setProperty("message[0]/message_box", checkNullAndReturnEmpty(messageDVO.getMessageBox())); dom.setProperty("message[0]/as2_from", checkNullAndReturnEmpty(messageDVO.getAs2From())); dom.setProperty("message[0]/as2_to", checkNullAndReturnEmpty(messageDVO.getAs2To())); dom.setProperty("message[0]/time_stamp", messageDVO .getTimeStamp().toString()); dom.setProperty("message[0]/status", checkNullAndReturnEmpty(messageDVO.getStatus())); dom.setProperty("message[0]/is_acknowledged", String .valueOf(messageDVO.isAcknowledged())); dom.setProperty("message[0]/is_receipt", String .valueOf(messageDVO.isReceipt())); dom.setProperty("message[0]/is_receipt_requested", String .valueOf(messageDVO.isReceiptRequested())); } private void setSearchCriteria(PropertyTree dom) { // set the search criteria dom.setProperty("search_criteria/message_id", ""); dom.setProperty("search_criteria/message_box", ""); dom.setProperty("search_criteria/as2_from", ""); dom.setProperty("search_criteria/as2_to", ""); dom.setProperty("search_criteria/status", ""); dom.setProperty("search_criteria/num_of_messages", ""); dom.setProperty("search_criteria/offset", "0"); dom.setProperty("search_criteria/is_detail", ""); //change the message status for message_time dom.setProperty("search_criteria/message_time",""); } private String checkNullAndReturnEmpty(String value) { if (value == null) { return new String(""); } return value; } }