changeset 176:550f51183d8a

Merge with a2598139df64efd6f649ba9a02f2b7d652bee8c1
author one
date Fri, 06 Mar 2015 10:59:34 +0900
parents e26462a38ce0 (current diff) a2598139df64 (diff)
children 75422f82e6b6
files src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/ReplaceRootNodeOperation.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/replaceRootNodeAt.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/nodeeditor/ReplaceRootNodeAt.java
diffstat 4 files changed, 116 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/ReplaceRootNodeOperation.java	Fri Mar 06 10:59:34 2015 +0900
@@ -0,0 +1,37 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations;
+
+import java.nio.ByteBuffer;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
+public class ReplaceRootNodeOperation implements NodeOperation {
+
+  @Override
+  public Command getCommand() {
+    return Command.REPLACE_ROOT;
+  }
+
+  @Override
+  public Either<Error, TreeNode> invoke(TreeNode target) {
+    return  target.appendRootNode();
+  }
+
+  @Override
+  public int getPosition() {
+    return -1;
+  }
+
+  @Override
+  public String getKey() {
+    return null;
+  }
+
+  @Override
+  public ByteBuffer getValue() {
+    return null;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/replaceRootNodeAt.java	Fri Mar 06 10:59:34 2015 +0900
@@ -0,0 +1,40 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
+public class replaceRootNodeAt implements NodeEditor {
+
+  
+  public Either<Error, LoggingNode> _edit(LoggingNode _e) 
+  {
+    Either<Error,LoggingNode> either = _e.replaceNewRootNode();
+    if(either.isA()){
+      // error
+      return either;
+    }
+    return DefaultEither.newB(either.b());
+  }
+  
+  
+  @Override
+  public Either<Error, LoggingNode> edit(TreeNode _e) {
+    LoggingNode logNode = wrap(_e);
+    return _edit(logNode);
+  }
+
+  public LoggingNode wrap(TreeNode node) {
+    return new LoggingNode(node);
+  }
+
+ 
+  @Override
+  public LoggingNode wrap(TreeNode node, OperationLog op) {
+    return new LoggingNode(node, op);
+  }
+
+}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java	Fri Mar 06 10:44:50 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java	Fri Mar 06 10:59:34 2015 +0900
@@ -58,7 +58,6 @@
       }
 
     };
-
     IndexManager indexManager = new IndexManager(repository.getReservation());
     InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, true);
     traverser.createIndex();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/nodeeditor/ReplaceRootNodeAt.java	Fri Mar 06 10:59:34 2015 +0900
@@ -0,0 +1,39 @@
+package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.nodeeditor;
+
+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.store.impl.DefaultTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
+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;
+
+import org.junit.Test;
+
+public class ReplaceRootNodeAt {
+
+  @Test
+  public void ReplaceRootNodeAtTest() {
+      System.out.println("start");
+    Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor(new DefaultTraverser()));
+    jungle.createNewTree("tree");
+    JungleTree tree = jungle.getTreeByName("tree");
+    JungleTreeEditor editor = tree.getTreeEditor();
+    
+    TreeNode oldRoot = tree.getRootNode();
+    Either<Error, JungleTreeEditor> either = editor.replaceNewRootNode();
+    Assert.assertTrue(either.isB());
+    JungleTreeEditor newTreeEditor = either.b();
+    Assert.assertTrue(newTreeEditor.success().isB());
+    TreeNode newRoot = tree.getRootNode();
+    Assert.assertFalse(oldRoot.equals(newRoot));
+    
+    Either<Error, TreeNode> childrenEither = newRoot.getChildren().at(0);
+    Assert.assertTrue(childrenEither.isB());
+    TreeNode newRootChildren = childrenEither.b();
+    Assert.assertEquals(oldRoot, newRootChildren);
+  }
+}