diff options
Diffstat (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/replies/TopicInfoReply.java')
-rw-r--r-- | EssentialsUpdate/src/f00f/net/irc/martyr/replies/TopicInfoReply.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/replies/TopicInfoReply.java b/EssentialsUpdate/src/f00f/net/irc/martyr/replies/TopicInfoReply.java new file mode 100644 index 000000000..311e17dc8 --- /dev/null +++ b/EssentialsUpdate/src/f00f/net/irc/martyr/replies/TopicInfoReply.java @@ -0,0 +1,80 @@ +package f00f.net.irc.martyr.replies; + +import java.util.Date; +import java.util.StringTokenizer; + +import f00f.net.irc.martyr.InCommand; +import f00f.net.irc.martyr.clientstate.Channel; +import f00f.net.irc.martyr.clientstate.ClientState; + +/** + * Contains info about the topic, who set it and when. + */ +public class TopicInfoReply extends GenericReply +{ + private String channelName; + private Date date; + private String author; + + /** For use as a factory. */ + public TopicInfoReply() + { + } + + public TopicInfoReply( String channelName, Date date, String author ) + { + this.channelName = channelName; + this.date = date; + this.author = author; + } + + public String getIrcIdentifier() + { + return "333"; + } + + public String getChannel() + { + return this.channelName; + } + + public InCommand parse( String prefix, String identifier, String params ) + { + StringTokenizer tokens = new StringTokenizer( params ); + + // Our nick. We don't need that, I think. + tokens.nextToken(); + + // The channel. + String chan = tokens.nextToken(); + + // The author + String author = tokens.nextToken(); + + // The date. + Date date; + try + { + date = new Date( Long.parseLong( tokens.nextToken() ) * 1000 ); + } + catch( NumberFormatException nfe ) + { + // riiiight... + date = new Date(0); + } + + return new TopicInfoReply( chan, date, author ); + } + + public boolean updateClientState( ClientState state ) + { + Channel channel = state.getChannel( channelName ); + channel.setTopicDate( date ); + channel.setTopicAuthor( author ); + return true; + } +} + + + + |