@Override public void addGraphListener(GraphListener listener, FilterTriple filter, long delay) { listenerConfigs.add(new ListenerConfiguration(listener, filter)); if (delay > 0) { delayedNotificator.addDelayedListener(listener, delay); } }
@Override public void removeGraphListener(GraphListener listener) { synchronized(listenerConfigs) { Iterator<ListenerConfiguration> iter = listenerConfigs.iterator(); while (iter.hasNext()) { ListenerConfiguration listenerConfig = iter.next(); GraphListener registeredListener = listenerConfig.getListener(); if ((registeredListener == null) || (registeredListener.equals(listener))) { iter.remove(); } } } delayedNotificator.removeDelayedListener(listener); }
/** * Dispatches a <code>GraphEvent</code> to all registered listeners for which * the specified <code>Triple</code> matches the <code>FilterTriple</code>s * of the listeners. * * @param triple The Triple that was modified * @param type The type of modification */ protected void dispatchEvent(GraphEvent event) { synchronized(listenerConfigs) { Iterator<ListenerConfiguration> iter = listenerConfigs.iterator(); while (iter.hasNext()) { ListenerConfiguration config = iter.next(); GraphListener registeredListener = config.getListener(); if (registeredListener == null) { iter.remove(); continue; } if (config.getFilter().match(event.getTriple())) { delayedNotificator.sendEventToListener(registeredListener, event); } } } }