Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java @ 148:a2c374a2686b
Merge with 0854f9a9e81db5db639f02a126ebabf1d004b98e
author | one |
---|---|
date | Fri, 21 Nov 2014 12:49:28 +0900 |
parents | 371b6ddb78f2 afbe19c98f53 |
children | 8a0aa8fc137c |
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; | |
145 | 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.IndexTreeEditor; |
100 | 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; |
54 | 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; |
45 | 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet; |
54 | 20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
145 | 23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser; |
54 | 24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
145 | 26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.TreeMapOrd; |
45 | 27 |
28 public class DefaultJungle implements Jungle | |
29 { | |
30 private Journal journal; | |
31 private ConcurrentHashMap<String,JungleTree> trees; | |
32 private String uuid; | |
54 | 33 private TreeEditor editor; |
145 | 34 private Traverser traverser; |
104 | 35 public static void main(String args[]) |
54 | 36 { |
145 | 37 DefaultJungle j = new DefaultJungle(null,"hoge",new DefaultTraverser()); |
54 | 38 JungleTree t = j.createNewTree("fuga"); |
39 | |
40 JungleTreeEditor e1 = t.getTreeEditor(); | |
41 | |
42 DefaultNodePath root = new DefaultNodePath(); | |
43 | |
44 Either<Error,JungleTreeEditor> either = e1.addNewChildAt(root,0); | |
45 e1 = either.b(); | |
46 either = e1.addNewChildAt(root.add(0),0); | |
47 e1 = either.b(); | |
48 e1.success(); | |
49 } | |
50 | |
145 | 51 public DefaultJungle(Journal journal,String uuid,Traverser traverser) |
45 | 52 { |
104 | 53 this.journal = new NullJournal(); |
54 this.trees = new ConcurrentHashMap<String,JungleTree>(); | |
55 this.uuid = uuid; | |
145 | 56 this.traverser = traverser; |
57 this.editor = new DefaultTreeEditor(traverser); | |
45 | 58 } |
59 | |
60 @Override | |
104 | 61 public JungleTree getTreeByName(String name) |
45 | 62 { |
104 | 63 return trees.get(name); |
45 | 64 } |
65 | |
66 @Override | |
104 | 67 public JungleTree createNewTree(final String name) |
45 | 68 { |
69 ChangeList list = new ChangeList(){ | |
70 @Override | |
54 | 71 public Iterator<TreeOperation> iterator() { |
72 List<TreeOperation> nil = List.nil(); | |
45 | 73 return nil.iterator(); |
74 } | |
59
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 uuid() { |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
77 return uuid; |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
78 } |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
79 @Override |
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
80 public String getTreeName() { |
104 | 81 return name; |
59
57e965b73c9e
Implement getTreeName method in ChangeSet and ChangeList interface.
one
parents:
54
diff
changeset
|
82 } |
127 | 83 |
45 | 84 }; |
54 | 85 |
86 DefaultTreeNode root = new DefaultTreeNode(); | |
146 | 87 TreeMap<String, TreeMap<String, List<TreeNode>>> index = TreeMap.empty(Ord.stringOrd); |
145 | 88 TreeMap<TreeNode,TreeNode> parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd); |
89 ChangeSet set = new DefaultChangeSet(root,null,list,uuid,name,0,index,parentIndex); | |
86 | 90 DefaultTreeContext tc = new DefaultTreeContext(root,set); |
145 | 91 JungleTree newTree = new DefaultJungleTree(tc,uuid,journal.getWriter(),editor,new IndexTreeEditor(traverser)); |
104 | 92 if(trees.putIfAbsent(name,newTree) != null){ |
46 | 93 return null; |
94 } | |
45 | 95 return newTree; |
96 } | |
97 } |