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