/***************************************************************************
* *
* ShowOutputCommand.java *
* ------------------- *
* date : 9. September 2004, 09:04 *
* copyright : (C) 2004 Distributed and Mobile Systems Group *
* Lehrstuhl fuer Praktische Informatik *
* Universitaet Bamberg *
* http://www.uni-bamberg.de/pi/ *
* email : sven.kaffille@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.PrintStream;
/**
* @author sven
* @version 1.0.5
*/
public class ShowOutputCommand extends Command {
/**
*
*/
public static final String COMMAND_NAME = "displaySystemOut";
/**
*
*/
public static final String CLEAR_PARAM = "clear";
/**
*
*/
private MemoryOutputStream memOut;
/** Creates a new instance of ShowOutputCommand
* @param objects
* @param out */
public ShowOutputCommand(Object[] objects, PrintStream out) {
super(objects, out);
}
public void exec() throws ConsoleException{
/* Get refernce to memory output stream */
if (this.memOut == null){
try {
ConsoleThread console = ConsoleThread.getConsole();
this.memOut = (MemoryOutputStream)console.getSystemOutputStream();
}
catch (ClassCastException e){
throw new ConsoleException("Current System.out does not print "
+ " to a MemoryOutputStream. " + e.getMessage());
}
}
try {
this.memOut.printOutputTo(this.out);
if ( this.parameters.containsKey(CLEAR_PARAM) ) {
this.memOut.clearBuffer();
}
}
catch (Throwable t){
//t.printStackTrace();
throw new ConsoleException("Error while printing saved System.out. "
+ t.getMessage() + " Maybe current OutputStream is no "
+ "MemoryOutputStream.");
}
}
public String getCommandName() {
return COMMAND_NAME;
}
public void printOutHelp() {
StringBuffer buffer = new StringBuffer();
buffer.append("The command '");
buffer.append(this.getCommandName());
buffer.append("' can be used to print output, that has been ");
buffer.append("printed to System.out, which has been redirected to ");
buffer.append("memory with help of a MemoryOutputStream.");
buffer.append("\n");
buffer.append("Parameters: ");
buffer.append("\n");
buffer.append("-h/-help");
buffer.append("\t");
buffer.append("Displays this message.");
buffer.append("\n");
buffer.append("-clear");
buffer.append("\t");
buffer.append("The output buffer is cleared after output has been displayed.");
this.out.println(buffer.toString());
}
}