# HG changeset patch # User tatsuki # Date 1485411805 -32400 # Node ID 201cc75a9984936d96811ea4a77e071cbed7c207 # Parent 67c330ef2472a4eee7595f126177eeeb2c695c1e change Red Black Tree Edit Path Extends diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleBenchMark.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleBenchMark.java Thu Jan 26 15:23:25 2017 +0900 @@ -7,7 +7,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNodeAttributes; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import java.nio.ByteBuffer; @@ -19,7 +18,7 @@ */ public class JungleBenchMark { public static void main(String args[]) { - DefaultJungle jungle = new DefaultJungle(null, "sample", new DefaultTraverser()); + DefaultJungle jungle = new DefaultJungle(null, "sample"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java Thu Jan 26 15:23:25 2017 +0900 @@ -6,7 +6,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; /** @@ -27,7 +26,7 @@ String key = "key"; String indexKey = "indexKey"; - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); for (int i = 100; i <= 100000;) { Long t1 = System.currentTimeMillis(); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java Thu Jan 26 15:23:25 2017 +0900 @@ -5,7 +5,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -15,7 +14,7 @@ public class CreateListTreeBenchMark { public static void main(String args[]) { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); if (args.length == 0) { System.out.println("args default or difference"); System.exit(0); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/DefaultJungle.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/DefaultJungle.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/DefaultJungle.java Thu Jan 26 15:23:25 2017 +0900 @@ -7,7 +7,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.persistent.NullJournal; import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.DifferentialInterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.InterfaceTraverser; -import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.RedBlackTreeTraverser; +import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.RedBlackTreeInterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.store.TreeContext; import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.DefaultTreeOperationLog; import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.TreeOperationLog; @@ -26,6 +26,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.redBlackTree.EmptyTreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.DefaultInterfaceTraverser; +import jp.ac.u_ryukyu.ie.cr.jungle.traverser.RedBlackTreeTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.DefaultJungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.tree.DifferenceListJungleTree; @@ -47,7 +48,7 @@ private TreeEditor redBlackTreeEditor; public static void main(String args[]) { - DefaultJungle j = new DefaultJungle(null, "hoge", new DefaultTraverser()); + DefaultJungle j = new DefaultJungle(null, "hoge"); JungleTree t = j.createNewTree("fuga"); JungleTreeEditor e1 = t.getJungleTreeEditor(); @@ -61,13 +62,15 @@ e1.success(); } - public DefaultJungle(Journal journal, String uuid, Traverser traverser) { + public DefaultJungle(Journal journal, String uuid) { this.journal = new NullJournal(); this.trees = new ConcurrentHashMap(); this.uuid = uuid; - this.treeEditor = new DefaultTreeEditor(traverser); - this.differenceEditor = new DifferenceTreeEditor(traverser); - this.redBlackTreeEditor = new RedBlackTreeEditor(traverser); + Traverser defaultTraverser = new DefaultTraverser(); + Traverser redBlackTreeTraverser = new RedBlackTreeTraverser(); + this.treeEditor = new DefaultTreeEditor(defaultTraverser); + this.differenceEditor = new DifferenceTreeEditor(defaultTraverser); + this.redBlackTreeEditor = new RedBlackTreeEditor(redBlackTreeTraverser); } @Override @@ -181,7 +184,7 @@ }; TreeNode rootNode = new EmptyTreeNode(); - InterfaceTraverser traverser = new RedBlackTreeTraverser(rootNode); + InterfaceTraverser traverser = new RedBlackTreeInterfaceTraverser(rootNode); TreeContext tc = new DefaultTreeContext(rootNode, null, list, uuid, treeName, 0, traverser); JungleTree newTree = new RedBlackJungleTree(tc, uuid, journal.getWriter(), redBlackTreeEditor, balanceKey); if (trees.putIfAbsent(treeName, newTree) != null) { diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/commandline/commandline.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/commandline/commandline.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/commandline/commandline.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.omnigraffle.OmniGraffleCreater; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; @@ -67,7 +66,7 @@ */ public class commandline { - Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hoge"); public void start() throws IOException, InterruptedException { System.out.println("jungle 対話モード"); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/core/App.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/core/App.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/core/App.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,9 +2,8 @@ import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -19,7 +18,7 @@ { public static void main( String[] args ) { - DefaultJungle jungle = new DefaultJungle(null,"sample",new DefaultTraverser()); + DefaultJungle jungle = new DefaultJungle(null,"sample"); jungle.createNewTree("hoge"); JungleTree tree = jungle.getTreeByName("hoge"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/query/traverser/RedBlackTreeInterfaceTraverser.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/query/traverser/RedBlackTreeInterfaceTraverser.java Thu Jan 26 15:23:25 2017 +0900 @@ -0,0 +1,137 @@ +package jp.ac.u_ryukyu.ie.cr.jungle.query.traverser; + +import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; +import jp.ac.u_ryukyu.ie.cr.jungle.query.Query; +import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.nodeiterator.DefaultNodeIterator; +import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.nodeiterator.RedBlackTreeNodeIterator; +import jp.ac.u_ryukyu.ie.cr.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.jungle.store.index.ParentIndex; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; + +import java.util.Iterator; + + +public class RedBlackTreeInterfaceTraverser implements InterfaceTraverser { + private TreeNode root; + + public RedBlackTreeInterfaceTraverser(TreeNode root) { + this.root = root; + } + + @Override + public Index getIndex() { + return null; //使わない 赤黒木は自身がIndexなので、特別なIndexは無い + } + + @Override + public ParentIndex getParentIndex() { + return null; // 上に同じ、回転処理で構造が変わるため、自身の木構造でデータを表現しない、つまり親を知る必要はない + } + + @Override + public void createIndex() { // 上に同じ Indexを張る必要はない + } + + @Override + public void updateIndex(List editedNodeList) { //上に同じ + + } + + @Override + public void updateIndex(TreeNode subTreeRoot) { //上に同じ + + } + + @Override + public Iterator find(Query query) { //balanceKeyを使わない場合全探索なのでDefaultInterfaceTraverserと変わらない + Iterator nodeIterator = new DefaultNodeIterator(root); + TreeNode firstMatchNode = null; + for (; nodeIterator.hasNext(); ) { + firstMatchNode = nextmatch(nodeIterator.next(), query); + if (firstMatchNode != null) + break; + } + + final TreeNode finalFirstMatchNode = firstMatchNode; + + return new Iterator() { + + TreeNode matchNode = finalFirstMatchNode; + + @Override + public boolean hasNext() { + if (matchNode == null) { + return false; + } + return true; + } + + @Override + public TreeNode next() { + TreeNode currentPair = matchNode; + for (; nodeIterator.hasNext(); ) { + matchNode = nextmatch(nodeIterator.next(), query); + if (matchNode != null) + return currentPair; + } + matchNode = null; + return currentPair; + } + + @Override + public void remove() { + } + + }; + } + + @Override + public Iterator find(Query query, String key, String searchValue) { + Iterator nodeIterator = new RedBlackTreeNodeIterator(root,key,searchValue); + TreeNode firstMatchNode = null; + for (; nodeIterator.hasNext(); ) { + firstMatchNode = nextmatch(nodeIterator.next(), query); + if (firstMatchNode != null) + break; + } + + final TreeNode finalFirstMatchNode = firstMatchNode; + + return new Iterator() { + + TreeNode matchNode = finalFirstMatchNode; + + @Override + public boolean hasNext() { + if (matchNode == null) { + return false; + } + return true; + } + + @Override + public TreeNode next() { + TreeNode currentPair = matchNode; + for (; nodeIterator.hasNext(); ) { + matchNode = nextmatch(nodeIterator.next(), query); + if (matchNode != null) + return currentPair; + } + matchNode = null; + return currentPair; + } + + @Override + public void remove() { + } + + }; + } + + private TreeNode nextmatch(TreeNode node, Query query) { + if (query.condition(node)) + return node; + return null; + } +} + diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/query/traverser/RedBlackTreeTraverser.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/query/traverser/RedBlackTreeTraverser.java Thu Jan 26 03:44:21 2017 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.query.traverser; - -import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; -import jp.ac.u_ryukyu.ie.cr.jungle.query.Query; -import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.nodeiterator.DefaultNodeIterator; -import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.nodeiterator.RedBlackTreeNodeIterator; -import jp.ac.u_ryukyu.ie.cr.jungle.store.index.Index; -import jp.ac.u_ryukyu.ie.cr.jungle.store.index.ParentIndex; -import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; - -import java.util.Iterator; - - -public class RedBlackTreeTraverser implements InterfaceTraverser { - private TreeNode root; - - public RedBlackTreeTraverser(TreeNode root) { - this.root = root; - } - - @Override - public Index getIndex() { - return null; //使わない 赤黒木は自身がIndexなので、特別なIndexは無い - } - - @Override - public ParentIndex getParentIndex() { - return null; // 上に同じ、回転処理で構造が変わるため、自身の木構造でデータを表現しない、つまり親を知る必要はない - } - - @Override - public void createIndex() { // 上に同じ Indexを張る必要はない - } - - @Override - public void updateIndex(List editedNodeList) { //上に同じ - - } - - @Override - public void updateIndex(TreeNode subTreeRoot) { //上に同じ - - } - - @Override - public Iterator find(Query query) { //balanceKeyを使わない場合全探索なのでDefaultInterfaceTraverserと変わらない - Iterator nodeIterator = new DefaultNodeIterator(root); - TreeNode firstMatchNode = null; - for (; nodeIterator.hasNext(); ) { - firstMatchNode = nextmatch(nodeIterator.next(), query); - if (firstMatchNode != null) - break; - } - - final TreeNode finalFirstMatchNode = firstMatchNode; - - return new Iterator() { - - TreeNode matchNode = finalFirstMatchNode; - - @Override - public boolean hasNext() { - if (matchNode == null) { - return false; - } - return true; - } - - @Override - public TreeNode next() { - TreeNode currentPair = matchNode; - for (; nodeIterator.hasNext(); ) { - matchNode = nextmatch(nodeIterator.next(), query); - if (matchNode != null) - return currentPair; - } - matchNode = null; - return currentPair; - } - - @Override - public void remove() { - } - - }; - } - - @Override - public Iterator find(Query query, String key, String searchValue) { - Iterator nodeIterator = new RedBlackTreeNodeIterator(root,key,searchValue); - TreeNode firstMatchNode = null; - for (; nodeIterator.hasNext(); ) { - firstMatchNode = nextmatch(nodeIterator.next(), query); - if (firstMatchNode != null) - break; - } - - final TreeNode finalFirstMatchNode = firstMatchNode; - - return new Iterator() { - - TreeNode matchNode = finalFirstMatchNode; - - @Override - public boolean hasNext() { - if (matchNode == null) { - return false; - } - return true; - } - - @Override - public TreeNode next() { - TreeNode currentPair = matchNode; - for (; nodeIterator.hasNext(); ) { - matchNode = nextmatch(nodeIterator.next(), query); - if (matchNode != null) - return currentPair; - } - matchNode = null; - return currentPair; - } - - @Override - public void remove() { - } - - }; - } - - private TreeNode nextmatch(TreeNode node, Query query) { - if (query.condition(node)) - return node; - return null; - } -} - diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/logger/LoggingChildren.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/logger/LoggingChildren.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/logger/LoggingChildren.java Thu Jan 26 15:23:25 2017 +0900 @@ -75,4 +75,5 @@ LoggingNode logNode = new LoggingNode(node); return DefaultEither.newB(logNode); } + } diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/DefaultNodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/DefaultNodePath.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/DefaultNodePath.java Thu Jan 26 15:23:25 2017 +0900 @@ -4,6 +4,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair; import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; +import java.nio.ByteBuffer; import java.util.Iterator; public class DefaultNodePath implements NodePath { @@ -112,8 +113,13 @@ } @Override - public String getValue() { + public ByteBuffer getValue() { return null; } + @Override + public PathType getPathType() { + return PathType.Default; + } + } diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/NodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/NodePath.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/NodePath.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,6 +2,8 @@ import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair; +import java.nio.ByteBuffer; + public interface NodePath extends Iterable { public int get(int index); @@ -12,5 +14,6 @@ public Pair last(); public NodePath addHead(int pos); public String getKey(); - public String getValue(); + public ByteBuffer getValue(); + public PathType getPathType(); } diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/PathType.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/PathType.java Thu Jan 26 15:23:25 2017 +0900 @@ -0,0 +1,5 @@ +package jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath; + +public enum PathType { + Default,RedBlack +} diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/RedBlackTreeNodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/RedBlackTreeNodePath.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/RedBlackTreeNodePath.java Thu Jan 26 15:23:25 2017 +0900 @@ -4,18 +4,37 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.NulIterator; import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair; +import java.nio.ByteBuffer; import java.util.Iterator; public class RedBlackTreeNodePath implements NodePath { private final String key; - private final String value; + private final ByteBuffer value; + /** + * traverserを使うかどうかのフラグ + * -2だった場合Traverserを使わない + * 主にノードの追加、削除等回転処理が行われる処理の場合に使う + *

