Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/persistent/tree/PersistentDifferentialJungleTree.java @ 329:2a0cb1f0ba4e
rename Error package
author | kono |
---|---|
date | Sat, 08 Jul 2017 21:05:55 +0900 |
parents | d6b81870216b |
children |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.tree; import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListWriter; import jp.ac.u_ryukyu.ie.cr.jungle.store.TreeContext; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.DifferenceJungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.TreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.manager.TransactionManager; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Differencial.DifferencialTreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.tree.DifferenceListJungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error; import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.GetOldTreeError; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.TransactionManager.PersistentDifferenceTransactionManager; import java.util.concurrent.atomic.AtomicReference; public class PersistentDifferentialJungleTree extends PersistentJungleTree { public PersistentDifferentialJungleTree(String treeName, TreeContext tc, String uuid, ChangeListWriter writer, TreeEditor editor, int bufferSize) { super(treeName, tc, uuid, writer,editor,bufferSize); } @Override public JungleTreeEditor getJungleTreeEditor() { AtomicReference<TreeContext> repository = super.getRepository(); TreeContext tc = repository.get(); ChangeListWriter writer = super.getWriter(); String uuid = super.getUuid(); TreeEditor treeEditor = super.getTreeEditor(); int bufferSize = super.getBufferSize(); TransactionManager txManager = new PersistentDifferenceTransactionManager(writer, tc, repository, uuid,bufferSize); TreeNode subTreeRoot = new DifferencialTreeNode(); return new DifferenceJungleTreeEditor(subTreeRoot, txManager, treeEditor); } @Override public Either<Error, JungleTree> getOldTree(long revision) { TreeContext tc = super.getRepository().get(); for (; tc.revision() != revision; ) { tc = tc.prev(); if (tc == null) return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND); } String uuid = super.getUuid(); String oldTreeUuid = uuid + revision; ChangeListWriter writer = super.getWriter(); TreeEditor treeEditor = super.getTreeEditor(); JungleTree oldTree = new DifferenceListJungleTree(tc, oldTreeUuid, writer, treeEditor); return DefaultEither.newB(oldTree); } //test用 method キャストして使ってね public TreeNode getEndNode(){ AtomicReference<TreeContext> repository = super.getRepository(); TreeContext tc = repository.get(); return tc.getEndNode(); } }