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) {