package com.github.jknack.antlr4ide.console;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
class TestAppender extends AppenderSkeleton {
private final List<String> errors;
private final List<String> warnings;
private final List<String> infos;
private final List<String> debugs;
private final List<String> traces;
private final List<String> others;
public TestAppender() {
errors = new ArrayList<String>();
warnings = new ArrayList<String>();
infos = new ArrayList<String>();
debugs = new ArrayList<String>();
traces = new ArrayList<String>();
others = new ArrayList<String>();
}
@Override
public void close() {
}
@Override
public boolean requiresLayout() {
return false;
}
@Override
protected void append(LoggingEvent event) {
final Level level = event.getLevel();
final String message = event.getRenderedMessage();
switch (level.toInt()) {
case Level.ERROR_INT: errors.add(message); break;
case Level.WARN_INT: warnings.add(message); break;
case Level.INFO_INT: infos.add(message); break;
case Level.DEBUG_INT: debugs.add(message); break;
case Level.TRACE_INT: traces.add(message); break;
default: others.add(message); break;
}
}
public String getError() {
return getStringForList(this.errors);
}
public String getWarning() {
return getStringForList(this.warnings);
}
public String getInfo() {
return getStringForList(this.infos);
}
public String getDebug() {
return getStringForList(this.debugs);
}
public String getTrace() {
return getStringForList(this.traces);
}
private String getStringForList(final List<String> list) {
final StringBuffer result = new StringBuffer("");
for (int i = 0; i < list.size(); i++) {
final String msg = list.get(i);
result.append(msg);
}
return result.toString();
}
}