/*
 * Created on Apr 24, 2005
 *
 * $Log$
 * Revision 1.3  2005/09/21 22:00:45  dsowen
 * Split out the access stuff into accesslib.
 * New Creator interface off-loads object creation to user.
 *
 * Revision 1.2  2005/08/19 17:51:17  dsowen
 * Fixed: NPEs when using accessors from paths, &c.  Included tests.
 * Fixed: parsing exception wasn't very enlightening.
 *
 * Revision 1.1  2005/08/03 00:35:29  dsowen
 * Initial commit.
 *
 * Revision 1.1  2005/04/25 01:39:53  dowen
 * Preliminary path support.
 *
 */
package ws.fugue88.jpath;

import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 * @author dsowen
 */
public class Path {

	Path(final List parts)
	{
		_parts = parts;
	}

	public Path parents()
	{
		return new Path(_parts.subList(0, _parts.size() - 1));
	}

	public Path children()
	{
		return new Path(_parts.subList(1, _parts.size()));
	}

	public PathPart head()
	{
		return (PathPart)_parts.get(0);
	}

	public PathPart terminal()
	{
		return (PathPart)_parts.get(_parts.size() - 1);
	}

	public Iterator iterator()
	{
		return Collections.unmodifiableList(_parts).iterator();
	}

	public boolean isEmpty()
	{
		return _parts.isEmpty();
	}

	public String toString()
	{
		final StringBuffer buff = new StringBuffer();
		for(final Iterator i = _parts.iterator(); i.hasNext();) {
			buff.append(i.next());
		}
		return buff.toString();
	}

	private final List _parts;
}