view src/main/java/example/SimpleJungle.java @ 4:671a67571a48

fixed WriteThread
author one
date Thu, 06 Mar 2014 05:08:24 +0900
parents 37aab24020a0
children
line wrap: on
line source

package example;

import java.nio.ByteBuffer;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
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.JungleTreeEditor;
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.store.impl.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
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 SimpleJungle {
	
	public static final String key = "name";
	public static final String valueString = "kanagawa";
	public static final ByteBuffer value = ByteBuffer.wrap(valueString.getBytes());
	
	public static void main(String[] args) {
		Jungle j = new DefaultJungle(null,"hogehoge",new DefaultTreeEditor(new DefaultTraverser()));
		j.createNewTree("tree");//木を作った
		JungleTree tree = j.getTreeByName("tree");//名前を取得
		JungleTreeEditor editor1 = tree.getTreeEditor();//editorの取得
		DefaultNodePath root = new DefaultNodePath();//パスの取得
		
		//eitherに値を入れる
		Either<Error,JungleTreeEditor> either = editor1.putAttribute(root,key,value);
		if(either.isA()){//失敗した場合Aが出てくる
			Assert.fail();
		}
		editor1 = either.b();
		editor1.success();
		//ここで初めてSUCCESS
		
		Node node = tree.getRootNode();
		ByteBuffer v = node.getAttributes().get(key);
		System.out.println(new String(v.array()));
		
		editor1 = tree.getTreeEditor();//Treeのeditorを作成
		either = editor1.addNewChildAt(root,0);//新しく入れるところへのパス
		if(either.isA()){//ちゃんとパスを指定できたかチェック
			Assert.fail();
		}
		editor1 = either.b();//成功した場合パスを入れる
		DefaultNodePath childPath = root.add(0);
		//そしてここで子ノードに値を入れる
		for(int count = 0 ; count < 1000 ; count++){
			either = editor1.putAttribute(childPath,key,value);
			if(either.isA()){
			Assert.fail();
			}
			editor1 = either.b();
			either = editor1.success();
		}
	

		node = tree.getRootNode();
		Children<Node> children = node.getChildren();
		Either<Error,Node> either2 = children.at(0);
		if(either2.isA()){
			Assert.fail();
		}
		Node childNode = either2.b();
		ByteBuffer v2 = childNode.getAttributes().get(key);
		System.out.println(new String(v2.array()));
	}
}