view src/test/java/jp/ac/u_ryukyu/ie/cr/JungleTest.java @ 7:cd5f2ba0f894 default tip

modify jungleTest
author tatsuki
date Thu, 01 Dec 2016 16:23:13 +0900
parents 44465893e8b8
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr;

import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle;
import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree;
import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.persistent.NullJournal;
import jp.ac.u_ryukyu.ie.cr.jungle.query.AllNodeIterator;
import jp.ac.u_ryukyu.ie.cr.jungle.store.NodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
import jp.ac.u_ryukyu.ie.cr.jungle.traverser.InterfaceTraverser;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
import junit.framework.Assert;
import org.junit.Test;

import java.nio.ByteBuffer;
import java.util.Iterator;

/**
 * Created by e135768K on 2016/11/29.
 */
public class JungleTest {

    public static Jungle jungle;
    public static DefaultNodePath root = new DefaultNodePath();

    @Test
    public void GetTest() {
        jungle = new DefaultJungle(new NullJournal(), "Labo", new DefaultTreeEditor(new DefaultTraverser()));
        jungle.createNewTree("User");
        JungleTree tree = jungle.getTreeByName("User");
        // Insert
        JungleTreeEditor editor = tree.getTreeEditor();

        editor = put(editor, root, "Name", "Kono");
        editor = put(editor, root, "Age", "40");
        editor = put(editor, root, "Type", "Teacher");

        editor = addNewChild(editor, root, 0);
        NodePath path = root.add(0);
        editor = put(editor, path, "Name", "kanagwa");
        editor = put(editor, path, "Age", "24");
        editor = put(editor, path, "Type", "Teacher");

        editor = addNewChild(editor,path,0);
        editor = put(editor, path.add(0), "Name", "Takeda");
        editor = put(editor, path.add(0), "Age", "20");
        editor = put(editor, path.add(0), "Type", "Student");

        editor = addNewChild(editor,path,1);
        editor = put(editor, path.add(1), "Name", "Miyagi");
        editor = put(editor, path.add(1), "Age", "22");
        editor = put(editor, path.add(1), "Type", "Student");

        editor = addNewChild(editor,path,2);
        editor = put(editor, path.add(2), "Name", "Higashi");
        editor = put(editor, path.add(2), "Age", "20");
        editor = put(editor, path.add(2), "Type", "Student");

        editor = addNewChild(editor,root,1);
        path = root.add(1);
        editor = put(editor, path, "Name", "atton");
        editor = put(editor, path, "Age", "24");
        editor = put(editor, path, "Type", "Teacher");


        editor = addNewChild(editor,path ,0);
        path = path.add(0);
        editor = put(editor, path, "Name", "parusu");
        editor = put(editor, path, "Age", "23");
        editor = put(editor, path, "Type", "Student");

        path = new DefaultNodePath().add(0);

        Either<Error, JungleTreeEditor> either = editor.success();
        if (either.isA())
            Assert.fail();

        tree = jungle.getTreeByName("User");
        InterfaceTraverser traverser = tree.getTraverser(false);
        Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> {
            String value = node.getAttributes().getString("Name");
            if (value == null)
                return false;
            if (value.equals("Kono"))
                return true;
            return false;
        }, "Type", "Teacher");

        while (iterator.hasNext()) {
            TreeNode node = iterator.next();
            AllNodeIterator nodeIterator = new AllNodeIterator(node);
            while (nodeIterator.hasNext()) {
                System.out.println(nodeIterator.next().getAttributes().getString("Name"));
            }
        }
    }

    private JungleTreeEditor addNewChild(JungleTreeEditor editor, NodePath path, int i) {
        return editor.addNewChildAt(path,i).b();
    }

    public JungleTreeEditor put(JungleTreeEditor editor, NodePath path, String key, String value) {
        return editor.putAttribute(path, key, ByteBuffer.wrap(value.getBytes())).b();
    }

    public ByteBuffer get(String treeName, NodePath path, String key) {
        JungleTree tree = jungle.getTreeByName(treeName);
        Either<Error, TreeNode> e = tree.getNodeOfPath(path);
        if (e.isA())
            Assert.fail();
        TreeNode node = e.b();
        return node.getAttributes().get(key);
    }

}