+ * それ以外の値だった場合Traverserを使う + * Attribute関係とか + * intの理由はgetで受け取れるから + *

+ * flagはaddでセットする + * ココらへんは後でちゃんと直す + */ + private int flags; - private RedBlackTreeNodePath(String key,String value) { + public RedBlackTreeNodePath(String key, ByteBuffer value) { this.key = key; this.value = value; } + private RedBlackTreeNodePath(String key, ByteBuffer value, int flags) { + this.key = key; + this.value = value; + this.flags = flags; + } @Override public String getKey() { @@ -23,10 +42,15 @@ } @Override - public String getValue() { + public ByteBuffer getValue() { return value; } + @Override + public PathType getPathType() { + return PathType.RedBlack; + } + //以下使わない @Override public Iterator iterator() { @@ -35,12 +59,12 @@ @Override public int get(int index) { - return -2; + return flags; } @Override public NodePath add(int pos) { - return null; + return new RedBlackTreeNodePath(key, value, pos); } @Override @@ -60,7 +84,7 @@ @Override public String toString() { - return key + value ; + return key + value; } @Override diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/omnigraffle/App.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/omnigraffle/App.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/omnigraffle/App.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,7 +2,6 @@ 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.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.xml.reader.XmlReader; import org.xml.sax.SAXException; @@ -17,7 +16,7 @@ public static void main(String args[]) throws IOException, SAXException, ParserConfigurationException, URISyntaxException, TransformerException { - Jungle jungle = new DefaultJungle(null, "hoge",new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hoge"); JungleTree tree = jungle.createNewTree("tree"); if (tree == null) tree = jungle.getTreeByName("tree"); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DefaultJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DefaultJungleTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DefaultJungleTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -93,11 +93,6 @@ } @Override - public Either deleteChildAt(NodePath path, int pos, String Key, ByteBuffer value) { - return null; //未実装 - } - - @Override public Either putAttribute(NodePath _path, String _key, ByteBuffer _value) { PutAttribute putAttribute = new PutAttribute(_key, _value); return _edit(_path, putAttribute); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DifferenceJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DifferenceJungleTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/DifferenceJungleTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -108,10 +108,6 @@ return _edit(_path, deleteChildAt); } - @Override - public Either deleteChildAt(NodePath path, int pos, String Key, ByteBuffer value) { - return null; //未実装 - } @Override public Either putAttribute(NodePath _path, String _key, ByteBuffer _value) { diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/JungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/JungleTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/JungleTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -15,8 +15,6 @@ public Either deleteChildAt(NodePath path, int pos); - public Either deleteChildAt(NodePath path, int pos, String Key, ByteBuffer value); - public Either putAttribute(NodePath path, String key, ByteBuffer value); public Either deleteAttribute(NodePath path, String key); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/RedBlackJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/RedBlackJungleTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/jungleTreeEditor/RedBlackJungleTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -7,6 +7,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.TreeOperationLog; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.PathType; import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.DefaultTreeOperation; import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.NodeOperation; import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.TreeOperation; @@ -95,26 +96,23 @@ @Override public Either deleteChildAt(NodePath path, int pos) { - // RedBlackTreeDeleteChildAt deleteChildAt = new RedBlackTreeDeleteChildAt(pos, path); 未実装 - // NodePath dummyPath = new DefaultNodePath(-2); - return null;//_edit(dummyPath, deleteChildAt); + String key = path.getKey(); + if (!key.equals(balanceKey)) + return DefaultEither.newA(INVALID_ARGUMENT); + ByteBuffer value = path.getValue(); + RedBlackTreeDeleteChildAt deleteChildAt = new RedBlackTreeDeleteChildAt(key, value); + return _edit(path, deleteChildAt); } @Override - public Either deleteChildAt(NodePath path, int pos, String key, ByteBuffer value) { - if (!key.equals(balanceKey)) + public Either putAttribute(NodePath path, String key, ByteBuffer value) { + if (key.equals(balanceKey)) return DefaultEither.newA(INVALID_ARGUMENT); - path = new DefaultNodePath(-2); //dummyのPathを作る これはtraverserを避けるために使う - RedBlackTreeDeleteChildAt deleteChildAt = new RedBlackTreeDeleteChildAt(key, value); - return edit(path, deleteChildAt); //未実装 - } - - @Override - public Either putAttribute(NodePath _path, String _key, ByteBuffer _value) { - if (_key.equals(balanceKey)) + if (path.getPathType() != PathType.RedBlack) return DefaultEither.newA(INVALID_ARGUMENT); - PutAttribute putAttribute = new PutAttribute(_key, _value); - return _edit(_path, putAttribute); + NodeEditor editor = new PutAttribute(key, value); + NodePath newParh = path.add(-1); //回転処理を行わないで木の複製を行う設定のPathに変えている… ダサい… + return _edit(newParh, editor); } @Override diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/treeEditor/RedBlackTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/treeEditor/RedBlackTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/editor/treeEditor/RedBlackTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -26,7 +26,7 @@ public Either edit(TreeNode root, NodePath path, NodeEditor editor) { if (path.get(0) == -2) return redBlackTreeNodeEdit(root, editor); - Evaluator e = new DefaultEvaluator(path); + Evaluator e = new RedBlackTreeEvaluator(path); Either traverseEither = traverser.traverse(root, e); if (traverseEither.isA()) { return DefaultEither.newA(traverseEither.a()); @@ -42,6 +42,8 @@ return clone(newWrap, traversal, editor); } + + private Either redBlackTreeNodeEdit(TreeNode root, NodeEditor editor) { return editor.edit(root); } diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/RedBlackTreeTransactionManager.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/RedBlackTreeTransactionManager.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/RedBlackTreeTransactionManager.java Thu Jan 26 15:23:25 2017 +0900 @@ -4,7 +4,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListWriter; import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.InterfaceTraverser; -import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.RedBlackTreeTraverser; +import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.RedBlackTreeInterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.store.TreeContext; import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.TreeOperationLog; import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.TreeOperation; @@ -61,7 +61,7 @@ }; - InterfaceTraverser traverser = new RedBlackTreeTraverser(newRoot); + InterfaceTraverser traverser = new RedBlackTreeInterfaceTraverser(newRoot); TreeContext newTreeContext = new DefaultTreeContext(newRoot, tip, list, uuid, _treeName, nextRevision, traverser); if (repository.compareAndSet(newTreeContext.prev(), newTreeContext)) { diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/RedBlackTreeEvaluator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/RedBlackTreeEvaluator.java Thu Jan 26 15:23:25 2017 +0900 @@ -0,0 +1,42 @@ +package jp.ac.u_ryukyu.ie.cr.jungle.traverser; + +import jp.ac.u_ryukyu.ie.cr.jungle.core.Attributes; +import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; + +/** + * Created by e115731 on 2017/01/26. + */ +public class RedBlackTreeEvaluator implements Evaluator { + private final String key; + private final long v1; + + public RedBlackTreeEvaluator(NodePath path) { + this.key = path.getKey(); + this.v1 = path.getValue().hashCode(); + } + + public RedBlackTreeEvaluator(String key, long searchValueHash) { + this.key = key; + this.v1 = searchValueHash; + } + + @Override + public Evaluation evaluate(TreeNode current, int pos) { + Attributes attribute = current.getAttributes(); + long value = attribute.get(key).hashCode(); + Result result = null; + Evaluator nextEvaluator = null; + + if (value - v1 < 0) { + result = Result.LEFT; + nextEvaluator = new RedBlackTreeEvaluator(key, v1); + } else if (value - v1 > 0) { + result = Result.RIGHT; + nextEvaluator = new RedBlackTreeEvaluator(key, v1); + } else { + return new DefaultEvaluation(Result.GOAL, null); + } + return new DefaultEvaluation(result, nextEvaluator); + } +} \ No newline at end of file diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/RedBlackTreeTraverser.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/RedBlackTreeTraverser.java Thu Jan 26 15:23:25 2017 +0900 @@ -0,0 +1,128 @@ +package jp.ac.u_ryukyu.ie.cr.jungle.traverser; + +import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; +import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; +import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither; +import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; + +import java.util.Iterator; + +public class RedBlackTreeTraverser implements Traverser { + @Override + public Either traverse(final TreeNode root, Evaluator evaluator) { + Either>> ret = _traverse(root, evaluator, -1); + + if (ret.isA()) { + return DefaultEither.newA(ret.a()); + } + + List> list = ret.b(); + + final Iterable> iterable = list; + final TreeNode destination = ret.b().head().getTarget(); + + Traversal traversal = new Traversal() { + @Override + public Iterator> iterator() { + return iterable.iterator(); + } + + @Override + public TreeNode destination() { + return destination; + } + }; + + return DefaultEither.newB(traversal); + } + + private Either>> _traverse(TreeNode currentNode, Evaluator _evaluator, int pos) { + Evaluation e = _evaluator.evaluate(currentNode, pos); + Result r = e.result(); + if (r == Result.LEFT) { + return left(currentNode, pos, e.evaluator()); + } + + if (r == Result.RIGHT) { + return right(currentNode, pos, e.evaluator()); + } + + if (r == Result.GOAL) { + return DefaultEither.newB(_goal(currentNode, pos)); + } + + + return DefaultEither.newA(TraverserError.UNDEFINED_OPERATOR); + } + + private List> _goal(final TreeNode _current, final int _pos) { + Direction d = new Direction() { + @Override + public int getPosition() { + return _pos; + } + + @Override + public TreeNode getTarget() { + return _current; + } + }; + + List> list = new List(); + List> newList = list.addLast(d); + + return newList; + } + + private Either>> left(final T _current, final int _pos, Evaluator _evaluator) { + Children children = _current.getChildren(); + TreeNode child = children.at(0).b(); + Either>> either = _traverse(child, _evaluator, 0); + if (either.isA()) { + return either; + } + + List> list = either.b(); + Direction d = new Direction() { + @Override + public int getPosition() { + return _pos; + } + + @Override + public T getTarget() { + return _current; + } + }; + + List> newList = list.addLast(d); + return DefaultEither.newB(newList); + } + + private Either>> right(final T _current, final int _pos, Evaluator _evaluator) { + Children children = _current.getChildren(); + TreeNode child = children.at(1).b(); + Either>> either = _traverse(_current, _evaluator, 1); + if (either.isA()) { + return either; + } + + List> list = either.b(); + Direction d = new Direction() { + @Override + public int getPosition() { + return _pos; + } + + @Override + public T getTarget() { + return _current; + } + }; + + List> newList = list.addLast(d); + return DefaultEither.newB(newList); + } +} diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/Result.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/Result.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/traverser/Result.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,6 +8,9 @@ public static final Result BREAK = new Result("BREAK"); public static final Result GOAL = new Result("GOAL"); public static final Result SPECIAL = new Result("SPECIAL"); + public static final Result LEFT = new Result("LEFT"); + public static final Result RIGHT = new Result("RIGHT"); + private final String name; private Result(String _name) diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/xml/reader/XmlReader.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/xml/reader/XmlReader.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/xml/reader/XmlReader.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,7 +2,6 @@ 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.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import javax.xml.parsers.SAXParser; @@ -13,7 +12,7 @@ public class XmlReader { public static void main(String args[]) { String xmlPath = args[0]; - Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hoge"); JungleTree tree = jungle.createNewTree("XMLTEST"); new XmlReader().start(xmlPath,tree); } diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/operations/NetworkNodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/operations/NetworkNodePath.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/operations/NetworkNodePath.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,9 +2,11 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.PathType; import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair; import org.msgpack.annotation.Message; +import java.nio.ByteBuffer; import java.util.Iterator; import java.util.LinkedList; @@ -97,7 +99,12 @@ } @Override - public String getValue() { + public ByteBuffer getValue() { return null; } + + @Override + public PathType getPathType() { + return PathType.Default; + } } diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/persistent/PersistentJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/persistent/PersistentJungleTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/persistent/PersistentJungleTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -91,11 +91,6 @@ } @Override - public Either deleteChildAt(NodePath path, int pos, String Key, ByteBuffer value) { - return null; //未実装 - } - - @Override public Either moveChild(NodePath path,int childNum, String move) { MoveChild movechild = new MoveChild(move, childNum); return _edit(path,movechild); diff -r 67c330ef2472 -r 201cc75a9984 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/NetworkDefaultJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/NetworkDefaultJungleTreeEditor.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/NetworkDefaultJungleTreeEditor.java Thu Jan 26 15:23:25 2017 +0900 @@ -113,10 +113,6 @@ return _edit(_path,deleteChildAt); } - @Override - public Either deleteChildAt(NodePath path, int pos, String Key, ByteBuffer value) { - return null; //未実装 - } @Override public Either putAttribute(NodePath _path,String _key,ByteBuffer _value) diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/GetNodeOfPathTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/GetNodeOfPathTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/GetNodeOfPathTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -6,7 +6,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import junit.framework.Assert; import org.junit.Test; @@ -18,7 +17,7 @@ @Test public void getNodeOfPathTest() { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/GetOldTreeTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/GetOldTreeTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/GetOldTreeTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -4,9 +4,8 @@ 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.store.nodepath.DefaultNodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -19,7 +18,7 @@ @Test public void getOldTreeTest() { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/nodeeditor/AppendChildAndPutAttributeTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/nodeeditor/AppendChildAndPutAttributeTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/nodeeditor/AppendChildAndPutAttributeTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -23,7 +22,7 @@ public class AppendChildAndPutAttributeTest { @Test public void AppendChildAndPutAttribute() { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/nodeeditor/ReplaceRootNodeAt.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/nodeeditor/ReplaceRootNodeAt.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/nodeeditor/ReplaceRootNodeAt.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,9 +2,8 @@ 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.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -15,7 +14,7 @@ @Test public void ReplaceRootNodeAtTest() { - Jungle jungle = new DefaultJungle(null, "hogehoge",new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/DifferencialJungleTreeEditorTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/DifferencialJungleTreeEditorTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/DifferencialJungleTreeEditorTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNodeAttributes; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNodeChildren; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -23,7 +22,7 @@ public class DifferencialJungleTreeEditorTest { @Test public void DefaultJungleTreeEditorTests() { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewDifferenceTree("df"); JungleTreeEditor editor = tree.getJungleTreeEditor(); NodePath path = new DefaultNodePath(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/MultiDifferencialJngleTreeEditorTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/MultiDifferencialJngleTreeEditorTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/MultiDifferencialJngleTreeEditorTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -5,7 +5,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -21,7 +20,7 @@ public class MultiDifferencialJngleTreeEditorTest { @Test public void MultiDifferencialJngleTreeEditorTests() throws InterruptedException { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewDifferenceTree("df"); Thread t1 = new EditorThread(tree); Thread t2 = new EditorThread(tree); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/RedBlack/RedBlackTreeEditorAttributeTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/RedBlack/RedBlackTreeEditorAttributeTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/RedBlack/RedBlackTreeEditorAttributeTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,11 +2,13 @@ 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.core.Attributes; +import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.RedBlackTreeNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -14,13 +16,15 @@ import org.junit.Test; import java.nio.ByteBuffer; +import java.util.Iterator; public class RedBlackTreeEditorAttributeTest { @Test public void RedBlackTreeEditorAttribute(){ String balanceKey = "balanceKey"; String key = "key"; - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + ByteBuffer testPutValue = ByteBuffer.wrap("test".getBytes()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewRedBlackTree("TreeName", "balanceKey"); NodePath path = new DefaultNodePath(); @@ -36,8 +40,8 @@ JungleTreeEditor editor = tree.getJungleTreeEditor(); path = path.add(1); - ByteBuffer value = ByteBuffer.wrap(path.toString().getBytes()); - Either either = editor.putAttribute(path, key, value); + NodePath rbtPath = new RedBlackTreeNodePath(balanceKey,ByteBuffer.wrap(("value6".getBytes()))); + Either either = editor.putAttribute(rbtPath, key, testPutValue); Assert.assertFalse(either.isA()); //AttributeのPutが成功したかどうか調べる editor = either.b(); either = editor.success(); @@ -46,26 +50,47 @@ JungleTree oldTree = tree.getOldTree(tree.revision() - 1).b(); TreeNode oldRoot = oldTree.getRootNode(); TreeNode attributePutedTreeRoot = tree.getRootNode(); - Assert.assertNotEquals(attributePutedTreeRoot,oldRoot);// とりあえずルートがちゃんと入れ替えられているかを調べる + Assert.assertNotEquals(attributePutedTreeRoot,oldRoot);//// とりあえずルートがちゃんと入れ替えられているかを調べる + + TreeNode editedNode = tree.getNodeOfPath(path).b(); - TreeNode editedOldNode = oldTree.getNodeOfPath(path).b(); - String putValue = editedNode.getAttributes().getString(key);//編集したノードからputしたAttributeを取得 - Assert.assertEquals(putValue,path.toString()); - ByteBuffer nullValue = editedOldNode.getAttributes().get(key);//編集前のノードから値を取得 nullが取れる - Assert.assertNull(nullValue); + InterfaceTraverser traverser = tree.getTraverser(true); + Iterator nodeIterator = traverser.find((TreeNode n) -> { + Attributes attributes = n.getAttributes(); + ByteBuffer v = attributes.get(key); + return v != null && v.equals(testPutValue); + },balanceKey,"value6"); + Assert.assertTrue(nodeIterator.hasNext());//PutAttributeの成功を確認 + + + InterfaceTraverser oldTreeTraverser = oldTree.getTraverser(true); + nodeIterator = oldTreeTraverser.find((TreeNode n) -> { + Attributes attributes = n.getAttributes(); + ByteBuffer v = attributes.get(key); + return v != null && v.equals(testPutValue); + },balanceKey,"value6"); + Assert.assertFalse(nodeIterator.hasNext());//過去の木に値が入っていないことを確認 + + + ByteBuffer oldRootValue = oldRoot.getAttributes().get(balanceKey); ByteBuffer newRootValue = attributePutedTreeRoot.getAttributes().get(balanceKey);//rootとかがちゃんと複製されているかを調べる Assert.assertEquals(oldRootValue,newRootValue); editor = tree.getJungleTreeEditor(); - either = editor.deleteAttribute(path,key); + either = editor.deleteAttribute(rbtPath,key); Assert.assertFalse(either.isA()); //Attributeのdeleteが成功したかどうか調べる editor = either.b(); either = editor.success(); Assert.assertFalse(either.isA()); - TreeNode AttributeDeletedNode = tree.getNodeOfPath(path).b();//Attributeがちゃんと削除できたかを調べる - nullValue = AttributeDeletedNode.getAttributes().get(key); - Assert.assertNull(nullValue); + + InterfaceTraverser valueDeletedTraverser = tree.getTraverser(true); + nodeIterator = valueDeletedTraverser.find((TreeNode n) -> { + Attributes attributes = n.getAttributes(); + ByteBuffer v = attributes.get(key); + return v != null && v.equals(testPutValue); + },balanceKey,"value6"); + Assert.assertFalse(nodeIterator.hasNext());//Attributeがちゃんと削除できたかを調べる } } diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/RedBlack/RedBlackTreeEditorNodeTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/RedBlack/RedBlackTreeEditorNodeTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/RedBlack/RedBlackTreeEditorNodeTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -6,10 +6,10 @@ import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.nodeiterator.DefaultNodeIterator; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; +import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.RedBlackTreeNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.redBlackTree.ColorlessTreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -23,12 +23,12 @@ public class RedBlackTreeEditorNodeTest { - int testCount = 1000; + int testCount = 10; @Test public void RedBlackTreeEditorNode() { String key = "balanceKey"; - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewRedBlackTree("TreeName", "balanceKey"); NodePath path = new DefaultNodePath(); @@ -71,7 +71,8 @@ for (int count = 1; count <= testCount; count++) { JungleTreeEditor editor = tree.getJungleTreeEditor(); ByteBuffer value = ByteBuffer.wrap(("value" + count).getBytes()); - Either either = editor.deleteChildAt(path, 0, key, value); + NodePath redBlackTreeNodePath = new RedBlackTreeNodePath(key,value); + Either either = editor.deleteChildAt(redBlackTreeNodePath, 0); Assert.assertFalse(either.isA()); editor = either.b(); either = editor.success(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/defaultnode/GetNodePath.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/defaultnode/GetNodePath.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/defaultnode/GetNodePath.java Thu Jan 26 15:23:25 2017 +0900 @@ -9,7 +9,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Default.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -22,7 +21,7 @@ public class GetNodePath { @Test public void getNodePathTest(){ - Jungle jungle = new DefaultJungle(null, "hogehoge",new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/redblacktreenode/GetKeysTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/redblacktreenode/GetKeysTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/redblacktreenode/GetKeysTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -7,7 +7,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -31,7 +30,7 @@ for (String key : keys) {//keyのListの作成 keyList.add(key); } - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewRedBlackTree("TreeName", "balanceKey"); NodePath path = new DefaultNodePath(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/redblacktreenode/GetfilteringKeyTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/redblacktreenode/GetfilteringKeyTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/redblacktreenode/GetfilteringKeyTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -7,7 +7,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -38,7 +37,7 @@ List filterKeysList = createKeyList(filterKeys); - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewRedBlackTree("TreeName", "balanceKey"); NodePath path = new DefaultNodePath(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/defaultTree/IndexTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/defaultTree/IndexTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/defaultTree/IndexTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -11,7 +11,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNodeAttributes; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -34,7 +33,7 @@ String key = "key"; String indexKey = "indexKey"; String addAttributeKey = "addAttributeKey"; - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/defaultTree/ParentIndexPutTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/defaultTree/ParentIndexPutTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/defaultTree/ParentIndexPutTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -9,7 +9,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -33,7 +32,7 @@ private String addAttributeKey = "addAttributeKey"; @Test public void ParentIndexPut() { - Jungle jungle = new DefaultJungle(null, "hogehoge",new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/difference/IndexTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/difference/IndexTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/difference/IndexTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -10,7 +10,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -28,7 +27,7 @@ @Test public void Index() { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.createNewDifferenceTree("Tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/difference/ParentIndexPutTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/difference/ParentIndexPutTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/index/difference/ParentIndexPutTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -24,7 +23,7 @@ @Test public void ParentIndexPut() { - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); jungle.createNewTree("tree"); JungleTree tree = jungle.createNewDifferenceTree("Tree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/DefaultInterfaceTraverserTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/DefaultInterfaceTraverserTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/DefaultInterfaceTraverserTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -7,7 +7,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import junit.framework.Assert; import org.junit.Test; @@ -22,7 +21,7 @@ public static String indexKey = "INDEXKEY"; @Test public void InterfaseTraverserTest() { - Jungle jungle = new DefaultJungle(new NullJournal(), "hoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(new NullJournal(), "hoge"); jungle.createNewTree("TestTree"); JungleTree tree = jungle.getTreeByName("TestTree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/DifferentialInterfaceTraverserTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/DifferentialInterfaceTraverserTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/DifferentialInterfaceTraverserTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.DifferenceListJungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; @@ -31,7 +30,7 @@ public void DifferentialInterfaceTraverserTests1() { String key = "key"; String indexKey = "indexKey"; - Jungle jungle = new DefaultJungle(new NullJournal(), "hoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(new NullJournal(), "hoge"); List list = Arrays.asList(0,1,2); test(key,indexKey,jungle,list,2); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/RedBlackInterfaceTraverserTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/RedBlackInterfaceTraverserTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/traverse/RedBlackInterfaceTraverserTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -23,7 +22,7 @@ @Test public void RedBlackInterfaceTraverserTests() { - Jungle jungle = new DefaultJungle(new NullJournal(), "hoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(new NullJournal(), "hoge"); jungle.createNewRedBlackTree("RedBlackTree", balanceKey); JungleTree tree = jungle.getTreeByName("RedBlackTree"); JungleTreeEditor editor = tree.getJungleTreeEditor(); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DefaultTree/DefaultJungleTreeTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DefaultTree/DefaultJungleTreeTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DefaultTree/DefaultJungleTreeTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -5,7 +5,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; @@ -16,7 +15,7 @@ public class DefaultJungleTreeTest extends TestCase { public Jungle instance() { - Jungle j = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle j = new DefaultJungle(null, "hogehoge"); return j; } diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DifferencialTree/DifferencialJungleTreeTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DifferencialTree/DifferencialJungleTreeTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DifferencialTree/DifferencialJungleTreeTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -2,7 +2,6 @@ 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.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import org.junit.Assert; import org.junit.Test; @@ -10,7 +9,7 @@ public class DifferencialJungleTreeTest { @Test public void DefferenceTreeTest(){ - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewDifferenceTree("df"); Assert.assertNotNull(tree); tree = jungle.getTreeByName("df"); diff -r 67c330ef2472 -r 201cc75a9984 src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/JungleTreeCreaterTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/JungleTreeCreaterTest.java Thu Jan 26 03:44:21 2017 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/JungleTreeCreaterTest.java Thu Jan 26 15:23:25 2017 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import org.junit.Assert; import org.junit.Test; @@ -18,7 +17,7 @@ public void JungleTreeCreate() { String key = "key"; String indexKey = "indexKey"; - Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); + Jungle jungle = new DefaultJungle(null, "hogehoge"); for (int count = 1; count <= 10; count++) { int maxNodeCount = count * 10; JungleTree tree = jungle.createNewTree("Tree" + count);