Mercurial > hg > Members > tatsuki > bench > jungle-core
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 |