comparison src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java @ 100:9a7b7af838e0

add index TreeNodeEditor but node use
author one
date Thu, 11 Sep 2014 03:10:03 +0900
parents ef68358ed0e8
children c297f0015d9e
comparison
equal deleted inserted replaced
99:92d0c6e4655c 100:9a7b7af838e0
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; 1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
2 2
3 import java.nio.ByteBuffer; 3 import java.nio.ByteBuffer;
4 4
5 import fj.data.TreeMap;
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; 6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog; 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute; 21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute;
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; 22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; 25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
25 27
26 public class DefaultJungleTreeEditor implements JungleTreeEditor 28 public class DefaultJungleTreeEditor implements JungleTreeEditor
27 { 29 {
28 private final TransactionManager txManager; 30 private final TransactionManager txManager;
29 private final TreeNode root; 31 private final TreeNode root;
30 private final TreeEditor editor; 32 private final TreeEditor editor;
31 private final TreeOperationLog log; 33 private final TreeOperationLog log;
32 34 private Pair<TreeMap<String,TreeNode>,TreeMap<String,String>> index;
33 public DefaultJungleTreeEditor(TreeNode _root,TransactionManager _txManager,TreeEditor _editor) 35
36 public DefaultJungleTreeEditor(TreeNode _root,TransactionManager _txManager,TreeEditor _editor, Pair<TreeMap<String,TreeNode>,TreeMap<String,String>> index)
34 { 37 {
35 this(_root,_txManager,_editor,new DefaultTreeOperationLog()); 38 this(_root,_txManager,_editor,new DefaultTreeOperationLog(), index);
36 } 39 }
37 40
38 public DefaultJungleTreeEditor(TreeNode newNode,TransactionManager _txManager,TreeEditor _editor,TreeOperationLog _log) 41 public DefaultJungleTreeEditor(TreeNode newNode,TransactionManager _txManager,TreeEditor _editor,TreeOperationLog _log, Pair<TreeMap<String,TreeNode>,TreeMap<String,String>> index)
39 { 42 {
40 root = newNode; 43 this.root = newNode;
41 txManager = _txManager; 44 this.txManager = _txManager;
42 editor = _editor; 45 this.editor = _editor;
43 log = _log; 46 this.log = _log;
47 this.index = index;
44 } 48 }
45 49
46 private Either<Error,JungleTreeEditor> _edit(final NodePath _path,NodeEditor _e) 50 private Either<Error,JungleTreeEditor> _edit(final NodePath _path,NodeEditor _e)
47 { 51 {
48 //LoggingNodeHook hook = new LoggingNodeHook(_e); 52 //LoggingNodeHook hook = new LoggingNodeHook(_e);
64 68
65 Iterable<TreeOperation> iterable = new IterableConverter<TreeOperation,NodeOperation>(newLog,converter); 69 Iterable<TreeOperation> iterable = new IterableConverter<TreeOperation,NodeOperation>(newLog,converter);
66 DefaultTreeOperationLog treeOperationLog = new DefaultTreeOperationLog(iterable,newLog.length()); 70 DefaultTreeOperationLog treeOperationLog = new DefaultTreeOperationLog(iterable,newLog.length());
67 TreeOperationLog newTreeOpLog = log.append(treeOperationLog); 71 TreeOperationLog newTreeOpLog = log.append(treeOperationLog);
68 72
69 JungleTreeEditor newEditor = new DefaultJungleTreeEditor(newNode,txManager,editor,newTreeOpLog); 73 JungleTreeEditor newEditor = new DefaultJungleTreeEditor(newNode,txManager,editor,newTreeOpLog, index);
70 return DefaultEither.newB(newEditor); 74 return DefaultEither.newB(newEditor);
71 } 75 }
72 76
73 @Override 77 @Override
74 public Either<Error,JungleTreeEditor> addNewChildAt(NodePath _path, int _pos) 78 public Either<Error,JungleTreeEditor> addNewChildAt(NodePath _path, int _pos)
111 if(either.isA()){ 115 if(either.isA()){
112 return DefaultEither.newA(either.a()); 116 return DefaultEither.newA(either.a());
113 } 117 }
114 118
115 TransactionManager newTxManager = either.b(); 119 TransactionManager newTxManager = either.b();
116 JungleTreeEditor newTreeEditor = new DefaultJungleTreeEditor(root,newTxManager,editor); 120 JungleTreeEditor newTreeEditor = new DefaultJungleTreeEditor(root,newTxManager,editor, index);
117 121
118 return DefaultEither.newB(newTreeEditor); 122 return DefaultEither.newB(newTreeEditor);
119 } 123 }
120 124
121 @Override 125 @Override