package de.ugoe.cs.eventbench; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.Collection; 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; /** *
* This class provides the functionality to generate replay files from sequences * if {@link ReplayableEvent}s. *
* * @author Steffen Herbold * @version 1.0 */ public class ReplayGenerator { /** ** {@link IReplayDecorator} to be used. If this field is {@code null}, no * decorator is used. Default: {@code null} *
*/ private IReplayDecorator decorator = null; /** ** Id of the current session. The starting id is 1. *
*/ int sessionId = 1; /** ** Creates a replay file that contains multiple event sequences. *
* * @param sequences * collection of event sequences from which the sessions are * generated * @param filename * name and path of the replay file */ public void createLogfileMultipleSessions( Collection* Creates a replay file that from a single event sequence. *
* * @param actions * event sequence from which the sessions are generated * @param filename * name and path of the replay file */ public void createLogfileSingleSession(List* Helper function that opens the replay file for writing. *
* * @param filename * name and path of the replay file * @return {@link OutputStreamWriter} that writes to the replay file */ private OutputStreamWriter 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.logException(e); } OutputStreamWriter writer = null; try { writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-16"); } catch (IOException e) { Console.printerrln("Unable to open file for writing (read-only file):" + filename); Console.logException(e); } return writer; } /** ** Helper function that adds an event sequence to the replay. *
* * @param actions * event sequences to be added * @param writer * {@link OutputStreamWriter} to which the replay is added * @throws IOException * thrown if there is a problem writing to writer */ private void writeSession(List