package com.traxel.lumbermill.event;
import com.traxel.lumbermill.log.Log;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public static final String STATUS_PROPERTY = "_status";
public static final String NA = "N/A";
private final Log sink;
private final Set<PropertyChangeListener> listeners;
this.sink = sink;
listeners = Collections.synchronizedSet(new HashSet<PropertyChangeListener>());
}
public abstract void close();
synchronized (listeners) {
listeners.add(l);
}
}
protected void add(
final Event event) {
sink.add(event);
}
protected void firePropertyChange(
final String property,
final Object oldValue,
final Object newValue) {
final PropertyChangeEvent event = new PropertyChangeEvent(this,
property, oldValue, newValue);
synchronized (listeners) {
final Iterator<PropertyChangeListener> it = listeners.iterator();
while (it.hasNext()) {
it.next().propertyChange(event);
}
}
}
}