package hk.hku.cecid.ebms.admin.listener;
import hk.hku.cecid.ebms.pkg.EbxmlMessage;
import hk.hku.cecid.ebms.spa.EbmsProcessor;
import hk.hku.cecid.ebms.spa.dao.MessageDAO;
import hk.hku.cecid.ebms.spa.dao.MessageDVO;
import hk.hku.cecid.ebms.spa.handler.MessageClassifier;
import hk.hku.cecid.ebms.spa.handler.OutboundMessageProcessor;
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");
}
OutboundMessageProcessor outProcessor = OutboundMessageProcessor.getInstance();
EbxmlMessage ebxmlMessage = outProcessor.resendAsNew(primalMessageId);
MessageDAO msgDAO = (MessageDAO) EbmsProcessor.core.dao.createDAO(MessageDAO.class);
hk.hku.cecid.ebms.spa.dao.MessageDVO msgDVO = (MessageDVO) msgDAO.createDVO();
msgDVO.setMessageId(ebxmlMessage.getMessageId());
msgDVO.setMessageBox(MessageClassifier.MESSAGE_BOX_OUTBOX);
dom = new PropertyTree();
dom.setProperty("/message_history", "");
if (msgDAO.findMessage(msgDVO)) {
setDisplayMessage(dom, msgDVO);
}
setSearchCriteria(dom);
} catch (Exception e) {
dom = new PropertyTree();
dom.setProperty("/error", "");
dom.setProperty("operation", "Resend as New");
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
dom.setProperty("exception_message", stringWriter.toString());
EbmsProcessor.core.log.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]/ref_to_message_id",
checkNullAndReturnEmpty(messageDVO
.getRefToMessageId()));
dom.setProperty("message[0]/message_type",
checkNullAndReturnEmpty(messageDVO.getMessageType()));
dom.setProperty("message[0]/cpa_id",
checkNullAndReturnEmpty(messageDVO.getCpaId()));
dom.setProperty("message[0]/service",
checkNullAndReturnEmpty(messageDVO.getService()));
dom.setProperty("message[0]/action",
checkNullAndReturnEmpty(messageDVO.getAction()));
dom.setProperty("message[0]/conv_id",
checkNullAndReturnEmpty(messageDVO.getConvId()));
dom.setProperty("message[0]/time_stamp", messageDVO
.getTimeStamp().toString());
dom.setProperty("message[0]/status",
checkNullAndReturnEmpty(messageDVO.getStatus()));
dom.setProperty("message[0]/status_description", String
.valueOf(checkNullAndReturnEmpty(messageDVO
.getStatusDescription())));
dom.setProperty("message[0]/from_party_id",
checkNullAndReturnEmpty(messageDVO.getFromPartyId()));
dom.setProperty("message[0]/to_party_id",
checkNullAndReturnEmpty(messageDVO.getToPartyId()));
}
private void setSearchCriteria(PropertyTree dom) {
dom.setProperty("search_criteria/message_id", "");
dom.setProperty("search_criteria/message_box", "");
dom.setProperty("search_criteria/cpa_id", "");
dom.setProperty("search_criteria/service", "");
dom.setProperty("search_criteria/action", "");
dom.setProperty("search_criteria/conv_id", "");
dom.setProperty("search_criteria/principal_id", "");
dom.setProperty("search_criteria/status", "");
dom.setProperty("search_criteria/num_of_messages", "");
dom.setProperty("search_criteria/offset", "0");
dom.setProperty("search_criteria/is_detail", "");
dom.setProperty("search_criteria/message_time","");
}
private String checkNullAndReturnEmpty(String value) {
if (value == null) {
return new String("");
}
return value;
}
}