File Source: LoadPlugin.java

         /* 
    P/P   *  Method: com.dmdirc.commandparser.commands.global.LoadPlugin__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.global;
    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.plugins.PluginInfo;
    30  import com.dmdirc.plugins.PluginManager;
    31  import com.dmdirc.ui.input.AdditionalTabTargets;
    32  import com.dmdirc.ui.interfaces.InputWindow;
    33  
    34  import java.util.List;
    35  
    36  /**
    37   * Allows the user to load a plugin.
    38   * @author chris
    39   */
    40  public final class LoadPlugin extends GlobalCommand implements IntelligentCommand {
    41  
    42      /**
    43       * Creates a new instance of LoadPlugin.
    44       */
    45      public LoadPlugin() {
                 /* 
    P/P           *  Method: void com.dmdirc.commandparser.commands.global.LoadPlugin()
                  * 
                  *  Preconditions:
                  *    init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
                  */
    46          super();
    47  
    48          CommandManager.registerCommand(this);
    49      }
    50  
    51      /** {@inheritDoc} */
    52      @Override
    53      public void execute(final InputWindow origin, final boolean isSilent,
    54              final CommandArguments args) {
                 /* 
    P/P           *  Method: void execute(InputWindow, bool, CommandArguments)
                  * 
                  *  Preconditions:
                  *    args != null
                  *    init'ed(args.words)
                  *    (soft) args.line != null
                  *    (soft) init'ed(com/dmdirc/commandparser/CommandManager.commandChar)
                  * 
                  *  Presumptions:
                  *    com.dmdirc.plugins.PluginManager:getPluginManager(...)@61 != null
                  *    com.dmdirc.plugins.PluginManager:getPluginManager(...)@62 != null
                  *    com.dmdirc.plugins.PluginManager:getPluginManager(...)@73 != null
                  *    getArguments(...).length@61 >= 1
                  *    getArguments(...).length@62 >= 1
                  *    ...
                  * 
                  *  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:
                  *    com.dmdirc.plugins.PluginInfo:isLoaded(...)@67: {0}, {1}
                  *    com.dmdirc.plugins.PluginInfo:isLoaded(...)@71: {0}, {1}
                  *    com.dmdirc.plugins.PluginManager:getPluginInfo(...)@62: Inverse{null}, Addr_Set{null}
                  *    getArguments(...).length@55: {1..+Inf}, {0}
                  */
    55          if (args.getArguments().length == 0) {
    56              showUsage(origin, isSilent, "loadplugin", "<plugin>");
    57              return;
    58          }
    59  
    60          // Add previously unknown plugin to plugin manager
    61          PluginManager.getPluginManager().addPlugin(args.getArguments()[0]);
    62          final PluginInfo plugin = PluginManager.getPluginManager()
    63                  .getPluginInfo(args.getArguments()[0]);
    64          
    65          if (plugin == null) {
    66              sendLine(origin, isSilent, FORMAT_ERROR, "Plugin loading failed");
    67          } else if (plugin.isLoaded()) {
    68              sendLine(origin, isSilent, FORMAT_OUTPUT, "Plugin already loaded.");
    69          } else {
    70              plugin.loadPlugin();
    71              if (plugin.isLoaded()) {
    72                  sendLine(origin, isSilent, FORMAT_OUTPUT, "Plugin loaded.");
    73                  PluginManager.getPluginManager().updateAutoLoad(plugin);
    74              } else {
    75                  sendLine(origin, isSilent, FORMAT_OUTPUT, "Loading plugin failed. ("
    76                          + plugin.getLastError() + ")");
    77              }
    78          }
    79      }
    80  
    81  
    82      /** {@inheritDoc} */
    83      @Override
    84      public String getName() {
                 /* 
    P/P           *  Method: String getName()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"loadplugin"
                  */
    85          return "loadplugin";
    86      }
    87  
    88      /** {@inheritDoc} */
    89      @Override
    90      public boolean showInHelp() {
                 /* 
    P/P           *  Method: bool showInHelp()
                  * 
                  *  Postconditions:
                  *    return_value == 1
                  */
    91          return true;
    92      }
    93  
    94      /** {@inheritDoc} */
    95      @Override
    96      public String getHelp() {
                 /* 
    P/P           *  Method: String getHelp()
                  * 
                  *  Postconditions:
                  *    return_value == &amp;"loadplugin <plugin> - loads the specified class as a plugin"
                  */
    97          return "loadplugin <plugin> - loads the specified class as a plugin";
    98      }
    99  
   100      /** {@inheritDoc} */
   101      @Override
   102      public AdditionalTabTargets getSuggestions(final int arg, final List<String> previousArgs) {
                 /* 
    P/P           *  Method: AdditionalTabTargets getSuggestions(int, List)
                  * 
                  *  Presumptions:
                  *    com.dmdirc.plugins.PluginManager:getPluginManager(...)@109 != null
                  *    com.dmdirc.plugins.PluginManager:getPossiblePluginInfos(...)@109 != null
                  *    java.util.Iterator:next(...)@109 != null
                  * 
                  *  Postconditions:
                  *    return_value == &amp;new AdditionalTabTargets(getSuggestions#1)
                  *    new AdditionalTabTargets(getSuggestions#1) num objects == 1
                  * 
                  *  Test Vectors:
                  *    arg: {-231..-1, 1..232-1}, {0}
                  *    java.util.Iterator:hasNext(...)@109: {0}, {1}
                  */
   103          final AdditionalTabTargets res = new AdditionalTabTargets();
   104  
   105          res.excludeAll();
   106  
   107          if (arg == 0) {
   108              for (PluginInfo possPlugin
   109                      : PluginManager.getPluginManager().getPossiblePluginInfos(false)) {
   110                  res.add(possPlugin.getRelativeFilename());
   111              }
   112          }
   113  
   114          return res;
   115      }
   116  
   117  }








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