Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DifferenceListJungleTree.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.jungle.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.DifferenceTransactionManager; 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.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 java.util.concurrent.atomic.AtomicReference; public class DifferenceListJungleTree extends DefaultJungleTree { public DifferenceListJungleTree(TreeContext tc, String uuid, ChangeListWriter writer, TreeEditor editor) { super(tc, uuid, writer, editor); } @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(); TransactionManager txManager = new DifferenceTransactionManager(writer, tc, repository, uuid); TreeNode subTreeRoot = new DifferencialTreeNode(); return new DifferenceJungleTreeEditor(subTreeRoot, txManager, treeEditor); } @Override public Either<Error, JungleTree> getOldTree(long revision) { AtomicReference<TreeContext> repository = super.getRepository(); TreeContext tc = repository.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(); } }