view src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java @ 180:2828205bdc3a

fit JungleCore
author tatsuki
date Sat, 13 Sep 2014 12:54:02 +0900
parents d6944d788121
children 4493dd7692ce
line wrap: on
line source

package alice.jungle.datasegment.transformer;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
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.Logging;

import org.msgpack.annotation.Message;

import fj.data.List;
import fj.data.TreeMap;


/*
 * This code same AppendChildAt. 
 */

@Message
public class NetworkAppendChildAt implements NodeEditor {

	private final int pos;
	
	public NetworkAppendChildAt(int _pos) {
		pos = _pos;
	}

	public Either<Error, Logging> _edit(Logging _e) 
	{
		Either<Error,Logging> either = _e.getChildren().addNewChildAt(pos);
		if(either.isA()){
			// error
			return either;
		}
		return DefaultEither.newB(either.b());
	}
	
	@Override
	public Either<Error, Logging> edit(TreeNode _e) {
		Logging logNode = wrap(_e);
		return _edit(logNode);
	}

	public Logging wrap(TreeNode node) {
		return new LoggingNode(node);
	}

	@Override
	public Logging wrap(TreeNode node, OperationLog op) {
		return new LoggingNode(node, op);
	}

	@Override
	public TreeMap<String,TreeMap<String, List<TreeNode>>> getIndex() {
		// TODO Auto-generated method stub
		return null;
	}

}