Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java @ 164:b81df9373a31 untilIndex
miner change
author | one |
---|---|
date | Mon, 08 Dec 2014 12:21:51 +0900 |
parents | 7c4fc8732eb4 |
children |
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 |
161 | 3 import java.io.BufferedWriter; |
4 import java.io.File; | |
5 import java.io.FileWriter; | |
6 import java.io.IOException; | |
7 import java.io.PrintWriter; | |
45 | 8 import java.util.Iterator; |
164 | 9 import java.util.TreeMap; |
103 | 10 |
164 | 11 import fj.data.List; |
45 | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; | |
54 | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
53 | 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | |
45 | 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation; |
154 | 20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; |
45 | 21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; |
22 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
|
23 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
|
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
151 | 25 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; |
154 | 26 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; |
149 | 27 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
28 |
154 | 29 public class DefaultTransactionManager implements TransactionManager { |
30 private final AtomicReservableReference<TreeContext> repository; | |
31 private final TreeContext tip; | |
32 private final ChangeListWriter writer; | |
33 private final String uuid; | |
34 | |
35 public DefaultTransactionManager(ChangeListWriter _writer, TreeContext _tip, | |
36 AtomicReservableReference<TreeContext> _repository, String _uuid) { | |
37 repository = _repository; | |
38 tip = _tip; | |
39 writer = _writer; | |
40 uuid = _uuid; | |
41 } | |
42 | |
43 @Override | |
44 public Either<Error, TransactionManager> commit(TreeNode _newRoot, final TreeOperationLog _log) { | |
45 ChangeSet cs = tip.getChangeSet(); | |
46 long currentRevision = cs.revision(); | |
47 long nextRevision = currentRevision + 1; | |
48 | |
49 final String _treeName = cs.getTreeName(); | |
50 ChangeList list = new ChangeList() { | |
51 @Override | |
52 public Iterator<TreeOperation> iterator() { | |
53 return _log.iterator(); | |
54 } | |
55 | |
56 @Override | |
57 public String getTreeName() { | |
58 return _treeName; | |
59 } | |
60 | |
61 @Override | |
62 public String uuid() { | |
63 return uuid; | |
64 } | |
135 | 65 |
154 | 66 }; |
67 | |
68 IndexManager indexManager = new IndexManager(repository.getReservation()); | |
69 InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, true); | |
157 | 70 long t1 = System.currentTimeMillis(); |
154 | 71 traverser.createIndex(); |
157 | 72 long t2 = System.currentTimeMillis(); |
73 System.out.println("createIndexTime =" + (t2 - t1)); | |
74 | |
161 | 75 |
76 File file = new File("./time/createParentIndexUntil"); | |
77 try { | |
78 PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file,true))); | |
79 pw.println(t2 - t1); | |
80 pw.close(); | |
81 } catch (IOException e) { | |
82 // TODO Auto-generated catch block | |
83 e.printStackTrace(); | |
84 } | |
85 | |
164 | 86 TreeMap<String, TreeMap<String, List<TreeNode>>> indexList = traverser.getIndex().getIndex(); |
87 TreeMap<TreeNode, TreeNode> parentIndex = traverser.getParentIndex().getParentIndex(); | |
88 DefaultChangeSet newCs = new DefaultChangeSet(_newRoot, cs, list, uuid, _treeName, nextRevision, indexList,parentIndex); | |
154 | 89 DefaultTreeContext newContext = new DefaultTreeContext(_newRoot, newCs); |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
90 |
154 | 91 @SuppressWarnings("rawtypes") |
92 Reservation reservation = repository.makeReservation(tip, newContext); | |
93 if (reservation == null) { | |
94 return DefaultEither.newA((Error) new DefaultError()); | |
95 } | |
96 Result r = writer.write(list); | |
97 if (r == Result.SUCCESS) { | |
98 reservation.confirm(); | |
99 TransactionManager txManager = new DefaultTransactionManager(writer, newContext, repository, uuid); | |
100 return DefaultEither.newB(txManager); | |
101 } | |
102 return DefaultEither.newA((Error) new DefaultError()); | |
103 } | |
45 | 104 |
154 | 105 @Override |
106 public String getUUID() { | |
107 return uuid; | |
108 } | |
109 | |
110 @Override | |
111 public long getRevision() { | |
112 ChangeSet cs = tip.getChangeSet(); | |
113 return cs.revision(); | |
114 } | |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
115 } |