package nl.tudelft.simulation.event.util;
import java.util.Iterator;
import nl.tudelft.simulation.event.EventProducer;
import nl.tudelft.simulation.event.EventType;
/**
* The Event producing iterator provides a set to which one can subscribe interest in entry changes.
*
* (c) copyright 2002-2014 Delft University of Technology.
* BSD-style license. See DSOL License.
* @author Peter Jacobs
* @author Alexander Verbraeck
* @since 1.5
* @param the type of the iterator
*/
public class EventIterator extends EventProducer implements Iterator
{
/** The default serial version UID for serializable classes. */
private static final long serialVersionUID = 1L;
/** OBJECT_REMOVED_EVENT is fired on removal of entries. */
public static final EventType OBJECT_REMOVED_EVENT = new EventType("OBJECT_REMOVED_EVENT");
/** our parent iterator. */
private Iterator parent = null;
/**
* constructs a new Iterator.
* @param parent parent.
*/
public EventIterator(final Iterator parent)
{
super();
this.parent = parent;
}
/** {@inheritDoc} */
@Override
public boolean hasNext()
{
return this.parent.hasNext();
}
/** {@inheritDoc} */
@Override
public T next()
{
return this.parent.next();
}
/** {@inheritDoc} */
@Override
public void remove()
{
this.parent.remove();
this.fireEvent(OBJECT_REMOVED_EVENT);
}
}