File Source: Me.java
/*
P/P * Method: com.dmdirc.commandparser.commands.chat.Me__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.chat;
24
25 import com.dmdirc.MessageTarget;
26 import com.dmdirc.Server;
27 import com.dmdirc.commandparser.CommandArguments;
28 import com.dmdirc.commandparser.commands.ChatCommand;
29 import com.dmdirc.commandparser.CommandManager;
30 import com.dmdirc.commandparser.commands.ValidatingCommand;
31 import com.dmdirc.config.prefs.validator.ValidationResponse;
32 import com.dmdirc.ui.interfaces.InputWindow;
33
34 import java.util.List;
35
36 /**
37 * The me command sends a CTCP action to the current channel.
38 * @author chris
39 */
40 public final class Me extends ChatCommand implements ValidatingCommand {
41
42 /** Creates a new instance of Me. */
43 public Me() {
/*
P/P * Method: void com.dmdirc.commandparser.commands.chat.Me()
*
* Preconditions:
* init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
*/
44 super();
45
46 CommandManager.registerCommand(this);
47 }
48
49 /** {@inheritDoc} */
50 @Override
51 public void execute(final InputWindow origin, final Server server,
52 final MessageTarget target, final boolean isSilent, final CommandArguments args) {
/*
P/P * Method: void execute(InputWindow, Server, MessageTarget, bool, CommandArguments)
*
* Preconditions:
* args != null
* init'ed(args.words)
* (soft) args.line != null
* (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
* (soft) target != null
*
* Presumptions:
* 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@53: {1..+Inf}, {0}
*/
53 if (args.getArguments().length == 0) {
54 showUsage(origin, isSilent, "me", "<action>");
55 } else {
56 target.sendAction(args.getArgumentsAsString());
57 }
58 }
59
60 /** {@inheritDoc} */
61 @Override
62 public String getName() {
/*
P/P * Method: String getName()
*
* Postconditions:
* return_value == &"me"
*/
63 return "me";
64 }
65
66 /** {@inheritDoc} */
67 @Override
68 public boolean showInHelp() {
/*
P/P * Method: bool showInHelp()
*
* Postconditions:
* return_value == 1
*/
69 return true;
70 }
71
72 /** {@inheritDoc} */
73 @Override
74 public String getHelp() {
/*
P/P * Method: String getHelp()
*
* Postconditions:
* return_value == &"me <action> - sends the specified action"
*/
75 return "me <action> - sends the specified action";
76 }
77
78 /** {@inheritDoc} */
79 @Override
80 public ValidationResponse validateArguments(final InputWindow origin,
81 final CommandArguments arguments) {
/*
P/P * Method: ValidationResponse validateArguments(InputWindow, CommandArguments)
*
* Preconditions:
* origin != null
* (soft) arguments != null
* (soft) arguments.line != null
* (soft) init'ed(arguments.words)
*
* Presumptions:
* com.dmdirc.Server:getParser(...)@89 != null
* com.dmdirc.WritableFrameContainer:getServer(...)@82 != null
* com.dmdirc.WritableFrameContainer:getServer(...)@89 != null
* com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@82 != null
* com.dmdirc.ui.interfaces.InputWindow:getContainer(...)@89 != null
* ...
*
* Postconditions:
* init'ed(arguments.words)
* init'ed(java.lang.String:split(...)._tainted)
* java.lang.String:split(...)._tainted == 0
* possibly_updated(java.lang.String:split(...).length)
* return_value in Addr_Set{&new ValidationResponse(validateArguments#3),&new ValidationResponse(validateArguments#2),&new ValidationResponse(validateArguments#1)}
* new ValidationResponse(validateArguments#1) num objects <= 1
* new ValidationResponse(validateArguments#1).failure == null
* new ValidationResponse(validateArguments#2) num objects <= 1
* new ValidationResponse(validateArguments#2).failure == &"Too long"
* new ValidationResponse(validateArguments#3) num objects <= 1
* ...
*
* Test Vectors:
* com.dmdirc.Server:getParser(...)@82: Inverse{null}, Addr_Set{null}
* com.dmdirc.WritableFrameContainer:getServer(...)@82: Addr_Set{null}, Inverse{null}
*/
82 if (origin.getContainer().getServer() == null
83 || origin.getContainer().getServer().getParser() == null) {
84 return new ValidationResponse();
85 }
86
87 final int length = 2 + arguments.getArgumentsAsString().length();
88
89 if (origin.getContainer().getServer().getParser().getMaxLength("PRIVMSG",
90 origin.getContainer().toString()) <= length) {
91 return new ValidationResponse("Too long");
92 } else {
93 return new ValidationResponse();
94 }
95 }
96
97 }
SofCheck Inspector Build Version : 2.17854
| Me.java |
2009-Jun-25 01:54:24 |
| Me.class |
2009-Sep-02 17:04:16 |