/**
 * HTTPAttachment.java
 * Created May 3, 2006
 * Copyright (C) Tandberg Television 2006
 */
package com.tandbergtv.workflow.message;

import java.util.HashMap;
import java.util.Map;

/**
 * Represents an attachment of a particular content type in an HTTP message
 * 
 * @author Sahil Verma
 */
public class HTTPAttachment implements IMessageAttachment {

	private Object content;
	
	private Map<String, String> headers;
	
	private String contentType;
	
	/**
	 * Creates an HTTP attachment
	 */
	public HTTPAttachment() {
		this.headers = new HashMap<String, String>();
	}

	/**
	 * Creates a HTTPAttachment
	 * @param content
	 * @param contentType
	 */
	public HTTPAttachment(Object content, String contentType) {
		super();
		this.content = content;
		this.contentType = contentType;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageAttachment#getContent()
	 */
	public Object getContent() {
		return this.content;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageAttachment#setContent(java.lang.Object)
	 */
	public void setContent(Object content) {
		this.content = content;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageAttachment#addMimeHeader(java.lang.String, java.lang.String)
	 */
	public void addMimeHeader(String name, String value) {
		this.headers.put(name, value);
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageAttachment#getMimeHeaders()
	 */
	public Map<String, String> getMimeHeaders() {
		return this.headers;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageAttachment#getContentType()
	 */
	public String getContentType() {
		return this.contentType;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageAttachment#setContentType(java.lang.String)
	 */
	public void setContentType(String contentType) {
		this.contentType = contentType;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		/* Huh? */
		StringBuffer buf = new StringBuffer(); 
		
		int contentLength = this.content.toString().length();
		if (contentLength  > 300)
			contentLength  = 300;			
		
		buf.append("[ContentType = ").append(this.contentType).
			append("], Content=").append(this.content.toString().substring(0,contentLength)).append("]");
		return buf.toString();
	}
}
