//#condition DebugLevel != "off" /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.albite.util; import java.util.Vector; /** * * @author albus */ public class BufferedLogger extends Logger { private Vector messages = new Vector(100); private class Message { final boolean error; final String msg; Message(final String msg, final boolean error) { this.msg = msg; this.error = error; } } public BufferedLogger() { super(); } public BufferedLogger(final Logger logger) { super(logger); } protected final void logInternally(final String message, final boolean error) { messages.addElement(new Message(message, error)); } protected final void logInternally(Throwable t) { messages.addElement(new Message(t.getClass() + ": " + t.getMessage(), true)); } public final String getMessages( final boolean errorOnly, final boolean ascending) { StringBuffer sb = new StringBuffer(); Message m; final int end = messages.size() - 1; int i = (ascending ? 0 : end - 1); while ( (ascending && i <= end) || (!ascending && i >= 0) ) { m = (Message) messages.elementAt(i); if (!errorOnly || m.error) { sb.append(m.msg); sb.append('\n'); } if (ascending) { i++; } else { i--; } } return sb.toString(); } public final boolean isEmpty() { return messages.isEmpty(); } }