package org.cyclopsgroup.jmxterm.io; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import org.apache.commons.lang.Validate; /** * Output with a file * * @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a> */ public class FileCommandOutput extends CommandOutput { private final PrintWriter fileWriter; private final WriterCommandOutput output; /** * @param file File where the result is written to * @throws IOException IO error */ public FileCommandOutput( File file, boolean appendToOutput ) throws IOException { Validate.notNull( file, "File can't be NULL" ); File af = file.getAbsoluteFile(); if ( !af.getParentFile().isDirectory() ) { if ( !af.getParentFile().mkdirs() ) { throw new IOException( "Couldn't make directory " + af.getParentFile() ); } } fileWriter = new PrintWriter( new FileWriter( af, appendToOutput ) ); output = new WriterCommandOutput( fileWriter, new PrintWriter( System.err, true ) ); } /** * @inheritDoc */ @Override public void close() { fileWriter.flush(); fileWriter.close(); } /** * @inheritDoc */ @Override public void print( String value ) { output.print( value ); } /** * @inheritDoc */ @Override public void printError( Throwable e ) { output.printError( e ); } /** * @inheritDoc */ @Override public void printMessage( String message ) { output.printMessage( message ); } }