view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/DefaultTreeNode.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.jungle.transaction;


import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List;
import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNodeChildren;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.TreeMap;

import java.nio.ByteBuffer;
import java.rmi.dgc.VMID;

public class DefaultTreeNode implements TreeNode {
    private List<TreeNode> children;
    private TreeMap<String, ByteBuffer> attrs;
    final String nodeId = new VMID().toString();

    private static final List<TreeNode> NIL_LIST = new List<>();

    public DefaultTreeNode() {
        this(NIL_LIST, new TreeMap<>());
    }

    public DefaultTreeNode(List<TreeNode> _children, TreeMap<String, ByteBuffer> _attrs) {
        attrs = _attrs;
        children = _children;
    }

    @Override
    public DefaultTreeNodeChildren getChildren() {
        return new DefaultTreeNodeChildren(children, attrs);
    }

    @Override
    public DefaultTreeNodeAttribute getAttributes() {
        return new DefaultTreeNodeAttribute(children, attrs);
    }

    @Override
    public DefaultTreeNode createNewNode() {
        return new DefaultTreeNode();
    }

    public DefaultTreeNode clone() {
        return new DefaultTreeNode(children, attrs);
    }

    @Override
    public Either<Error, TreeNode> appendRootNode() {
        TreeNodeChildren newRootChildren = new DefaultTreeNodeChildren(NIL_LIST, new TreeMap<>());
        Either<jp.ac.u_ryukyu.ie.cr.jungle.util.Error, TreeNode> either = newRootChildren.addNewChildAt(0,this);
        return either;
    }

    @Override
    public int compareTo(TreeNode o) {
        return this.hashCode() - o.hashCode();
    }
}