//$Header: /cvsroot-fuse/mec-as2/39/mendelson/comm/as2/message/AS2MDNInfo.java,v 1.1 2012/04/18 14:10:30 heller Exp $
package de.mendelson.comm.as2.message;
import de.mendelson.comm.as2.AS2ServerVersion;
import java.io.Serializable;
import java.util.Date;
import java.util.Properties;
/*
* Copyright (C) mendelson-e-commerce GmbH Berlin Germany
*
* This software is subject to the license agreement set forth in the license.
* Please read and agree to all terms before using this software.
* Other product and brand names are trademarks of their respective owners.
*/
/**
* Stores all information about a as2 message
* @author S.Heller
* @version $Revision: 1.1 $
*/
public class AS2MDNInfo implements AS2Info {
private String messageId;
private String senderId;
private String receiverId;
/**Date of this message*/
private Date initDate = new Date();
private String relatedMessageId;
/**Stores the sender host for a message
*/
private String senderHost = null;
/**Raw data file*/
private String rawFilename = null;
/**Raw data header file*/
private String headerFilename = null;
/**Decrypted file*/
/**indicates if the message is signed. Before it has been analyzed it is not clear
*if the message/MDN contains a signature or not
*/
private int signType = AS2Message.SIGNATURE_UNKNOWN;
/**This is the product name submitted in the user agent header*/
private String useragent = null;
private int direction = AS2MessageInfo.DIRECTION_UNKNOWN;
/**Possible are
* AS2Message.STATE_STATE_FINISHED
*AS2Message.STATE_STATE_PENDING
*AS2Message.STATE_STATE_STOPPED
*/
private int state = AS2Message.STATE_PENDING;
/**Contains the mdn text of a remote partner, only available for inbound messages*/
private String remoteMDNText = null;
private String receivedContentMIC;
public AS2MDNInfo() {
this.useragent = AS2ServerVersion.getUserAgent();
}
/**Initializes the message info from the passed MDN/AS2 message request headers*/
public void initializeByRequestHeader(Properties requestHeader) {
if (requestHeader.containsKey("message-id")) {
this.setMessageId(requestHeader.getProperty("message-id"));
}
//MDN: server is in "server"
//AS2 msg: server is in "user-agent"
if (requestHeader.containsKey("server")) {
this.setUserAgent(requestHeader.getProperty("server"));
} else {
this.setUserAgent(requestHeader.getProperty("user-agent"));
}
if (requestHeader.containsKey("as2-from")) {
this.setSenderId(AS2MessageParser.unescapeFromToHeader(requestHeader.getProperty("as2-from")));
}
if (requestHeader.containsKey("as2-to")) {
this.setReceiverId(AS2MessageParser.unescapeFromToHeader(requestHeader.getProperty("as2-to")));
}
}
/**Returns the senderId, unescaped*/
@Override
public String getSenderId() {
return senderId;
}
/**sets the sender id, unescaped*/
@Override
public void setSenderId(String senderId) {
this.senderId = senderId;
}
/**sets the receiver id, unescaped*/
@Override
public String getReceiverId() {
return receiverId;
}
/**sets the sender id, unescaped*/
@Override
public void setReceiverId(String receiverId) {
this.receiverId = receiverId;
}
public Date getInitDate() {
return initDate;
}
public void setInitDate(Date messageDate) {
this.initDate = messageDate;
}
@Override
public String getRawFilename() {
return rawFilename;
}
@Override
public void setRawFilename(String rawFilename) {
this.rawFilename = rawFilename;
}
@Override
public int getDirection() {
return direction;
}
@Override
public void setDirection(int direction) {
this.direction = direction;
}
@Override
public int getState() {
return state;
}
@Override
public void setState(int state) {
this.state = state;
}
@Override
public int getSignType() {
return signType;
}
@Override
public void setSignType(int signType) {
this.signType = signType;
}
public String getRelatedMessageId() {
return relatedMessageId;
}
public void setRelatedMessageId(String relatedMessageId) {
if (relatedMessageId != null && relatedMessageId.startsWith("<") && relatedMessageId.endsWith(">")) {
relatedMessageId = relatedMessageId.substring(1, relatedMessageId.length() - 1);
}
this.relatedMessageId = relatedMessageId;
}
@Override
public String getHeaderFilename() {
return headerFilename;
}
@Override
public void setHeaderFilename(String headerFilename) {
this.headerFilename = headerFilename;
}
@Override
public String getSenderHost() {
return senderHost;
}
@Override
public void setSenderHost(String senderHost) {
this.senderHost = senderHost;
}
/**Returns the content of this object for debug purpose
*/
@Override
public String getDebugDisplay() {
StringBuilder buffer = new StringBuilder();
buffer.append("direction=\t\t").append(this.direction);
buffer.append("\n");
buffer.append("headerFilename=\t\t").append(this.headerFilename);
buffer.append("\n");
buffer.append("messageDate=\t\t").append(this.initDate);
buffer.append("\n");
buffer.append("messageId=\t\t").append(this.relatedMessageId);
buffer.append("\n");
buffer.append("rawFilename=\t\t").append(this.rawFilename);
buffer.append("receiverId=\t\t").append(this.receiverId);
buffer.append("\n");
buffer.append("relatedMessageId=\t\t").append(this.relatedMessageId);
buffer.append("senderHost=\t\t").append(this.senderHost);
buffer.append("\n");
buffer.append("senderId=\t\t").append(this.senderId);
buffer.append("\n");
buffer.append("signType=\t\t").append(this.signType);
buffer.append("\n");
buffer.append("state=\t\t").append(this.state);
return (buffer.toString());
}
@Override
public String getUserAgent() {
return useragent;
}
@Override
public void setUserAgent(String useragent) {
this.useragent = useragent;
}
/**
* @return the remoteMDNText
*/
public String getRemoteMDNText() {
if( this.remoteMDNText == null ){
return( "" );
}
return remoteMDNText;
}
/**
* @param remoteMDNText the remoteMDNText to set
*/
public void setRemoteMDNText(String remoteMDNText) {
this.remoteMDNText = remoteMDNText;
}
public String getReceivedContentMIC() {
return receivedContentMIC;
}
public void setReceivedContentMIC(String receivedContentMIC) {
this.receivedContentMIC = receivedContentMIC;
}
/**
* @return the messageId
*/
@Override
public String getMessageId() {
return messageId;
}
/**Removes braces if they exist
*/
@Override
public void setMessageId(String messageId) {
if (messageId != null && messageId.startsWith("<") && messageId.endsWith(">")) {
messageId = messageId.substring(1, messageId.length() - 1);
}
this.messageId = messageId;
}
@Override
public String getSubject(){
return( "Message Delivery Notification" );
}
@Override
public int getEncryptionType() {
return( AS2Message.ENCRYPTION_NONE);
}
@Override
public boolean isMDN() {
return( true );
}
}