Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java @ 143:afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
bag
author | one |
---|---|
date | Sat, 15 Nov 2014 17:48:07 +0900 |
parents | ef183969bf31 |
children | a2c374a2686b |
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; |
110 | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; |
54 | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
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; | |
45 | 24 |
25 public class DefaultJungle implements Jungle | |
26 { | |
27 private Journal journal; | |
28 private ConcurrentHashMap<String,JungleTree> trees; | |
29 private String uuid; | |
54 | 30 private TreeEditor editor; |
45 | 31 |
104 | 32 public static void main(String args[]) |
54 | 33 { |
34 DefaultJungle j = new DefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser())); | |
35 JungleTree t = j.createNewTree("fuga"); | |
36 | |
37 JungleTreeEditor e1 = t.getTreeEditor(); | |
38 | |
39 DefaultNodePath root = new DefaultNodePath(); | |
40 | |
41 Either<Error,JungleTreeEditor> either = e1.addNewChildAt(root,0); | |
42 e1 = either.b(); | |
43 either = e1.addNewChildAt(root.add(0),0); | |
44 e1 = either.b(); | |
45 e1.success(); | |
46 } | |
47 | |
104 | 48 public DefaultJungle(Journal journal,String uuid,TreeEditor editor) |
45 | 49 { |
104 | 50 this.journal = new NullJournal(); |
51 this.trees = new ConcurrentHashMap<String,JungleTree>(); | |
52 this.uuid = uuid; | |
53 this.editor = editor; | |
45 | 54 } |
55 | |
56 @Override | |
104 | 57 public JungleTree getTreeByName(String name) |
45 | 58 { |
104 | 59 return trees.get(name); |
45 | 60 } |
61 | |
62 @Override | |
104 | 63 public JungleTree createNewTree(final String name) |
45 | 64 { |
65 ChangeList list = new ChangeList(){ | |
66 @Override | |
54 | 67 public Iterator<TreeOperation> iterator() { |
68 List<TreeOperation> nil = List.nil(); | |
45 | 69 return nil.iterator(); |
70 } | |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
71 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
72 public String uuid() { |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
73 return uuid; |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
74 } |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
75 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
76 public String getTreeName() { |
104 | 77 return name; |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
78 } |
127 | 79 |
45 | 80 }; |
54 | 81 |
82 DefaultTreeNode root = new DefaultTreeNode(); | |
143
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
142
diff
changeset
|
83 TreeMap<String, TreeMap<String, List<NodePath>>> index = TreeMap.empty(Ord.stringOrd); |
104 | 84 ChangeSet set = new DefaultChangeSet(root,null,list,uuid,name,0,index); |
86 | 85 DefaultTreeContext tc = new DefaultTreeContext(root,set); |
104 | 86 JungleTree newTree = new DefaultJungleTree(tc,uuid,journal.getWriter(),editor); |
87 if(trees.putIfAbsent(name,newTree) != null){ | |
46 | 88 return null; |
89 } | |
45 | 90 return newTree; |
91 } | |
92 } |