package com.esri.geoevent.solutions.transport.irc.jerklib.events.impl;
import java.util.Date;
import com.esri.geoevent.solutions.transport.irc.jerklib.Channel;
import com.esri.geoevent.solutions.transport.irc.jerklib.Session;
import com.esri.geoevent.solutions.transport.irc.jerklib.events.TopicEvent;
/**
* @author mohadib
* @see TopicEvent
*
*/
public class TopicEventImpl implements TopicEvent
{
private String setBy, data, hostname;
private Date setWhen;
private Session session;
private Channel channel;
private StringBuffer buff = new StringBuffer();
public TopicEventImpl(String rawEventData, Session session, Channel channel, String topic)
{
this.data = rawEventData;
this.session = session;
this.channel = channel;
buff.append(topic);
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.TopicEvent#getTopic()
*/
public String getTopic()
{
return buff.toString();
}
/**
* @return hostname
*/
public String getHostName()
{
return hostname;
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.IRCEvent#getRawEventData()
*/
public String getRawEventData()
{
return data;
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.IRCEvent#getSession()
*/
public Session getSession()
{
return session;
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.IRCEvent#getType()
*/
public Type getType()
{
return Type.TOPIC;
}
/**
* @param setWhen
*/
public void setSetWhen(String setWhen)
{
this.setWhen = new Date(1000L * Long.parseLong(setWhen));
}
/**
* @param setBy
*/
public void setSetBy(String setBy)
{
this.setBy = setBy;
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.TopicEvent#getSetBy()
*/
public String getSetBy()
{
return setBy;
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.TopicEvent#getSetWhen()
*/
public Date getSetWhen()
{
return setWhen;
}
/* (non-Javadoc)
* @see com.esri.ges.transport.Irc.jerklib.events.TopicEvent#getChannel()
*/
public Channel getChannel()
{
return channel;
}
/**
* @param topic
*/
public void appendToTopic(String topic)
{
buff.append(topic);
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
public int hashCode()
{
return channel.hashCode();
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object o)
{
if (o == this) { return true; }
if (o instanceof TopicEventImpl && o.hashCode() == hashCode()) { return ((TopicEvent) o).getChannel().equals(getChannel()); }
return false;
}
}