package de.ugoe.cs.eventbench; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.List; import de.ugoe.cs.eventbench.data.IReplayable; import de.ugoe.cs.eventbench.data.ReplayableEvent; import de.ugoe.cs.util.StringTools; import de.ugoe.cs.util.console.Console; public class ReplayGenerator { public void createLogfileMultipleSessions(List>> sequences, String filename) { FileWriter writer = openReplayFile(filename); if( writer!=null ) { try { writer.write("" + StringTools.ENDLINE); writer.write("" + StringTools.ENDLINE); for( List> actions : sequences ) { writeSession(actions, writer); } writer.write("" + StringTools.ENDLINE); writer.close(); } catch (IOException e) { Console.printerrln("Unable to write replay file " + filename); } } } public void createLogfileSingleSession(List> actions, String filename) { FileWriter writer = openReplayFile(filename); if( writer!=null ) { try { writer.write("" + StringTools.ENDLINE); writer.write("" + StringTools.ENDLINE); writeSession(actions, writer); writer.write("" + StringTools.ENDLINE); writer.close(); } catch (IOException e) { Console.printerrln("Unable to write replay file " + filename); } } } private FileWriter openReplayFile(String filename) { File file = new File(filename); boolean fileCreated; try { fileCreated = file.createNewFile(); if( !fileCreated ) { Console.traceln("Created logfile " + filename); } else { Console.traceln("Overwrote existing logfile " + filename); } } catch (IOException e) { Console.printerrln("Unable to create file " + filename); Console.printStacktrace(e); } FileWriter writer = null; try { writer = new FileWriter(file); } catch (IOException e) { Console.printerrln("Unable to open file for writing (read-only file):" + filename); Console.printStacktrace(e); } return writer; } private void writeSession(List> actions, FileWriter writer) throws IOException { writer.write(" " + StringTools.ENDLINE); for( ReplayableEvent currentAction : actions ) { List replayables = currentAction.getReplayMessages(); for( IReplayable replayble : replayables ) { writer.write(replayble.getReplayXml()+StringTools.ENDLINE); } } writer.write(" " + StringTools.ENDLINE); } }