package org.sikuli.recorder; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.imageio.ImageIO; import org.json.simple.JSONObject; import org.sikuli.recorder.event.ClickEvent; import org.sikuli.recorder.event.Event; import org.sikuli.recorder.event.ScreenShotEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Charsets; import com.google.common.io.Files; public class DefaultEventWriter implements EventWriter { static Logger logger = LoggerFactory.getLogger(DefaultEventWriter.class); static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS"); static public String getTimeStamp(){ return sdf.format(new Date()); } private File outputDir; public DefaultEventWriter(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); String name = sdf.format(new Date()); try { File temp = Utils.createTempDirectory(); outputDir = new File(temp, name); outputDir.mkdir(); } catch (IOException e) { e.printStackTrace(); } // TODO remove temp directory when done } @Override public void write(Event event) { //System.out.println(getEventDir() + "/" + event.getClass()); if (event.getClass().equals(ScreenShotEvent.class)){ String name = getTimeStamp() + ".screenshot.png"; BufferedImage image = ((ScreenShotEvent)event).getImage(); try { ImageIO.write(image, "png", new File(getEventDir(), name)); } catch (IOException e) { } logger.trace("ScreenShot --> " + name); } else if (event.getClass().equals(ClickEvent.class)){ String name = getTimeStamp() + ".click.txt"; JSONObject json = event.toJSON(); try { Files.write(json.toJSONString(), new File(getEventDir(), name), Charsets.US_ASCII); } catch (IOException e) { } logger.debug(event + " --> " + name); } } public File getEventDir() { return outputDir; } public void setEventDir(File outputDir) { this.outputDir = outputDir; } }