package call;
import java.awt.Color;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
public class SerializedMessageOutput implements MessageOutput {
private final List<PrintWriter> printWriters = new ArrayList<>();
public SerializedMessageOutput(PrintWriter pw) {
this.printWriters.add(pw);
}
public SerializedMessageOutput(Collection<PrintWriter> printWriters) {
this.printWriters.addAll(printWriters);
}
public SerializedMessageOutput(OutputStream out) {
this.printWriters.add(new PrintWriter(out));
}
@Override
public void append(String str, Color c) {
for (PrintWriter pw : printWriters) {
pw.println(System.currentTimeMillis() + "," + Integer.toString(c.getRGB()) + ","
+ str.replaceAll("\r", "").replaceAll("\n", Matcher.quoteReplacement("\\n")));
pw.flush();
}
}
@Override
public void close() {
for (PrintWriter pw : printWriters) {
pw.close();
}
}
public static void deserialize(List<String> lines, MessageOutput messageoutput) {
for (String line : lines) {
final String[] parts = line.split("[,]", 3);
if (parts.length == 3) {
@SuppressWarnings("unused")
final String timestr = parts[0];
final String colorstr = parts[1];
final String textstr = parts[2].replaceAll("\\\\n", "\n");
try {
Color c = new Color(Integer.parseInt(colorstr));
messageoutput.append(textstr, c);
} catch (NumberFormatException e) {}
}
}
}
}