一个对等计算发生器

源代码在线查看: command.java

软件大小: 456 K
上传用户: stzwsy
关键词: 计算 发生器
下载地址: 免注册下载 普通下载 VIP

相关代码

				/***************************************************************************
				 *                                                                         *
				 *                               Command.java                              *
				 *                            -------------------                          *
				 *   date                 : 16. Mai 2003, 18:30                            *
				 *   copyright            : (C) 2004 Distributed and Mobile Systems Group  *
				 *                              Lehrstuhl fuer Praktische Informatik       *
				 *                              Universitaet Bamberg                       *
				 *                              http://www.lspi.wiai.uni-bamberg.de/       *
				 *   email                : sven.kaffille@wiai.uni-bamberg.de              *
				 *                                                                         *
				 *                                                                         *
				 ***************************************************************************/
				
				/***************************************************************************
				 *                                                                         *
				 *   This program is free software; you can redistribute it and/or modify  *
				 *   it under the terms of the GNU General Public License as published by  *
				 *   the Free Software Foundation; either version 2 of the License, or     *
				 *   (at your option) any later version.                                   *
				 *                                                                         *
				 *   A copy of the license can be found in the license.txt file supplied   *
				 *   with this software or at: http://www.gnu.org/copyleft/gpl.html        *
				 *                                                                         *
				 ***************************************************************************/
				
				package de.uniba.wiai.lspi.util.console;
				
				import java.util.*;
				import java.io.PrintStream;
				
				/**
				 * @author   sven
				 * @version 1.0.1
				 */
				public abstract class Command {
				    
				    /** 
				     * The instances to execute the commands on. 
				     */    
				    protected Object[] toCommand;
				    
				    /**
					 * The parameters passed to this command are contained within this Hashtable.
					 * @uml.property   name="parameters"
					 * @uml.associationEnd   qualifier="key:java.lang.Object java.lang.String"
					 */    
				    protected Map parameters;
				    
				    /** 
				     * Standard argument for displaying help of this command. 
				     * If supplied all other parameters are ignored. 
				     */    
				    protected final String HELP_ARG1 = "help";
				    
				    /** 
				     * Alternative standard argument for displaying help of this command. 
				     * If supplied all other parameters are ignored. 
				     */    
				    protected final String HELP_ARG2 = "h";
				    
				    /** 
				     * The PrintStream to print the command's output to. 
				     */
				    protected PrintStream out;
				    
				    /** 
				     * Creates a new instance of Command.
				     * @param out The java.io.PrintStream to that the command's output is printed.
				     * @param toCommand The instance to execute the command on.
				     */
				    public Command(Object[] toCommand, PrintStream out) {
				        this.toCommand = toCommand;
				        this.out = out;
				        this.parameters = new HashMap();
				    }
				    
				    /**
				     * Set the PrintStream, to that this command prints its output.
				     * @param out 
				     *
				     * @out The PrintStream. 
				     */
				    public void setPrintStream(PrintStream out){
				        this.out = out; 
				    }
				    
				    /** 
				     * Add a command line parameter.
				     * @param paramName The parameters name. Cannot contain spaces.
				     * @param paramValue The parameters value. Cannot contain spaces.
				     */    
				    public final void addParameter(String paramName, String paramValue){
				        this.parameters.put(paramName, paramValue);
				    }
				    
				    /** 
				     * Executes the command.
				     * @throws ConsoleException Exception during execution of command.
				     */    
				    public final void execute() throws ConsoleException{
				        if ( this.parameters.containsKey(this.HELP_ARG1) || this.parameters.containsKey(this.HELP_ARG2) ) {
				            printOutHelp();
				        }
				        else {
				            exec();
				        }
				    }
				    
				    /** 
				     * To be overwritten by subclasses for command execution. The work of a 
				     * command implementation is done in this method.
				     * @throws ConsoleException Exception during execution.
				     */    
				    public abstract void exec() throws ConsoleException;
				    
				    /** 
				     * To be overwritten. Display the help text of the Command. 
				     */    
				    public abstract void printOutHelp();
				    
				    /** Return the name of the command. Must not contain spaces.
				     * To be overwritten by subclasses.
				     * @return The commands name. For example: exit.
				     */    
				    public abstract String getCommandName();
				    
				    /**
					 * Set the parameters for the Command.
					 * @param parameters   Hashtable containing the parameter names as keys and the parameter values as values. Both represented as Strings.  Both must not contain spaces.
					 * @uml.property   name="parameters"
					 */    
				    public void setParameters(Map parameters) {
				        this.parameters = parameters;
				    }
				    
				}
							

相关资源