package call;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public class ChatCapture extends AbstractId implements Capture {
private final File outputFileHumanReadable;
private final File outputFileSerialized;
public ChatCapture(Contact contact) {
File directory = new File(System.getProperty("user.home"), "Calls");
directory.mkdirs();
String id = contact.getUser() + " at " + contact.getHost();
if (contact.isLoop()) {
id += " (loop)";
}
outputFileHumanReadable = new File(directory, "Chat with " + id + ".txt");
outputFileSerialized = new File(directory, "Chat with " + id + ".serialized");
}
@Override
public OutputStream getCaptureOutputStream() {
try {
return new FileOutputStream(outputFileHumanReadable, true);
} catch (FileNotFoundException e) {
return null;
}
}
public MessageOutput getMessageOutput() {
MultiMessageOutput msgouts = new MultiMessageOutput();
try {
msgouts.add(new HumanReadableMessageOutput(new FileOutputStream(outputFileHumanReadable, true)));
} catch (IOException e) {
e.printStackTrace();
}
try {
msgouts.add(new SerializedMessageOutput(new FileOutputStream(outputFileSerialized, true)));
} catch (IOException e) {
e.printStackTrace();
}
return msgouts;
}
public void deserialize(MessageOutput messageoutput) {
List<String> lines = new ArrayList<>();
try {
BufferedReader br = new BufferedReader(new FileReader(outputFileSerialized));
String line;
while ((line = br.readLine()) != null) {
lines.add(line);
}
br.close();
} catch (IOException e) {}
SerializedMessageOutput.deserialize(lines, messageoutput);
}
@Override
public String getId() {
return "ChatCapture";
}
}