package ch.retorte.intervalmusiccompositor.messagebus;
import com.google.common.collect.Lists;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.Observable;
/**
* The log buffer holds all relevant log messages for later retrieval.
*/
public class LogBuffer extends Observable {
//---- Static
private static final String LINE_SEPARATOR = System.lineSeparator();
//---- Fields
private LinkedList<String> buffer = Lists.newLinkedList();
//---- Constructor
LogBuffer() {}
//---- Methods
void append(LocalDateTime localDateTime, String caller, String line) {
buffer.add(getFormattedDateFrom(localDateTime) + " - " + getFormattedCallerFrom(caller) + " - " + line);
setChanged();
notifyObservers();
}
private String getFormattedDateFrom(LocalDateTime localDateTime) {
if (localDateTime == null) {
return DebugMessage.format(LocalDateTime.now());
}
else {
return DebugMessage.format(localDateTime);
}
}
private String getFormattedCallerFrom(String caller) {
if (caller == null) {
return "unknown";
}
else {
return caller;
}
}
@Override
public String toString() {
return ((LinkedList<String>) buffer.clone()).stream().reduce("", (s, s2) -> s + LINE_SEPARATOR + s2);
}
}