ruper2/src/java/core/org/krysalis/ruper2/util/chainprocess Handler.java,NONE,1.1 HandlerManager.java,NONE,1.1 HandlerChain.java,NONE,1.1

[email protected]
Newsgroups gmane.comp.krysalis.metamorphosis.cvs
Message-ID <[email protected]>
Update of /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2/util/chainprocess
In directory sc8-pr-cvs1:/tmp/cvs-serv30481/src/java/core/org/krysalis/ruper2/util/chainprocess

Added Files:
	Handler.java HandlerManager.java HandlerChain.java 
Log Message:
Avoid clash with existing Ruper...

--- NEW FILE: Handler.java ---
package org.krysalis.ruper2.util.chainprocess;

import java.util.List;

public interface Handler
{
     List process( final List list);

}

--- NEW FILE: HandlerManager.java ---
package org.krysalis.ruper2.util.chainprocess;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.krysalis.ruper2.RuperException;


public class HandlerManager
{
	protected Map m_handlerChains;
	protected List m_handlerNameList;
	
	public HandlerManager()
	{
		this.m_handlerChains = new HashMap();
		this.m_handlerNameList = new ArrayList();
	}
	/*
	 * Adds the listeners for adding different handler impl to the handler chain
	 */
	public void addHandlerChain(HandlerChain handlerChain)
	{
		this.m_handlerChains.put(handlerChain.getName(), handlerChain);
		this.m_handlerNameList.add(handlerChain.getName());       
	}

	/*
	 * Prioratize by addding at a certain position
	 */
	public void addHandlerChainAt(int position, HandlerChain handlerChain)
	{
		this.m_handlerChains.put(handlerChain.getName(), handlerChain);
		this.m_handlerNameList.add(position,handlerChain.getName()); 
	}

	public void removeHandlerChain(HandlerChain handlerChain)
	{
		m_handlerChains.remove( handlerChain.getName() );
		this.m_handlerNameList.remove(handlerChain.getName()); 
	}
	
    public List process( final List list )
        throws RuperException
    {
    	List processedList = list;
    	
		Iterator handlerNameIterator = m_handlerNameList.iterator();

		if (handlerNameIterator.hasNext())
		{
			String handlerChainName = (String)handlerNameIterator.next();
			// call the listener execute to see if they want to get added
			HandlerChain handlerChain = (HandlerChain) m_handlerChains.get(handlerChainName);
			processedList = handlerChain.process( list);
		}
		
		return processedList;
    }
    
	/**
	 * @return
	 */
	public List getHandlerChain(String name)
	{
		return (List)m_handlerChains.get(name);
	}


	public HandlerChain getHandlerChain(int index)
	{
		String name = (String)m_handlerNameList.get(index);
		return (HandlerChain)m_handlerChains.get(name);
	}


	/**
	 * @param list
	 */
	public void setHandlerChain(String name, List list)
	{
		m_handlerChains.put(name, list);
	}


	public void addHandler(String name, Handler handler)
	{
		HandlerChain chain = (HandlerChain)m_handlerChains.get(name);
		chain.addHandler(handler);        
	}

	public void removeHandler(String name, Handler handler)
	{
		HandlerChain chain = (HandlerChain)m_handlerChains.get(name);
		chain.removeHandler(handler);        
	}
	
	public List getHandlers(String name)
	{
		HandlerChain chain = (HandlerChain)m_handlerChains.get(name);
		return chain.getHandlers();        
	}

	/**
	 * @param list
	 */
	public void setHandlers(String name,List list)
	{
		HandlerChain chain = (HandlerChain)m_handlerChains.get(name);
		chain.setHandlers(list);        
	}

	
}

--- NEW FILE: HandlerChain.java ---
package org.krysalis.ruper2.util.chainprocess;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class HandlerChain 
{
	private String m_name;
	
    /** List of handlers in this chain */
    private List m_handlers = new ArrayList();

	public HandlerChain(String name)
	{
		m_name = name;
	}
	
    public void addHandler(Handler handler)
    {
        m_handlers.add(handler);        
    }

    public void addHandlerAt(int position, Handler handler)
    {
        m_handlers.add(position, handler);
    }

    public List process(final List list)
    {
    	List processedList = new ArrayList(list);
    	
		Iterator handlerIterator = m_handlers.iterator();

        if (handlerIterator.hasNext())
        {
            Handler handler = (Handler) handlerIterator.next();
			processedList = handler.process( processedList );
        }
        
        return processedList;
    }

    public void removeHandler(Handler handler)
    {
        m_handlers.remove( handler );
    }

	/**
	 * @return
	 */
	public List getHandlers()
	{
		return m_handlers;
	}

	/**
	 * @return
	 */
	public String getName()
	{
		return m_name;
	}

	/**
	 * @param list
	 */
	public void setHandlers(List list)
	{
		m_handlers = list;
	}

	/**
	 * @param string
	 */
	public void setName(String string)
	{
		m_name = string;
	}

}




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.