Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java @ 77:0f01ee222035
remove worning a part
author | one |
---|---|
date | Fri, 29 Aug 2014 04:44:26 +0900 |
parents | 3a3622cf2eef |
children | 715a9fbf02fc |
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 |
77 | 23 public class DefaultJungle<T extends TreeNode<T>> implements Jungle<T> |
45 | 24 { |
25 private Journal journal; | |
77 | 26 private ConcurrentHashMap<String,JungleTree<T>> trees; |
45 | 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())); |
77 | 33 JungleTree<T> t = j.createNewTree("fuga"); |
54 | 34 |
77 | 35 JungleTreeEditor<T> e1 = t.getTreeEditor(); |
36 JungleTreeEditor<T> e2 = t.getTreeEditor(); | |
54 | 37 |
38 DefaultNodePath root = new DefaultNodePath(); | |
39 | |
77 | 40 Either<Error,JungleTreeEditor<T>> either = e1.addNewChildAt(root,0); |
54 | 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(); | |
77 | 50 trees = new ConcurrentHashMap<String,JungleTree<T>>(); |
45 | 51 uuid = _uuid; |
54 | 52 editor = _editor; |
45 | 53 } |
54 | |
55 @Override | |
77 | 56 public JungleTree<T> getTreeByName(String _name) |
45 | 57 { |
58 return trees.get(_name); | |
59 } | |
60 | |
61 @Override | |
77 | 62 public JungleTree<T> 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 } |