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