/*
* @(#) EventLogHandler.java Nov 18, 2003 Copyright (c) 2002-2005 Delft
* University of Technology Jaffalaan 5, 2628 BX Delft, the Netherlands. All
* rights reserved. This software is proprietary information of Delft University
* of Technology
*/
package nl.tudelft.simulation.logger.handlers;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import nl.tudelft.simulation.event.Event;
import nl.tudelft.simulation.event.EventInterface;
import nl.tudelft.simulation.event.EventListenerInterface;
import nl.tudelft.simulation.event.EventProducer;
import nl.tudelft.simulation.event.EventProducerInterface;
import nl.tudelft.simulation.event.EventType;
/**
* A EventLogHandler
* (c) copyright 2002-2005 Delft University of Technology , the
* Netherlands.
* See for project information www.simulation.tudelft.nl
* License of use: Lesser General Public License (LGPL) , no
* warranty.
* @version $Revision: 1.2 $ $Date: 2010/08/10 11:39:18 $
* @author Peter Jacobs, Niels Lang, Alexander Verbraeck
*/
public class EventLogHandler extends Handler implements EventProducerInterface
{
/** LOG_RECORD_PRODUCED_EVENT is fired whenever an log record is received. */
public static final EventType LOG_RECORD_PRODUCED_EVENT = new EventType("LOG_RECORD_PRODUCED_EVENT");
/** our private postman */
private MyEventProducer postman = new MyEventProducer();
/**
* constructs a new EventLogHandler
*/
public EventLogHandler()
{
super();
}
/** {@inheritDoc} */
@Override
public boolean addListener(final EventListenerInterface listener, final EventType eventType)
{
return this.postman.addListener(listener, eventType);
}
/** {@inheritDoc} */
@Override
public boolean addListener(final EventListenerInterface listener, final EventType eventType, final boolean weak)
{
return this.postman.addListener(listener, eventType, weak);
}
/** {@inheritDoc} */
@Override
public boolean addListener(final EventListenerInterface listener, final EventType eventType, final short position)
{
return this.postman.addListener(listener, eventType, position);
}
/** {@inheritDoc} */
@Override
public boolean addListener(final EventListenerInterface listener, final EventType eventType, final short position,
final boolean weak)
{
return this.postman.addListener(listener, eventType, position, weak);
}
/** {@inheritDoc} */
@Override
public void close()
{
this.flush();
}
/** {@inheritDoc} */
@Override
public void flush()
{
// Nothing to do
}
/**
* @return the event types. Not a method of EventProducerInterface anymore. TODO see if the method can be removed.
*/
public EventType[] getEventTypes()
{
return new EventType[]{EventLogHandler.LOG_RECORD_PRODUCED_EVENT};
}
/** {@inheritDoc} */
@Override
public void publish(final LogRecord arg0)
{
this.postman.fireEvent(new Event(EventLogHandler.LOG_RECORD_PRODUCED_EVENT, this, this.getFormatter().format(
arg0)));
}
/** {@inheritDoc} */
@Override
public boolean removeListener(final EventListenerInterface listener, final EventType eventType)
{
return this.postman.removeListener(listener, eventType);
}
/**
* A MyEventProducer is a more or less public Postman.
*/
protected class MyEventProducer extends EventProducer
{
/** The default serial version UID for serializable classes */
private static final long serialVersionUID = 1L;
/** {@inheritDoc} */
@Override
public EventInterface fireEvent(final EventInterface event)
{
return super.fireEvent(event);
}
}
}