comparison 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
comparison
equal deleted inserted replaced
99:92d0c6e4655c 100:9a7b7af838e0
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle; 1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
2 2
3 import java.util.Iterator; 3 import java.util.Iterator;
4 import java.util.concurrent.ConcurrentHashMap; 4 import java.util.concurrent.ConcurrentHashMap;
5 5
6 import fj.Ord;
6 import fj.data.List; 7 import fj.data.List;
8 import fj.data.TreeMap;
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal; 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal; 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; 14 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; 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet; 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet;
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; 20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; 21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
21 25
22 public class DefaultJungle implements Jungle 26 public class DefaultJungle implements Jungle
23 { 27 {
24 private Journal journal; 28 private Journal journal;
25 private ConcurrentHashMap<String,JungleTree> trees; 29 private ConcurrentHashMap<String,JungleTree> trees;
75 return _name; 79 return _name;
76 } 80 }
77 }; 81 };
78 82
79 DefaultTreeNode root = new DefaultTreeNode(); 83 DefaultTreeNode root = new DefaultTreeNode();
80 ChangeSet set = new DefaultChangeSet(root,null,list,uuid,_name,0); 84 ChangeSet set = new DefaultChangeSet(root,null,list,uuid,_name,0,null);
81 DefaultTreeContext tc = new DefaultTreeContext(root,set); 85 DefaultTreeContext tc = new DefaultTreeContext(root,set);
82 JungleTree newTree = new DefaultJungleTree(tc,uuid,journal.getWriter(),editor); 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));
83 if(trees.putIfAbsent(_name,newTree) != null){ 89 if(trees.putIfAbsent(_name,newTree) != null){
84 return null; 90 return null;
85 } 91 }
86 return newTree; 92 return newTree;
87 } 93 }