# HG changeset patch # User one # Date 1414404299 -32400 # Node ID b998fdc99bc005919da6cca2a3e4f4ed55ef98d5 # Parent 7334f78a92c3c30f14716c0d2af58abd26594545 add NodePathCompare and Test diff -r 7334f78a92c3 -r b998fdc99bc0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/NodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/NodePath.java Mon Oct 27 18:25:32 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/NodePath.java Mon Oct 27 19:04:59 2014 +0900 @@ -9,4 +9,5 @@ public NodePath tail(); public int size(); public Pair last(); + public boolean compare(NodePath path); } diff -r 7334f78a92c3 -r b998fdc99bc0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNodePath.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNodePath.java Mon Oct 27 18:25:32 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNodePath.java Mon Oct 27 19:04:59 2014 +0900 @@ -94,4 +94,19 @@ tail = tail.tail().reverse(); return new DefaultNodePath(tail); } + + @Override + public boolean compare(NodePath targetPath) { + + if (targetPath.size() < path.length()) + return false; + + for (Integer currentNum : path) { + Pair currentTargetPathNumPair = targetPath.pop(); + targetPath = currentTargetPathNumPair.right(); + if (currentNum != currentTargetPathNumPair.left()) + return false; + } + return true; + } } diff -r 7334f78a92c3 -r b998fdc99bc0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/IndexJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/IndexJungleTreeEditor.java Mon Oct 27 18:25:32 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/IndexJungleTreeEditor.java Mon Oct 27 19:04:59 2014 +0900 @@ -25,7 +25,6 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; -import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.index.AddChildrenIndexTest; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.AddNewChildrenIndexEditor; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.DefaultIndexEditor; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.DeleteChildIndexEditor; diff -r 7334f78a92c3 -r b998fdc99bc0 src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/clonable/NodePathCompareTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/clonable/NodePathCompareTest.java Mon Oct 27 19:04:59 2014 +0900 @@ -0,0 +1,30 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.impl.clonable; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; +import junit.framework.Assert; + +import org.junit.Test; + +public class NodePathCompareTest { + + @Test + public void NodePathCompare(){ + NodePath path = new DefaultNodePath(); + path = path.add(0).add(1).add(2); + System.out.println(path.toString()); + + NodePath comparePath1 = new DefaultNodePath(); + comparePath1 = comparePath1.add(0).add(1).add(2).add(3); + + NodePath comparePath2 = new DefaultNodePath(); + comparePath2 = comparePath2.add(0).add(1); + + NodePath comparePath3 = new DefaultNodePath(); + comparePath3 = comparePath3.add(1).add(1).add(2).add(3); + + Assert.assertTrue(path.compare(comparePath1)); + Assert.assertFalse(path.compare(comparePath2)); + Assert.assertFalse(path.compare(comparePath3)); + } +}