📄 defaultmapcompositioneventproducer.java
字号:
package com.esri.solutions.jitk.web.tasks.mapcomp;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
/**
* Implementation of the {@link IMapCompositionEventProducer}
* interface. This class provides a default implementation
* of the interface. This class keeps an internal list
* of Map Composition Event Observers. When an Map Composition
* Event is pushed to this class, it determines the callback to
* invoke on the Observer based on the Event Type. The appropriate
* callback method is then invoked. When the invoked callback
* method returns then the next observer is notified. The order of
* the observer notification is determined by the order in which the
* observers were added.
*/
public class DefaultMapCompositionEventProducer implements
IMapCompositionEventProducer {
private static final Logger LOG = LogManager.getLogger(DefaultMapCompositionEventProducer.class);
/**
* List of observers to be notified of an event.
*/
private final List<IMapCompositionEventObserver> m_observers;
/**
* Constructs a new <code>DefaultMapCompositionEventProducer</code> object.
*/
public DefaultMapCompositionEventProducer () {
m_observers = new ArrayList<IMapCompositionEventObserver>();
}
/*
* (non-Javadoc)
* @see com.esri.solutions.jitk.web.tasks.mapcomp.IMapCompositionEventProducer#getObservers()
*/
public List<IMapCompositionEventObserver> getObservers() {
return m_observers;
}
/*
* (non-Javadoc)
* @see com.esri.solutions.jitk.web.tasks.mapcomp.IMapCompositionEventProducer#push(com.esri.solutions.jitk.web.tasks.mapcomp.MapCompositionEvent)
*/
public void push(MapCompositionEvent event) {
if (event == null) {
throw new NullPointerException();
}
for (IMapCompositionEventObserver ob : m_observers) {
try {
if (event.getEventType() == MapCompositionEvent.MapCompositionEventType.CREATED) {
ob.created(event);
} else if (event.getEventType() == MapCompositionEvent.MapCompositionEventType.DELETED) {
ob.deleted(event);
} else if (event.getEventType() == MapCompositionEvent.MapCompositionEventType.OPENED) {
ob.opened(event);
} else if (event.getEventType() == MapCompositionEvent.MapCompositionEventType.SAVED) {
ob.saved(event);
}
} catch (Exception e) {
LOG.warn("Exception occured while pushing MapCompositionEvent " +
"[Type: " + event.getEventType().name() +
", Source: " + event.getSource().toString() + "], continuing.", e);
}
}
}
/**
* Registers a list of Map Composition Event Observers. Observers will not be notified of
* previous events, only events produced after they were registered.
*
* @param observers List of Map Composition Event Observers to register. If <code>null</code>
* the current list of observers will be cleared.
*/
public void setObservers (List<IMapCompositionEventObserver> observers) {
m_observers.clear();
if (observers != null) {
m_observers.addAll(observers);
}
}
/**
* Adds an observer to listen for Map Composition Events. The observer will not
* be notified of previous events, only new events being producing after the observer
* was added to this producer.
*
* @param observer Listens for Map Composition events for handling.
*/
public void addObserver (IMapCompositionEventObserver observer) {
if (observer != null) {
m_observers.add(observer);
}
}
/**
* Removes a previously added Map Composition Event observer. After being removed,
* the observer will no longer receive Map Composition Events.
*
* @param observer Observer to remove from the internal list.
*/
public void removeObserver (IMapCompositionEventObserver observer) {
if (observer != null) {
m_observers.remove(observer);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -