Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java @ 74:3a3622cf2eef
remove error but have a error test program
and LoggingChildren.iterator is bad
author | one |
---|---|
date | Wed, 27 Aug 2014 05:07:50 +0900 |
parents | 57e965b73c9e |
children | 0f01ee222035 |
rev | line source |
---|---|
45 | 1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle; |
2 | |
3 import java.util.Iterator; | |
4 import java.util.concurrent.ConcurrentHashMap; | |
74 | 5 |
45 | 6 import fj.data.List; |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; | |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal; | |
54 | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
74 | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; |
54 | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; |
45 | 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet; |
54 | 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
45 | 22 |
74 | 23 public class DefaultJungle<T extends TreeNode<T>> implements Jungle |
45 | 24 { |
25 private Journal journal; | |
26 private ConcurrentHashMap<String,JungleTree> trees; | |
27 private String uuid; | |
54 | 28 private TreeEditor editor; |
45 | 29 |
74 | 30 public static <T extends TreeNode<T>>void main(String _args[]) |
54 | 31 { |
74 | 32 DefaultJungle<T> j = new DefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser())); |
54 | 33 JungleTree t = j.createNewTree("fuga"); |
34 | |
35 JungleTreeEditor e1 = t.getTreeEditor(); | |
36 JungleTreeEditor e2 = t.getTreeEditor(); | |
37 | |
38 DefaultNodePath root = new DefaultNodePath(); | |
39 | |
40 Either<Error,JungleTreeEditor> either = e1.addNewChildAt(root,0); | |
41 e1 = either.b(); | |
42 either = e1.addNewChildAt(root.add(0),0); | |
43 e1 = either.b(); | |
44 e1.success(); | |
45 } | |
46 | |
47 public DefaultJungle(Journal _journal,String _uuid,TreeEditor _editor) | |
45 | 48 { |
49 journal = new NullJournal(); | |
50 trees = new ConcurrentHashMap<String,JungleTree>(); | |
51 uuid = _uuid; | |
54 | 52 editor = _editor; |
45 | 53 } |
54 | |
55 @Override | |
56 public JungleTree getTreeByName(String _name) | |
57 { | |
58 return trees.get(_name); | |
59 } | |
60 | |
61 @Override | |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
62 public JungleTree createNewTree(final String _name) |
45 | 63 { |
64 ChangeList list = new ChangeList(){ | |
65 @Override | |
54 | 66 public Iterator<TreeOperation> iterator() { |
67 List<TreeOperation> nil = List.nil(); | |
45 | 68 return nil.iterator(); |
69 } | |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
70 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
71 public String uuid() { |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
72 return uuid; |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
73 } |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
74 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
75 public String getTreeName() { |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
76 return _name; |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
77 } |
45 | 78 }; |
54 | 79 |
80 DefaultTreeNode root = new DefaultTreeNode(); | |
74 | 81 ChangeSet<T> set = new DefaultChangeSet(root,null,list,uuid,_name,0); |
54 | 82 DefaultTreeContext<DefaultTreeNode> tc = new DefaultTreeContext<DefaultTreeNode>(root,set); |
83 JungleTree newTree = new DefaultJungleTree<DefaultTreeNode>(tc,uuid,journal.getWriter(),editor); | |
46 | 84 if(trees.putIfAbsent(_name,newTree) != null){ |
85 return null; | |
86 } | |
45 | 87 return newTree; |
88 } | |
89 } |