File Source: TimerCommand.java

         /* 
    P/P   *  Method: com.dmdirc.addons.time.TimerCommand__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.addons.time;
    24  
    25  import com.dmdirc.commandparser.CommandArguments;
    26  import com.dmdirc.commandparser.CommandManager;
    27  import com.dmdirc.commandparser.commands.GlobalCommand;
    28  import com.dmdirc.commandparser.commands.IntelligentCommand;
    29  import com.dmdirc.ui.input.AdditionalTabTargets;
    30  import com.dmdirc.ui.input.TabCompleter;
    31  import com.dmdirc.ui.interfaces.InputWindow;
    32  import java.util.List;
    33  
    34  /**
    35   * The timer command allows users to schedule commands to occur after a certain
    36   * interval, or to repeatedly occur with a specified delay.
    37   * @author chris
    38   */
    39  public final class TimerCommand extends GlobalCommand implements IntelligentCommand {
    40      
    41      /**
    42       * Creates a new instance of TimerCommand.
    43       */
             /* 
    P/P       *  Method: void com.dmdirc.addons.time.TimerCommand()
              */
    44      public TimerCommand() {
    45          CommandManager.registerCommand(this);
    46      }
    47      
    48      /** {@inheritDoc} */
    49      @Override
    50      public void execute(final InputWindow origin, final boolean isSilent, 
    51              final CommandArguments args) {
                 /* 
    P/P           *  Method: void execute(InputWindow, bool, CommandArguments)
                  * 
                  *  Preconditions:
                  *    args != null
                  * 
                  *  Presumptions:
                  *    com.dmdirc.commandparser.CommandArguments:getArguments(...).length@60 >= 1
                  *    com.dmdirc.commandparser.CommandArguments:getArguments(...).length@61 >= 2
                  *    com.dmdirc.commandparser.CommandArguments:getArguments(...)@52 != null
                  *    com.dmdirc.commandparser.CommandArguments:getArguments(...)@60 != null
                  *    com.dmdirc.commandparser.CommandArguments:getArguments(...)@61 != null
                  * 
                  *  Test Vectors:
                  *    com.dmdirc.commandparser.CommandArguments:getArguments(...).length@52: {3..+Inf}, {0..2}
                  */
    52          if (args.getArguments().length < 3) {
    53              doUsage(origin, isSilent);
    54          } else {
    55              int repetitions = 0;
    56              int interval = 0;
    57              final String command = args.getArgumentsAsString(2);
    58              
    59              try {
    60                  repetitions = Integer.parseInt(args.getArguments()[0]);
    61                  interval = Integer.parseInt(args.getArguments()[1]);
    62              } catch (NumberFormatException ex) {
    63                  doUsage(origin, isSilent);
    64                  return;
    65              }
    66              
    67              new TimedCommand(repetitions, interval, command, origin);
    68              sendLine(origin, isSilent, FORMAT_OUTPUT, "Command scheduled.");
    69          }
    70      }
    71      
    72      /**
    73       * Displays usage information for this command.
    74       * @param origin The window that the command was entered in
    75       * @param isSilent Whether this command is being silenced or not
    76       */
    77      private void doUsage(final InputWindow origin, final boolean isSilent) {
                 /* 
    P/P           *  Method: void doUsage(InputWindow, bool)
                  */
    78          showUsage(origin, isSilent, "timer", "<repetitions> <interval> <command>");
    79      }
    80      
    81      /** {@inheritDoc} */
    82      @Override
    83      public String getName() {
                 /* 
    P/P           *  Method: String getName()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"timer"
                  */
    84          return "timer";
    85      }
    86      
    87      /** {@inheritDoc} */
    88      @Override
    89      public boolean showInHelp() {
                 /* 
    P/P           *  Method: bool showInHelp()
                  * 
                  *  Postconditions:
                  *    return_value == 1
                  */
    90          return true;
    91      }
    92      
    93      /** {@inheritDoc} */
    94      @Override
    95      public String getHelp() {
                 /* 
    P/P           *  Method: String getHelp()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"timer <repetitions> <interval> <command> - schedules a command to be executed after a certain time"
                  */
    96          return "timer <repetitions> <interval> <command> " +
    97                  "- schedules a command to be executed after a certain time";
    98      }
    99  
   100      /** {@inheritDoc} */
   101      @Override
   102      public AdditionalTabTargets getSuggestions(final int arg, final List<String> previousArgs) {
   103          AdditionalTabTargets res;
   104          
                 /* 
    P/P           *  Method: AdditionalTabTargets getSuggestions(int, List)
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  * 
                  *  Test Vectors:
                  *    arg: {2..232-1}, {-231..1}
                  */
   105          if (arg <= 1) {
   106              res = new AdditionalTabTargets().excludeAll();
   107          } else {
   108              res = TabCompleter.getIntelligentResults(arg, previousArgs, 2);
   109          }
   110          
   111          return res;
   112      } 
   113      
   114  }








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