package org.jactr.tools.tracer.sinks;
/*
* default logging
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import javolution.util.FastList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.utils.parameter.IParameterized;
import org.jactr.tools.tracer.ITraceSink;
import org.jactr.tools.tracer.transformer.ITransformedEvent;
public class ChainedSink implements ITraceSink, IParameterized
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(ChainedSink.class);
private Collection<ITraceSink> _sinks = FastList.newInstance();
public void add(ITraceSink sink)
{
_sinks.add(sink);
}
public Collection<ITraceSink> getSinks(Collection<ITraceSink> container)
{
if (container == null)
container = new ArrayList<ITraceSink>(_sinks.size());
container.addAll(_sinks);
return container;
}
public void add(ITransformedEvent event)
{
if (event == null)
{
LOGGER.error("null message received ", new NullPointerException());
return;
}
for (ITraceSink sink : _sinks)
sink.add(event);
}
public void flush() throws Exception
{
for (ITraceSink sink : _sinks)
sink.flush();
}
public boolean isOpen()
{
for(ITraceSink sink : _sinks)
if(sink.isOpen()) return true;
return false;
}
public String getParameter(String key)
{
// TODO Auto-generated method stub
return null;
}
public Collection<String> getPossibleParameters()
{
// TODO Auto-generated method stub
return Collections.EMPTY_LIST;
}
public Collection<String> getSetableParameters()
{
// TODO Auto-generated method stub
return Collections.EMPTY_LIST;
}
public void setParameter(String key, String value)
{
for (ITraceSink sink : _sinks)
if (sink instanceof IParameterized)
((IParameterized) sink).setParameter(key, value);
}
}