⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultmapcompositioneventproducer.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 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 + -