Mercurial > hg > Members > shoshi > jungle > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DifferenceListJungleTree.java @ 329:2a0cb1f0ba4e
rename Error package
author | kono |
---|---|
date | Sat, 08 Jul 2017 21:05:55 +0900 |
parents | d6b81870216b |
children |
rev | line source |
---|---|
263 | 1 package jp.ac.u_ryukyu.ie.cr.jungle.tree; |
2 | |
3 | |
4 import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListWriter; | |
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.TreeContext; | |
266 | 6 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.DifferenceJungleTreeEditor; |
263 | 7 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; |
8 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.TreeEditor; | |
278 | 9 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.manager.DifferenceTransactionManager; |
10 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.manager.TransactionManager; | |
279 | 11 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Differencial.DifferencialTreeNode; |
278 | 12 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
13 import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither; |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
14 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; |
329 | 15 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error; |
16 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.GetOldTreeError; | |
263 | 17 |
18 import java.util.concurrent.atomic.AtomicReference; | |
19 | |
266 | 20 public class DifferenceListJungleTree extends DefaultJungleTree { |
21 public DifferenceListJungleTree(TreeContext tc, String uuid, ChangeListWriter writer, TreeEditor editor) { | |
263 | 22 super(tc, uuid, writer, editor); |
23 } | |
24 | |
25 @Override | |
26 public JungleTreeEditor getJungleTreeEditor() { | |
27 AtomicReference<TreeContext> repository = super.getRepository(); | |
28 TreeContext tc = repository.get(); | |
29 ChangeListWriter writer = super.getWriter(); | |
30 String uuid = super.getUuid(); | |
31 TreeEditor treeEditor = super.getTreeEditor(); | |
278 | 32 TransactionManager txManager = new DifferenceTransactionManager(writer, tc, repository, uuid); |
279 | 33 TreeNode subTreeRoot = new DifferencialTreeNode(); |
34 return new DifferenceJungleTreeEditor(subTreeRoot, txManager, treeEditor); | |
263 | 35 } |
36 | |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
37 @Override |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
38 public Either<Error, JungleTree> getOldTree(long revision) { |
317 | 39 AtomicReference<TreeContext> repository = super.getRepository(); |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
40 TreeContext tc = repository.get(); |
263 | 41 |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
42 for (; tc.revision() != revision; ) { |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
43 tc = tc.prev(); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
44 if (tc == null) |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
45 return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
46 } |
317 | 47 String uuid = super.getUuid(); |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
48 String oldTreeUuid = uuid + revision; |
317 | 49 ChangeListWriter writer = super.getWriter(); |
50 TreeEditor treeEditor = super.getTreeEditor(); | |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
51 JungleTree oldTree = new DifferenceListJungleTree(tc, oldTreeUuid, writer, treeEditor); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
52 return DefaultEither.newB(oldTree); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
53 } |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
54 |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
55 //test用 method キャストして使ってね |
317 | 56 public TreeNode getEndNode() { |
302
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
57 AtomicReference<TreeContext> repository = super.getRepository(); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
58 TreeContext tc = repository.get(); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
59 return tc.getEndNode(); |
0767620e6f5f
implements DifferentialInterfaceTraverser and this tests
tatsuki
parents:
279
diff
changeset
|
60 } |
263 | 61 } |