/**
 * MessageUIDImpl.java
 * Created Apr 26, 2006
 * Copyright (C) Tandberg Television 2006
 */
package com.tandbergtv.workflow.message;

/**
 * Default implementation of a unique message identifier
 * @author Sahil Verma
 */
public class MessageUIDImpl implements IMessageUID {

	private static final String WFS_UID_CODE = "01";

	private String uid;
	
	private String name;
	
	/**
	 * Creates a MessageUIDImpl
	 */
	protected MessageUIDImpl() {
		super();
	}
	
	/**
	 * Creates a MessageUIDImpl using the specified uid
	 * @param uid
	 */
	public MessageUIDImpl(String uid) {
		this(uid, null);
	}

	/**
	 * @param uid
	 * @param name
	 */
	public MessageUIDImpl(String uid, String name) {
		this.uid = uid;
		this.name = name;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageUID#getUID()
	 */
	public String getUID() {
		return this.uid;
	}

	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageUID#getName()
	 */
	public String getName() {
		return this.name;
	}
	
	/* (non-Javadoc)
	 * @see com.tandbergtv.workflow.message.IMessageUID#setName(java.lang.String)
	 */
	public void setName(String name) {
		this.name = name;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (obj instanceof IMessageUID) {
			IMessageUID other = (IMessageUID)obj;
			String uid = other.getUID();
			return this.uid != null && this.uid.equals(uid);
		}
		
		return false;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return this.uid.hashCode();
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return this.uid;
	}

	public boolean isMessageOutgoing() {
		if(this.uid.subSequence(2,4).equals(WFS_UID_CODE))
			return false;
		return true;
	}
}
