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

📄 defaulterrorsink.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.web.error;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

/**
 * Acts as a container to store errors.  This implementation serves
 * as an producer as well, so this object can be for both producing
 * and receiving errors.
 * 
 * <p>
 * This object will maintain a set of Error Observers.  Duplicate
 * {@link IErrorObserver} objects will not be allowed.
 * </p>
 * 
 * <p>
 * This object will not propagate received errors to observers that were added
 * after errors have been received.  The observers will be notified of
 * all new errors received by this object.
 * </p>
 */
public class DefaultErrorSink implements IErrorProducer, IErrorSink {

	/**
	 * Set of Error Observers.
	 */
	private final Set<IErrorObserver> m_observers;
	
	/**
	 * List of errors 
	 */
	private final List<IError> m_sink;
	
	/**
	 * Constructs a new <code>DefaultErrorSink</code> object.  Internal initialization
	 * of observers and the error buffer is performed.
	 */
	public DefaultErrorSink () {
		m_observers = new LinkedHashSet<IErrorObserver>();
		m_observers.add(this);
		m_sink = new ArrayList<IError>();
	}
	
	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.error.IErrorProducer#getObservers()
	 */
	public List<IErrorObserver> getObservers() {
		return new ArrayList<IErrorObserver>(m_observers);
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.error.IErrorProducer#push(com.esri.solutions.jitk.web.error.IError)
	 */
	public void push(IError error) {
		if (error != null) {
			for (IErrorObserver observer : m_observers) {
				observer.receive(error);
			}
		}
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.error.IErrorSink#clear()
	 */
	public void clear() {
		synchronized(this) {
			m_sink.clear();
		}
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.error.IErrorSink#count()
	 */
	public int count() {
		return m_sink.size();
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.error.IErrorSink#export(com.esri.solutions.jitk.web.error.IErrorSinkExporter)
	 */
	public void export(IErrorSinkExporter exporter) {
		if (exporter == null) {
			throw new NullPointerException ();
		}

		exporter.begin();
		exporter.setErrors(new ArrayList<IError>(m_sink));
		exporter.export();
		exporter.end();
	}

	/*
	 * (non-Javadoc)
	 * @see com.esri.solutions.jitk.web.error.IErrorObserver#receive(com.esri.solutions.jitk.web.error.IError)
	 */
	public void receive(IError error) {
		if (error != null) {
			synchronized (this) {
				m_sink.add(error);
			}
		}
	}

	/**
	 * Sets the list of {@link IErroObserver} objects that will receive
	 * errors as they are produced.  This list will replace whatever 
	 * observers are currently stored internally.  Any errors received before
	 * an observer is added will not be propagated to the new observer.
	 * 
	 * @param observers List of {@link IErrorObserver} objects, cannot be
	 * 					<code>null</code>.
	 * 
	 * @throws NullPointerException	Thrown if the <code>observers</code>
	 * 								argument is <code>null</code>.
	 */
	public void setObservers (List<IErrorObserver> observers) {
		m_observers.clear();
		m_observers.add(this);
		m_observers.addAll(observers);	
	}
	
	/**
	 * Adds an {@link IErrorObserver} object that will receive errors
	 * as they are produced.  Any errors received before an observer is added
	 * will not be propagated to the new observer.
	 * 
	 * @param observer New observer to receive errors that are produced,
	 * 					cannot be <code>null</code>.
	 * 
	 * @throws NullPointerException		Thrown if the <code>observer</code>
	 * 									argument is <code>null</code>.
	 */
	public void addObserver (IErrorObserver observer) {
		if (observer == null) {
			throw new NullPointerException ();
		}
		
		if (observer != null) {
			m_observers.add(observer);
		}
	}
	
	/**
	 * Removes an Error Observer.  The Error Observer will no longer
	 * receive any errors produced.
	 * 
	 * @param observer	Observer to be removed, cannot be <code>null</code>.
	 */
	public void removeObserver (IErrorObserver observer) {
		if (observer == null) {
			throw new NullPointerException ();
		}
		
		m_observers.remove(observer);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -