view src/treecms/tree/util/PredicatedList.java @ 13:c8601b0fa8a3

added Predicate and PredicateList
author shoshi
date Wed, 11 May 2011 22:08:20 +0900
parents
children
line wrap: on
line source

package treecms.tree.util;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class PredicatedList<E> implements List<E>
{
	private Predicate<E> m_predicate;
	private List<E> m_list;
	
	public PredicatedList(List<E> _list,Predicate<E> _predicate)
	{
		if(_list == null || _predicate == null){
			throw new NullPointerException();
		}
		
		m_list = _list;
		m_predicate = _predicate;
	}

	@Override
	public boolean add(E _item)
	{
		if(m_predicate.evaluateAdd(_item)){
			return m_list.add(_item);
		}
		return false;
	}

	@Override
	public void add(int _index,E _item)
	{
		if(m_predicate.evaluateAdd(_index,_item)){
			m_list.add(_index,_item);
		}
	}

	@Override
	public boolean addAll(Collection<? extends E> _c)
	{
		boolean eval = false;
		for(E i : _c){
			eval = m_predicate.evaluate(i);
			if(!eval){
				return false;
			}
		}
		
		return m_list.addAll(_c);
	}

	@Override
	public boolean addAll(int _index, Collection<? extends E> _c)
	{
		boolean eval = false;
		for(E i : _c){
			eval = m_predicate.evaluate(i);
			if(!eval){
				return false;
			}
		}
		
		return m_list.addAll(_index,_c);
	}

	@Override
	public void clear()
	{
		m_list.clear();
	}

	@Override
	public boolean contains(Object _obj)
	{
		return m_list.contains(_obj);
	}

	@Override
	public boolean containsAll(Collection<?> _c)
	{
		return m_list.containsAll(_c);
	}

	@Override
	public E get(int _index)
	{
		return m_list.get(_index);
	}

	@Override
	public int indexOf(Object _obj)
	{
		return m_list.indexOf(_obj);
	}

	@Override
	public boolean isEmpty()
	{
		return m_list.isEmpty();
	}

	@Override
	public Iterator<E> iterator()
	{
		return m_list.iterator();
	}

	@Override
	public int lastIndexOf(Object _obj)
	{
		return m_list.lastIndexOf(_obj);
	}

	@Override
	public ListIterator<E> listIterator()
	{
		return m_list.listIterator();
	}

	@Override
	public ListIterator<E> listIterator(int _index)
	{
		return m_list.listIterator(_index);
	}

	@Override
	public boolean remove(Object _obj)
	{
		return m_list.remove(_obj);
	}

	@Override
	public E remove(int _index)
	{
		return m_list.remove(_index);
	}

	@Override
	public boolean removeAll(Collection<?> _c)
	{
		return m_list.removeAll(_c);
	}

	@Override
	public boolean retainAll(Collection<?> _c)
	{
		return m_list.retainAll(_c);
	}

	@Override
	public E set(int _index,E _element)
	{
		if(m_predicate.evaluate(_element)){
			
		}
		return null;
	}

	@Override
	public int size() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public List<E> subList(int fromIndex, int toIndex) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Object[] toArray() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public <T> T[] toArray(T[] a) {
		// TODO Auto-generated method stub
		return null;
	}

}