Mercurial > hg > Database > jungle-network
diff src/alice/jungle/persistence/PersistentJungleTree.java @ 85:e641f559559c
Added some files for persistent
author | one |
---|---|
date | Mon, 28 Oct 2013 17:21:56 +0900 |
parents | |
children | 0c98717f186e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/jungle/persistence/PersistentJungleTree.java Mon Oct 28 17:21:56 2013 +0900 @@ -0,0 +1,48 @@ +package alice.jungle.persistence; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; +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.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.TreeContext; + +public class PersistentJungleTree <T extends TreeNode<T>> implements JungleTree { + private final AtomicReservableReference<TreeContext<T>> repository; + private final String uuid; + private final String treeName; + private final PersistentChangeListWriter writer; + private final TreeEditor editor; + + public PersistentJungleTree(String _treeName, TreeContext<T> _tc,String _uuid,PersistentChangeListWriter _writer,TreeEditor _editor) + { + treeName = _treeName; + repository = new AtomicReservableReference<TreeContext<T>>(_tc); + uuid = _uuid; + writer = _writer; + editor = _editor; + } + + @Override + public JungleTreeEditor getTreeEditor() + { + TreeContext<T> tc = repository.get(); + PersistentTransactionManager<T> txManager = new PersistentTransactionManager<T>(treeName, writer,tc,repository,uuid); + T root = tc.getTreeNode(); + return new DefaultJungleTreeEditor<T>(root,txManager,editor); + } + + @Override + public Node getRootNode() + { + TreeContext<T> tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.getRoot(); + } + + +}