Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java @ 124:75ba2f2d6ea3
searchQueryTest add index
author | one |
---|---|
date | Tue, 07 Oct 2014 22:45:52 +0900 |
parents | 74723b26ad96 |
children | f81ec544a155 |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle; import fj.data.List; import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTransactionManager; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; public class DefaultJungleTree implements JungleTree { private final AtomicReservableReference<TreeContext> repository; private final String uuid; private final ChangeListWriter writer; private final TreeEditor editor; public DefaultJungleTree(TreeContext tc,String uuid,ChangeListWriter writer,TreeEditor editor) { this.repository = new AtomicReservableReference<TreeContext>(tc); this.uuid = uuid; this.writer = writer; this.editor = editor; } @Override public JungleTreeEditor getTreeEditor() { TreeContext tc = repository.get(); DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid); TreeNode root = tc.getTreeNode(); return new DefaultJungleTreeEditor(root,txManager,editor); } @Override public JungleTreeEditor getIndexTreeEditor() { TreeContext tc = repository.get(); DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid); TreeNode root = tc.getTreeNode(); TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = getIndex(); return new IndexJungleTreeEditor(root,txManager,editor,newIndex); } @Override public JungleTreeEditor getLocalTreeEditor() { return getTreeEditor(); } @Override public TreeNode getRootNode() { TreeContext tc = repository.get(); ChangeSet cs = tc.getChangeSet(); return cs.getRoot(); } @Override public InterfaceTraverser getTraverser() { TreeContext tc = repository.get(); ChangeSet cs = tc.getChangeSet(); TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index = cs.getIndex(); if (index != null) return new InterfaceTraverser(getRootNode(), index, getTreeEditor()); return new InterfaceTraverser(getRootNode(),getTreeEditor()); } @Override public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() { TreeContext tc = repository.get(); ChangeSet cs = tc.getChangeSet(); return cs.getIndex(); } }