Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java @ 100:9a7b7af838e0
add index TreeNodeEditor
but node use
author | one |
---|---|
date | Thu, 11 Sep 2014 03:10:03 +0900 |
parents | fb1dc448ac8c |
children | bed3afd5c2e2 |
rev | line source |
---|---|
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; |
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
2 |
45 | 3 import java.util.Iterator; |
4 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; | |
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; | |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; | |
54 | 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
53 | 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | |
45 | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; | |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
16 |
86 | 17 public class DefaultTransactionManager implements TransactionManager |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
18 { |
86 | 19 private final AtomicReservableReference<TreeContext> repository; |
20 private final TreeContext tip; | |
45 | 21 private final ChangeListWriter writer; |
22 private final String uuid; | |
23 | |
86 | 24 public DefaultTransactionManager(ChangeListWriter _writer,TreeContext _tip, |
25 AtomicReservableReference<TreeContext> _repository,String _uuid) | |
45 | 26 { |
27 repository = _repository; | |
54 | 28 tip = _tip; |
45 | 29 writer = _writer; |
30 uuid = _uuid; | |
31 } | |
32 | |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
33 @Override |
86 | 34 public Either<Error,TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log) |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
35 { |
81 | 36 ChangeSet cs = tip.getChangeSet(); |
54 | 37 long currentRevision = cs.revision(); |
45 | 38 long nextRevision = currentRevision + 1; |
39 | |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
40 final String _treeName = cs.getTreeName(); |
45 | 41 ChangeList list = new ChangeList(){ |
42 @Override | |
53 | 43 public Iterator<TreeOperation> iterator(){ |
45 | 44 return _log.iterator(); |
45 } | |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
46 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
47 public String getTreeName(){ |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
48 return _treeName; |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
49 } |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
50 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
51 public String uuid(){ |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
52 return uuid; |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
53 } |
45 | 54 }; |
55 | |
100 | 56 DefaultChangeSet newCs = new DefaultChangeSet(_newRoot,cs,list,uuid, _treeName, nextRevision,null); |
86 | 57 DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs); |
54 | 58 |
59 @SuppressWarnings("rawtypes") | |
60 Reservation reservation = repository.makeReservation(tip,newContext); | |
45 | 61 if(reservation == null){ |
62 return DefaultEither.newA((Error)new DefaultError()); | |
63 } | |
64 Result r = writer.write(list); | |
65 if(r == Result.SUCCESS){ | |
66 reservation.confirm(); | |
86 | 67 TransactionManager txManager = new DefaultTransactionManager(writer,newContext,repository,uuid); |
45 | 68 return DefaultEither.newB(txManager); |
69 } | |
70 return DefaultEither.newA((Error)new DefaultError()); | |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
71 } |
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
72 |
45 | 73 @Override |
74 public String getUUID() | |
75 { | |
76 return uuid; | |
77 } | |
78 | |
79 @Override | |
80 public long getRevision() | |
81 { | |
81 | 82 ChangeSet cs = tip.getChangeSet(); |
54 | 83 return cs.revision(); |
45 | 84 } |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
85 } |