File Source: ShowTopic.java

         /* 
    P/P   *  Method: com.dmdirc.commandparser.commands.channel.ShowTopic__static_init
          */
     1  /*
     2   * Copyright (c) 2006-2009 Chris Smith, Shane Mc Cormack, Gregory Holmes
     3   *
     4   * Permission is hereby granted, free of charge, to any person obtaining a copy
     5   * of this software and associated documentation files (the "Software"), to deal
     6   * in the Software without restriction, including without limitation the rights
     7   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     8   * copies of the Software, and to permit persons to whom the Software is
     9   * furnished to do so, subject to the following conditions:
    10   *
    11   * The above copyright notice and this permission notice shall be included in
    12   * all copies or substantial portions of the Software.
    13   *
    14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    20   * SOFTWARE.
    21   */
    22  
    23  package com.dmdirc.commandparser.commands.channel;
    24  
    25  import com.dmdirc.Channel;
    26  import com.dmdirc.Server;
    27  import com.dmdirc.commandparser.CommandArguments;
    28  import com.dmdirc.commandparser.commands.ChannelCommand;
    29  import com.dmdirc.commandparser.CommandManager;
    30  import com.dmdirc.commandparser.commands.ExternalCommand;
    31  import com.dmdirc.parser.irc.ChannelInfo;
    32  import com.dmdirc.parser.irc.ClientInfo;
    33  import com.dmdirc.ui.interfaces.InputWindow;
    34  
    35  /**
    36   * The show topic command shows the user the current topic.
    37   * @author chris
    38   */
    39  public final class ShowTopic extends ChannelCommand implements ExternalCommand {
    40  
    41      /** Creates a new instance of ShowTopic. */
    42      public ShowTopic() {
                 /* 
    P/P           *  Method: void com.dmdirc.commandparser.commands.channel.ShowTopic()
                  * 
                  *  Preconditions:
                  *    init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
                  */
    43          super();
    44  
    45          CommandManager.registerCommand(this);
    46      }
    47  
    48      /** {@inheritDoc} */
    49      @Override
    50      public void execute(final InputWindow origin, final Server server,
    51              final Channel channel, final boolean isSilent, final CommandArguments args) {
                 /* 
    P/P           *  Method: void execute(InputWindow, Server, Channel, bool, CommandArguments)
                  * 
                  *  Preconditions:
                  *    args != null
                  *    channel != null
                  *    init'ed(args.words)
                  *    (soft) args.line != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.Channel:getChannelInfo(...)@53 != null
                  *    com.dmdirc.parser.irc.ChannelInfo:getTopic(...)@55 != null
                  *    com.dmdirc.parser.irc.ChannelInfo:getTopicTime(...)@60 in {-9_223_372_036_854_775..18_446_744_073_709_551}
                  *    com.dmdirc.parser.irc.ClientInfo:parseHostFull(...)@58 != null
                  *    java.util.Arrays:copyOfRange(...)@99 != null
                  *    ...
                  * 
                  *  Postconditions:
                  *    args.words != null
                  *    init'ed(java.lang.String:split(...)._tainted)
                  *    java.lang.String:split(...)._tainted == 0
                  *    init'ed(java.lang.String:split(...).length)
                  * 
                  *  Test Vectors:
                  *    getArguments(...).length@52: {1..+Inf}, {0}
                  *    java.lang.String:isEmpty(...)@55: {0}, {1}
                  */
    52          if (args.getArguments().length == 0) {
    53              final ChannelInfo cChannel = channel.getChannelInfo();
    54  
    55              if (cChannel.getTopic().isEmpty()) {
    56                  sendLine(origin, isSilent, "channelNoTopic", cChannel);
    57              } else {
    58                  final String[] parts = ClientInfo.parseHostFull(cChannel.getTopicUser());
    59  
    60                  sendLine(origin, isSilent, "channelTopicDiscovered",
    61                          "", parts[0], parts[1], parts[2], cChannel.getTopic(),
    62                          1000 * cChannel.getTopicTime(), cChannel);
    63              }
    64          } else {
    65              channel.setTopic(args.getArgumentsAsString());
    66          }
    67      }
    68  
    69      /** {@inheritDoc} */
    70      @Override
    71      public void execute(final InputWindow origin, final Server server,
    72              final String channel, final boolean isSilent, final CommandArguments args) {
                 /* 
    P/P           *  Method: void execute(InputWindow, Server, String, bool, CommandArguments)
                  * 
                  *  Preconditions:
                  *    args != null
                  *    init'ed(args.words)
                  *    server != null
                  *    (soft) args.line != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.Server:getParser(...)@74 != null
                  *    com.dmdirc.Server:getParser(...)@76 != null
                  *    java.util.Arrays:copyOfRange(...)@99 != null
                  * 
                  *  Postconditions:
                  *    args.words != null
                  *    init'ed(java.lang.String:split(...)._tainted)
                  *    java.lang.String:split(...)._tainted == 0
                  *    init'ed(java.lang.String:split(...).length)
                  * 
                  *  Test Vectors:
                  *    getArguments(...).length@73: {1..+Inf}, {0}
                  */
    73          if (args.getArguments().length == 0) {
    74              server.getParser().sendLine("TOPIC " + channel);
    75          } else {
    76              server.getParser().sendLine("TOPIC " + channel + " :" + args.getArgumentsAsString());
    77          }
    78      }
    79  
    80      /** {@inheritDoc} */
    81      @Override
    82      public String getName() {
                 /* 
    P/P           *  Method: String getName()
                  * 
                  *  Postconditions:
                  *    return_value == &"topic"
                  */
    83          return "topic";
    84      }
    85  
    86      /** {@inheritDoc} */
    87      @Override
    88      public boolean showInHelp() {
                 /* 
    P/P           *  Method: bool showInHelp()
                  * 
                  *  Postconditions:
                  *    return_value == 1
                  */
    89          return true;
    90      }
    91  
    92      /** {@inheritDoc} */
    93      @Override
    94      public String getHelp() {
                 /* 
    P/P           *  Method: String getHelp()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"topic - displays the current topic&amp;#10;topic <newtopic> - sets the channel topic"
                  */
    95          return "topic - displays the current topic\ntopic <newtopic> - sets the channel topic";
    96      }
    97  
    98  }








SofCheck Inspector Build Version : 2.17854
ShowTopic.java 2009-Jun-25 01:54:24
ShowTopic.class 2009-Sep-02 17:04:16