diff options
Diffstat (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java')
-rw-r--r-- | EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java b/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java new file mode 100644 index 000000000..2dd89e1cd --- /dev/null +++ b/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java @@ -0,0 +1,78 @@ +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; + +/** + * ChannelCreationReply sets the creation time of the channel. It is sent + * automatically on a MODE discovery request. + */ +public class ChannelCreationReply extends GenericReply +{ + private String channelName; + private Date date; + + /** For use as a factory. */ + public ChannelCreationReply() + { + } + + public ChannelCreationReply( String channelName, Date date ) + { + this.channelName = channelName; + this.date = date; + } + + public String getIrcIdentifier() + { + return "329"; + } + + /** + * This is a factory that passes the command off to a + * ChannelModeCommand. + */ + 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 date. + Date date; + try + { + date = new Date( Long.parseLong( tokens.nextToken() ) * 1000 ); + } + catch( NumberFormatException nfe ) + { + // riiiight... + date = new Date(0); + } + + return new ChannelCreationReply( chan, date ); + } + + /** + * This should, theoretically, never be called, because this command is + * only ever used as a factory. + */ + public boolean updateClientState( ClientState state ) + { + Channel channel = state.getChannel( channelName ); + channel.setCreationDate( date ); + return true; + } +} + + + + |