package com.ximple.eofms.filter; import javax.swing.event.EventListenerList; import java.util.LinkedList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.ximple.io.dgn7.Element; public abstract class AbstractDispatchableFilter implements ElementDispatchableFilter { private String name; private String description; private LinkedList typeIdCriterions; private LinkedList levelCriterions; protected Log logger = LogFactory.getLog(AbstractFLinkageDispatchableFilter.class); // Create the listener list protected EventListenerList listenerList = new EventListenerList(); public AbstractDispatchableFilter() { typeIdCriterions = new LinkedList(); levelCriterions = new LinkedList(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public void addCriterion(ElementTypeCriterion criterion) { typeIdCriterions.add(criterion); } public void addLevelCriterion(ElementLevelCriterion criterion) { levelCriterions.add(criterion); } protected int compareType(Element element) { for (ElementTypeCriterion criterion : typeIdCriterions) { if (criterion.compareTo(element) == 0) return 0; } return -1; } protected int compareLevel(Element element) { for (ElementLevelCriterion criterion : levelCriterions) { if (criterion.compareTo(element) == 0) return 0; } return -1; } public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener) { listenerList.add(CreateFeatureTypeEventListener.class, listener); } public void removeCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener) { listenerList.remove(CreateFeatureTypeEventListener.class, listener); } protected void fireFeatureTypeEvent(FeatureTypeEvent evt) { Object[] listeners = listenerList.getListenerList(); for (int i = 0; i < listeners.length; i += 2) { if (listeners[i] == CreateFeatureTypeEventListener.class) { ((CreateFeatureTypeEventListener) listeners[i + 1]).createFeatureTypeOccurred(evt); } } } }