⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 executemacro.java

📁 一个对等计算发生器
💻 JAVA
字号:
/***************************************************************************
 *                                                                         *
 *                             ExecuteMacro.java                           *
 *                            -------------------                          *
 *   date                 : 10. September 2004, 12:29                      *
 *   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.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;

/**
 * This is an implementation of {@link Command} that allows the execution of
 * commands stored in a <code>.txt</code> file. Every line of the file must be
 * a valid command for the console, from that this command is executed. The file
 * must not contain empty lines.
 * 
 * The file is provided with help of the <code>file</code> parameter. To make
 * sure the file is found the complete path has to be provided. On Windows
 * systems the \ must be replaced by /.
 * 
 * @author sven, karsten
 * @version 1.0.1
 */
public class ExecuteMacro extends Command {

	/**
	 * The name of this command.
	 */
	public static final String COMMAND_NAME = "executeMacro";

	/**
	 * The name of the parameter for the file name.
	 */
	public static final String FILE_PARAM = "file";

	/**
	 * The number of times that the Macro is executed.
	 */
	public static final String TIMES_PARAM = "times";

	/** Creates a new instance of ExecuteMacro 
	 * @param toCommand 
	 * @param out */
	public ExecuteMacro(Object[] toCommand, PrintStream out) {
		super(toCommand, out);
	}

	public void printOutHelp() {
		this.out.println("This command executes commands saved in a txt file.");
		this.out.println("Each command must be placed in a separate line.");
		this.out.println("There must be no empty line within the file.");
		this.out.println("The file name has to be provided as value of parameter '"
				+ FILE_PARAM + "'.");
		this.out.println("The path to the file can be specified relative to the "
				+ "directory from where this console has been started or as "
				+ "an absoulte path. As path separator '/' has to be used.");
	}

	public String getCommandName() {
		return COMMAND_NAME;
	}

	public void exec() throws ConsoleException {
		String filename = this.parameters.get(FILE_PARAM);
		if ((filename == null) || (filename.length() == 0)) {
			throw new ConsoleException(FILE_PARAM + " parameter is missing!");
		}
		String timesString = this.parameters.get(TIMES_PARAM);
		int times = 1;
		if (timesString != null && timesString.length() != 0) {
			try {
				times = Integer.parseInt(timesString);
			} catch (NumberFormatException e) {
				throw new ConsoleException(TIMES_PARAM + " is not a valid number!");
			}
		}
		if (times < 1) {
			times = 1;
		}
		this.out.println("Trying to open macro file '" + filename + "'.");
		int linesRead = 0;
		try {
			this.out.println("Executing macro " + times + " time(s).");
			for (int i = 0; i < times; i++) {
				this.out.println(i);
				FileReader fileInput = new FileReader(filename);
				BufferedReader reader = new BufferedReader(fileInput);
				String line = reader.readLine();
				linesRead++;
				while (line != null) {
					CommandFactory factory = ConsoleThread.getConsole()
							.getCommandFactory();
					this.out.println("MACRO EXECUTION: Line read from file: '"
							+ line + "'.");
					Command cmd = factory.createCommand(line);
					this.out.println("MACRO EXECUTION: Executing command "
							+ cmd.getCommandName());
					cmd.execute();
					line = reader.readLine();
					linesRead++;
				}
				linesRead = 0;
				reader.close();
				fileInput.close();
			}

		} catch (IOException e) {
			throw new ConsoleException(
					"IO error while reading macro file. Lines "
							+ "read successfully: " + linesRead + ". In round "
							+ times + ".Message: " + e.getMessage());
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -