/*******************************************************************************
* Copyright (c) 2010, 2013 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.clientbuilder;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
final class DebugFileWriter {
private final File directoryForDebugFiles;
public DebugFileWriter( File parentDirectory ) {
directoryForDebugFiles = parentDirectory;
}
public void beforeCleanup( TokenList tokens, String fileName ) {
if( directoryForDebugFiles != null ) {
String code = getCodeForDebugFile( tokens );
createDebugFile( "orig", fileName, code );
}
}
public void afterCleanup( TokenList tokens, String fileName ) {
if( directoryForDebugFiles != null ) {
String code = getCodeForDebugFile( tokens );
createDebugFile( "clean", fileName, code );
}
}
private void createDebugFile( String dirName, String fileName, String code ) {
File subDir = new File( directoryForDebugFiles, dirName );
subDir.mkdirs();
File file = new File( subDir, fileName );
try {
writeToFile( code, file );
} catch( IOException e ) {
System.err.println( "Failed to write to file " + file.getAbsolutePath() );
e.printStackTrace();
}
}
private String getCodeForDebugFile( TokenList tokens ) {
String code = null;
if( directoryForDebugFiles != null ) {
code = JavaScriptPrinter.printTokens( tokens );
}
return code;
}
private static void writeToFile( String Code, File file ) throws IOException {
FileWriter fileWriter = new FileWriter( file );
try {
fileWriter.write( Code );
} finally {
fileWriter.close();
}
}
}