Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/DefaultTreeOperationLog.java @ 177:75422f82e6b6 oldCommit
miner change
author | tatsuki |
---|---|
date | Sun, 15 Mar 2015 14:57:26 +0900 |
parents | ed890dcb673e |
children |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger; import java.util.Iterator; import com.google.common.collect.Iterables; import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; public class DefaultTreeOperationLog implements TreeOperationLog { private final Iterable<TreeOperation> list; private final int size; public DefaultTreeOperationLog() { list = List.nil(); size = 0; } public DefaultTreeOperationLog(Iterable<TreeOperation> _list,int _size) { list = _list; size = _size; } @Override public Iterator<TreeOperation> iterator() { return list.iterator(); } @Override public TreeOperationLog add(NodePath _p, NodeOperation _op) { TreeOperation op = new DefaultTreeOperation(_p,_op); List<TreeOperation> newList = List.list(op); Iterable<TreeOperation> concat = Iterables.concat(list,newList); return new DefaultTreeOperationLog(concat,size + 1); } @Override public TreeOperationLog append(TreeOperationLog _log) { int argumentLogSize = _log.length(); Iterable<TreeOperation> concat = Iterables.concat(list,_log); return new DefaultTreeOperationLog(concat,argumentLogSize + size); } @Override public int length() { return size; } }