Mercurial > hg > Members > tatsuki > bench > jungle-core
diff src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java @ 154:b8cef4b640a3
update index for commit
author | one |
---|---|
date | Wed, 26 Nov 2014 06:23:07 +0900 |
parents | 20af7f25ef32 |
children | f98f2704b154 6b4aab79910d |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java Tue Nov 25 17:52:41 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java Wed Nov 26 06:23:07 2014 +0900 @@ -10,81 +10,85 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; -public class DefaultTransactionManager implements TransactionManager -{ - private final AtomicReservableReference<TreeContext> repository; - private final TreeContext tip; - private final ChangeListWriter writer; - private final String uuid; - - public DefaultTransactionManager(ChangeListWriter _writer,TreeContext _tip, AtomicReservableReference<TreeContext> _repository,String _uuid) - { - repository = _repository; - tip = _tip; - writer = _writer; - uuid = _uuid; - } - - @Override - public Either<Error,TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log) - { - ChangeSet cs = tip.getChangeSet(); - long currentRevision = cs.revision(); - long nextRevision = currentRevision + 1; - - final String _treeName = cs.getTreeName(); - ChangeList list = new ChangeList(){ - @Override - public Iterator<TreeOperation> iterator(){ - return _log.iterator(); - } - @Override - public String getTreeName(){ - return _treeName; - } - @Override - public String uuid(){ - return uuid; - } +public class DefaultTransactionManager implements TransactionManager { + private final AtomicReservableReference<TreeContext> repository; + private final TreeContext tip; + private final ChangeListWriter writer; + private final String uuid; + + public DefaultTransactionManager(ChangeListWriter _writer, TreeContext _tip, + AtomicReservableReference<TreeContext> _repository, String _uuid) { + repository = _repository; + tip = _tip; + writer = _writer; + uuid = _uuid; + } + + @Override + public Either<Error, TransactionManager> commit(TreeNode _newRoot, final TreeOperationLog _log) { + ChangeSet cs = tip.getChangeSet(); + long currentRevision = cs.revision(); + long nextRevision = currentRevision + 1; + + final String _treeName = cs.getTreeName(); + ChangeList list = new ChangeList() { + @Override + public Iterator<TreeOperation> iterator() { + return _log.iterator(); + } + + @Override + public String getTreeName() { + return _treeName; + } + + @Override + public String uuid() { + return uuid; + } - }; - - Index nulIndex = new Index(); - ParentIndex nulParentIndex = new ParentIndex(); - DefaultChangeSet newCs = new DefaultChangeSet(_newRoot,cs,list,uuid, _treeName, nextRevision, nulIndex, nulParentIndex); - DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs); - - @SuppressWarnings("rawtypes") - Reservation reservation = repository.makeReservation(tip,newContext); - if(reservation == null){ - return DefaultEither.newA((Error)new DefaultError()); - } - Result r = writer.write(list); - if(r == Result.SUCCESS){ - reservation.confirm(); - TransactionManager txManager = new DefaultTransactionManager(writer,newContext,repository,uuid); - return DefaultEither.newB(txManager); - } - return DefaultEither.newA((Error)new DefaultError()); - } + }; + + IndexManager indexManager = new IndexManager(repository.getReservation()); + InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, true); + traverser.createIndex(); + Index nulIndex = traverser.getIndex(); + ParentIndex nulParentIndex = traverser.getParentIndex(); + DefaultChangeSet newCs = new DefaultChangeSet(_newRoot, cs, list, uuid, _treeName, nextRevision, nulIndex, + nulParentIndex); + DefaultTreeContext newContext = new DefaultTreeContext(_newRoot, newCs); - @Override - public String getUUID() - { - return uuid; - } + @SuppressWarnings("rawtypes") + Reservation reservation = repository.makeReservation(tip, newContext); + if (reservation == null) { + return DefaultEither.newA((Error) new DefaultError()); + } + Result r = writer.write(list); + if (r == Result.SUCCESS) { + reservation.confirm(); + TransactionManager txManager = new DefaultTransactionManager(writer, newContext, repository, uuid); + return DefaultEither.newB(txManager); + } + return DefaultEither.newA((Error) new DefaultError()); + } - @Override - public long getRevision() - { - ChangeSet cs = tip.getChangeSet(); - return cs.revision(); - } + @Override + public String getUUID() { + return uuid; + } + + @Override + public long getRevision() { + ChangeSet cs = tip.getChangeSet(); + return cs.revision(); + } }