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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
263
tatsuki
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.jungle.tree;
tatsuki
parents:
diff changeset
2
tatsuki
parents:
diff changeset
3
tatsuki
parents:
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListWriter;
tatsuki
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.TreeContext;
266
c62462c28807 separate edit → traverse edit clone
tatsuki
parents: 265
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.DifferenceJungleTreeEditor;
263
tatsuki
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
tatsuki
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.TreeEditor;
278
f69b2a5a821d fix error for DifferenceNode
tatsuki
parents: 266
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.manager.DifferenceTransactionManager;
f69b2a5a821d fix error for DifferenceNode
tatsuki
parents: 266
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.manager.TransactionManager;
279
86d44dd80b1c add DifferenceListTree test
tatsuki
parents: 278
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Differencial.DifferencialTreeNode;
278
f69b2a5a821d fix error for DifferenceNode
tatsuki
parents: 266
diff changeset
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
2a0cb1f0ba4e rename Error package
kono
parents: 317
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
2a0cb1f0ba4e rename Error package
kono
parents: 317
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.GetOldTreeError;
263
tatsuki
parents:
diff changeset
17
tatsuki
parents:
diff changeset
18 import java.util.concurrent.atomic.AtomicReference;
tatsuki
parents:
diff changeset
19
266
c62462c28807 separate edit → traverse edit clone
tatsuki
parents: 265
diff changeset
20 public class DifferenceListJungleTree extends DefaultJungleTree {
c62462c28807 separate edit → traverse edit clone
tatsuki
parents: 265
diff changeset
21 public DifferenceListJungleTree(TreeContext tc, String uuid, ChangeListWriter writer, TreeEditor editor) {
263
tatsuki
parents:
diff changeset
22 super(tc, uuid, writer, editor);
tatsuki
parents:
diff changeset
23 }
tatsuki
parents:
diff changeset
24
tatsuki
parents:
diff changeset
25 @Override
tatsuki
parents:
diff changeset
26 public JungleTreeEditor getJungleTreeEditor() {
tatsuki
parents:
diff changeset
27 AtomicReference<TreeContext> repository = super.getRepository();
tatsuki
parents:
diff changeset
28 TreeContext tc = repository.get();
tatsuki
parents:
diff changeset
29 ChangeListWriter writer = super.getWriter();
tatsuki
parents:
diff changeset
30 String uuid = super.getUuid();
tatsuki
parents:
diff changeset
31 TreeEditor treeEditor = super.getTreeEditor();
278
f69b2a5a821d fix error for DifferenceNode
tatsuki
parents: 266
diff changeset
32 TransactionManager txManager = new DifferenceTransactionManager(writer, tc, repository, uuid);
279
86d44dd80b1c add DifferenceListTree test
tatsuki
parents: 278
diff changeset
33 TreeNode subTreeRoot = new DifferencialTreeNode();
86d44dd80b1c add DifferenceListTree test
tatsuki
parents: 278
diff changeset
34 return new DifferenceJungleTreeEditor(subTreeRoot, txManager, treeEditor);
263
tatsuki
parents:
diff changeset
35 }
tatsuki
parents:
diff changeset
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
d6b81870216b Persisitent Differential Tree implement
tatsuki
parents: 302
diff changeset
39 AtomicReference<TreeContext> repository = super.getRepository();
302
0767620e6f5f implements DifferentialInterfaceTraverser and this tests
tatsuki
parents: 279
diff changeset
40 TreeContext tc = repository.get();
263
tatsuki
parents:
diff changeset
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
d6b81870216b Persisitent Differential Tree implement
tatsuki
parents: 302
diff changeset
47 String uuid = super.getUuid();
302
0767620e6f5f implements DifferentialInterfaceTraverser and this tests
tatsuki
parents: 279
diff changeset
48 String oldTreeUuid = uuid + revision;
317
d6b81870216b Persisitent Differential Tree implement
tatsuki
parents: 302
diff changeset
49 ChangeListWriter writer = super.getWriter();
d6b81870216b Persisitent Differential Tree implement
tatsuki
parents: 302
diff changeset
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
d6b81870216b Persisitent Differential Tree implement
tatsuki
parents: 302
diff changeset
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
tatsuki
parents:
diff changeset
61 }