view src/main/java/jungle/impl/SimpleLinks.java @ 7:c3c65308a11b

removed some package and added Graph API
author shoshi <shoshi@cr.ie.u-ryukyu.ac.jp>
date Fri, 29 Jun 2012 00:03:12 +0900
parents b1fa4c494416
children
line wrap: on
line source

package jungle.impl;

import java.util.Iterator;
import jungle.core.Link;
import jungle.core.Links;
import jungle.core.graph.Graph;
import jungle.core.graph.Vertex;
import jungle.core.graph.Vertexes;

public class SimpleLinks implements Links
{
	@SuppressWarnings("unused")
	private final SimpleTreeGroup group;
	private final Vertexes links;
	private final Graph graph;
	
	public SimpleLinks(SimpleTreeGroup _group,Vertexes _links,Graph _graph)
	{
		group = _group;
		links = _links;
		graph = _graph;
	}
	
	public boolean contains(Link _link)
	{
		if(_link instanceof SimpleLink){
			SimpleLink converted = (SimpleLink)_link;
			Vertex link = converted.getVertex();
			return links.contains(link);
		}
		
		return false;
	}

	public int size()
	{
		return links.size();
	}

	public Iterator<Link> iterator()
	{
		return new SimpleLinkIteratorWrapper(links.iterator());
	}
	
	private class SimpleLinkIteratorWrapper implements Iterator<Link>
	{
		private final Iterator<Vertex> iterator;
		
		public SimpleLinkIteratorWrapper(Iterator<Vertex> _iterator)
		{
			iterator = _iterator;
		}
		
		@Override
		public boolean hasNext()
		{
			return iterator.hasNext();
		}

		@Override
		public Link next()
		{
			Vertex vertex = iterator.next();
			if(vertex != null){
				return new SimpleLink(vertex,graph);
			}
			
			return null;
		}

		@Override
		public void remove()
		{
			throw new UnsupportedOperationException("removing is not supported.");
		}
	}

	public Link getAt(int _position)
	{
		if(links.size() < _position || _position < 0){
			throw new IndexOutOfBoundsException("invalid _position value");
		}
		
		return new SimpleLink(links.at(_position),graph);
	}
}