Mercurial > hg > Members > nobuyasu > jungle-network
comparison src/main/java/alice/jungle/persistent/PersistentTransactionManager.java @ 191:5d0734fd859d
fix error
author | tatsuki |
---|---|
date | Thu, 15 Jan 2015 09:23:23 +0900 |
parents | 4493dd7692ce |
children | 89c15aa2bc6d |
comparison
equal
deleted
inserted
replaced
190:269bada9eedc | 191:5d0734fd859d |
---|---|
1 package alice.jungle.persistent; | 1 package alice.jungle.persistent; |
2 | 2 |
3 import fj.data.List; | 3 |
4 import fj.data.TreeMap; | |
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; | 4 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; | 5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; | 6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; | 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager; | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation; | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; | 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; | 19 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; |
20 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; | |
21 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; | |
21 | 22 |
22 public class PersistentTransactionManager implements TransactionManager { | 23 public class PersistentTransactionManager implements TransactionManager { |
23 private final AtomicReservableReference<TreeContext> repository; | 24 private final AtomicReservableReference<TreeContext> repository; |
24 private final TreeContext tip; | 25 private final TreeContext tip; |
25 private final ChangeListWriter writer; | 26 private final ChangeListWriter writer; |
35 uuid = _uuid; | 36 uuid = _uuid; |
36 treeName = _treeName; | 37 treeName = _treeName; |
37 } | 38 } |
38 | 39 |
39 @Override | 40 @Override |
40 public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index) { | 41 public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log) { |
41 ChangeSet cs = tip.getChangeSet(); | 42 ChangeSet cs = tip.getChangeSet(); |
42 long currentRevision = cs.revision(); | 43 long currentRevision = cs.revision(); |
43 long nextRevision = currentRevision + 1; | 44 long nextRevision = currentRevision + 1; |
44 | 45 |
45 PersistentChangeList list = new PersistentChangeList(uuid, treeName, _log); | 46 PersistentChangeList list = new PersistentChangeList(uuid, treeName, _log); |
46 TreeNode root = _newRoot; | 47 IndexManager indexManager = new IndexManager(repository.getReservation()); |
47 PersistentChangeSet newCs = new PersistentChangeSet(root, cs, list, uuid, treeName, nextRevision); | 48 InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, false); |
49 traverser.createIndex(); | |
50 Index index = traverser.getIndex(); | |
51 ParentIndex parentIndex = traverser.getParentIndex(); | |
52 PersistentChangeSet newCs = new PersistentChangeSet(_newRoot, cs, list, uuid, treeName, nextRevision, index.getIndex(), parentIndex.getParentIndex()); | |
48 DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs); | 53 DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs); |
49 | 54 |
50 @SuppressWarnings("rawtypes") | 55 @SuppressWarnings("rawtypes") |
51 Reservation reservation = repository.makeReservation(tip, newContext); | 56 Reservation reservation = repository.makeReservation(tip, newContext); |
52 if(reservation == null) { | 57 if(reservation == null) { |