package org.myrobotlab.codec; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import org.myrobotlab.framework.Message; import org.myrobotlab.service.Runtime; import org.myrobotlab.service.interfaces.NameProvider; public class RecorderPythonFile implements Recorder { boolean isRecording = false; private transient OutputStream recordingPython; /* * (non-Javadoc) * * @see org.myrobotlab.codec.Recorder#write(org.myrobotlab.framework.Message) */ @Override public void write(Message msg) throws IOException { // python Object[] data = msg.data; String msgName = (msg.name.equals(Runtime.getInstance().getName())) ? "runtime" : msg.name; recordingPython.write(String.format("%s.%s(", msgName, msg.method).getBytes()); if (data != null) { for (int i = 0; i < data.length; ++i) { Object d = data[i]; if (d.getClass() == Integer.class || d.getClass() == Float.class || d.getClass() == Boolean.class || d.getClass() == Double.class || d.getClass() == Short.class || d.getClass() == Short.class) { recordingPython.write(d.toString().getBytes()); // FIXME Character probably blows up } else if (d.getClass() == String.class || d.getClass() == Character.class) { recordingPython.write(String.format("\"%s\"", d).getBytes()); } else { recordingPython.write("object".getBytes()); } if (i < data.length - 1) { recordingPython.write(",".getBytes()); } } } recordingPython.write(")\n".getBytes()); recordingPython.flush(); } @Override public void start(NameProvider service) throws FileNotFoundException { SimpleDateFormat TSFormatter = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String cfgDir = String.format("%s%s.myrobotlab", System.getProperty("user.dir"), File.separator); String filenamePython = String.format("%s/%s_%s.py", cfgDir, service.getName(), TSFormatter.format(new Date())); // log.info(String.format("started recording %s to file %s", getName(), // filename)); recordingPython = new BufferedOutputStream(new FileOutputStream(filenamePython), 8 * 1024); } public static void main(String[] args) { } @Override public void stop() throws IOException { // TODO Auto-generated method stub } }