File Source: Message.java

         /* 
    P/P   *  Method: com.dmdirc.commandparser.commands.server.Message__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.server;
    24  
    25  import com.dmdirc.Server;
    26  import com.dmdirc.commandparser.CommandArguments;
    27  import com.dmdirc.commandparser.CommandManager;
    28  import com.dmdirc.commandparser.commands.CommandOptions;
    29  import com.dmdirc.commandparser.commands.IntelligentCommand;
    30  import com.dmdirc.commandparser.commands.ServerCommand;
    31  import com.dmdirc.commandparser.commands.WrappableCommand;
    32  import com.dmdirc.ui.input.AdditionalTabTargets;
    33  import com.dmdirc.ui.input.TabCompletionType;
    34  import com.dmdirc.ui.interfaces.InputWindow;
    35  
    36  import java.util.List;
    37  
    38  /**
    39   * Allows the user to send privmsgs.
    40   * @author chris
    41   */
    42  @CommandOptions(allowOffline=false)
    43  public final class Message extends ServerCommand implements IntelligentCommand,
    44          WrappableCommand {
    45      
    46      /**
    47       * Creates a new instance of Message.
    48       */
    49      public Message() {
                 /* 
    P/P           *  Method: void com.dmdirc.commandparser.commands.server.Message()
                  * 
                  *  Preconditions:
                  *    init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
                  */
    50          super();
    51          
    52          CommandManager.registerCommand(this);
    53      }
    54      
    55      /** {@inheritDoc} */
    56      @Override
    57      public void execute(final InputWindow origin, final Server server,
    58              final boolean isSilent, final CommandArguments args) {
                 /* 
    P/P           *  Method: void execute(InputWindow, Server, bool, CommandArguments)
                  * 
                  *  Preconditions:
                  *    args != null
                  *    init'ed(args.words)
                  *    (soft) args.line != null
                  *    (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
                  *    (soft) server != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.Server:getParser(...)@62 != null
                  *    getArguments(...).length@62 >= 1
                  *    getArguments(...).length@64 >= 1
                  *    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@59: {2..+Inf}, {0,1}
                  */
    59          if (args.getArguments().length < 2) {
    60              showUsage(origin, isSilent, "msg", "<target> <message>");
    61          } else {
    62              server.getParser().sendLine("PRIVMSG " + args.getArguments()[0] + " :"
    63                      + args.getArgumentsAsString(1));
    64              sendLine(origin, isSilent, "selfMessage", args.getArguments()[0],
    65                      args.getArgumentsAsString(1));
    66          }
    67      }
    68      
    69      
    70      /** {@inheritDoc} */
    71      @Override
    72      public String getName() {
                 /* 
    P/P           *  Method: String getName()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"msg"
                  */
    73          return "msg";
    74      }
    75      
    76      /** {@inheritDoc} */
    77      @Override
    78      public boolean showInHelp() {
                 /* 
    P/P           *  Method: bool showInHelp()
                  * 
                  *  Postconditions:
                  *    return_value == 1
                  */
    79          return true;
    80      }
    81      
    82      /** {@inheritDoc} */
    83      @Override
    84      public String getHelp() {
                 /* 
    P/P           *  Method: String getHelp()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"msg <target> <message> - sends a private message"
                  */
    85          return "msg <target> <message> - sends a private message";
    86      }
    87  
    88      /** {@inheritDoc} */
    89      @Override
    90      public AdditionalTabTargets getSuggestions(final int arg, final List<String> previousArgs) {
                 /* 
    P/P           *  Method: AdditionalTabTargets getSuggestions(int, List)
                  * 
                  *  Presumptions:
                  *    init'ed(com.dmdirc.ui.input.TabCompletionType.CHANNEL)
                  *    init'ed(com.dmdirc.ui.input.TabCompletionType.CHANNEL_NICK)
                  *    init'ed(com.dmdirc.ui.input.TabCompletionType.QUERY_NICK)
                  * 
                  *  Postconditions:
                  *    return_value == &amp;new AdditionalTabTargets(getSuggestions#1)
                  *    new AdditionalTabTargets(getSuggestions#1) num objects == 1
                  * 
                  *  Test Vectors:
                  *    arg: {-231..-1, 1..232-1}, {0}
                  */
    91          final AdditionalTabTargets res = new AdditionalTabTargets();
    92          
    93          if (arg == 0) {
    94              res.excludeAll();
    95              res.include(TabCompletionType.CHANNEL_NICK);
    96              res.include(TabCompletionType.CHANNEL);
    97              res.include(TabCompletionType.QUERY_NICK);
    98          }
    99          
   100          return res;
   101      }
   102  
   103      /** {@inheritDoc} */
   104      @Override
   105      public int getLineCount(final InputWindow origin, final CommandArguments arguments) {
                 /* 
    P/P           *  Method: int getLineCount(InputWindow, CommandArguments)
                  * 
                  *  Preconditions:
                  *    arguments != null
                  *    init'ed(arguments.words)
                  *    (soft) arguments.line != null
                  *    (soft) origin != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.WritableFrameContainer:getServer(...)@108 != null
                  *    com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@108 != null
                  *    getArguments(...).length@107 >= 1
                  *    java.util.Arrays:copyOfRange(...)@99 != null
                  * 
                  *  Postconditions:
                  *    arguments.words != null
                  *    init'ed(java.lang.String:split(...)._tainted)
                  *    java.lang.String:split(...)._tainted == 0
                  *    init'ed(java.lang.String:split(...).length)
                  *    init'ed(return_value)
                  * 
                  *  Test Vectors:
                  *    getArguments(...).length@106: {0,1}, {2..+Inf}
                  */
   106          if (arguments.getArguments().length >= 2) {
   107              final String target = arguments.getArguments()[0];
   108              return origin.getContainer().getServer().getNumLines("PRIVMSG "
   109                      + target + " :" + arguments.getArgumentsAsString(1));
   110          } else {
   111              return 1;
   112          }
   113      }
   114      
   115  }








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