view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java @ 117:74723b26ad96

add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
author one
date Tue, 30 Sep 2014 13:15:22 +0900
parents 5df5505e1c1e
children 6e9a8d26e0cf
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;

import java.nio.ByteBuffer;

import fj.data.List;
import fj.data.TreeMap;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
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.operations.DeleteChildAtOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
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.shoshi.jungle.util.Pair;

public class PutAttribute implements NodeEditor
{
	private final String key;
	private final ByteBuffer value;
	
	public PutAttribute(String _key,ByteBuffer _value)
	{
		key = _key;
		value = _value;
	}

	public Either<Error,LoggingNode> _edit(LoggingNode _e)
	{
		Either<Error,LoggingNode> either = _e.getAttributes().put(key,value);
		if(either.isA()){
			// error
			return either;
		}
		return DefaultEither.newB(either.b());
	}

	@Override
	public Either<Error, LoggingNode> edit(TreeNode _e) {
		LoggingNode logNode = wrap(_e);
		return _edit(logNode);
	}

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

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

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