Mercurial > hg > Members > tatsuki > bench > jungle-core
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(); } } } */