view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/NodeWrapper.java @ 74:3a3622cf2eef

remove error but have a error test program and LoggingChildren.iterator is bad
author one
date Wed, 27 Aug 2014 05:07:50 +0900
parents 8c6ff361b68a
children
line wrap: on
line source

/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;

import java.util.Iterator;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;

public class NodeWrapper<T extends TreeNode<T>> implements Node
{
	private final T wrap;
	
	public NodeWrapper(T _wrap)
	{
		wrap = _wrap;
	}

	@Override
	public Attributes getAttributes()
	{
		return wrap.getAttributes();
	}

	@Override
	public Children<Node> getChildren()
	{
		return new ChildrenWrapper<T>(wrap);
	}

	private static class ChildrenWrapper<T extends TreeNode<T>> implements Children<Node>
	{
		private final TreeNodeChildren<T> children;
		
		public ChildrenWrapper(T _wrap)
		{
			children = _wrap.getChildren();
		}

		@Override
		public Iterator<Node> iterator()
		{
			IterableConverter.Converter<Node,T> converter = new IterableConverter.Converter<Node,T>(){
				@Override
				public Node conv(T _b){
					return new NodeWrapper<T>(_b);
				}
			};
			
			
			return new IterableConverter<Node,T>(children,converter).iterator();
		}

		@Override
		public Either<Error, Node> at(int _pos)
		{
			Either<Error,T> either = children.at(_pos);
			if(either.isA()){
				return DefaultEither.newA(either.a());
			}
			T target = either.b();
			Node newWrapper = new NodeWrapper<T>(target);
			
			return DefaultEither.newB(newWrapper);
		}

		@Override
		public int size()
		{
			return children.size();
		}
	}
}
*/