view src/main/java/example/ReadThread.java @ 8:442463aa27e5

miss Spell revision
author one
date Tue, 01 Apr 2014 18:28:34 +0900
parents 4e1f8f434648
children
line wrap: on
line source

package example;

import java.nio.ByteBuffer;

import fj.data.List;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TraversableNodeWrapper;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
import junit.framework.Assert;

public class ReadThread extends Thread {
	public static final String key = "name";
	int loopCount;
	Jungle j;
	List<DefaultNodePath> paths;

	ReadThread(Jungle j, int loopCount, List<DefaultNodePath> paths) {
		this.loopCount = loopCount;
		System.out.println(loopCount);
		this.paths = paths;
		this.j = j;
	}

	public void run() {
		JungleTree tree = j.getTreeByName("tree");
		DefaultTraverser traverser = new DefaultTraverser();
		TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(
				tree.getRootNode());
		for (int count = 0; count < loopCount; count++) {
			for (DefaultNodePath path : paths) {
				DefaultEvaluator evaluator = new DefaultEvaluator(path);
				Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser
						.traverse(traversable, evaluator);
				if (ret.isA()) {
					Assert.fail();
				}

				Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
				TraversableNodeWrapper<Node> target = traversal.destination();
				ByteBuffer value = target.getWrapped().getAttributes().get(key);
				 String actual = new String(value.array());
				 System.out.println(actual);
				// List<DefaultNodePath> parts = path.inits();
			}

		}

		// ここまで処理
	}
}